關(guān)鍵詞:YOLOv5;圖像識別;Kmeans++;Focal-EIoU;SPPCSPS;置換注意力機(jī)制
中圖分類號:TP391 文獻(xiàn)標(biāo)志碼:A
0 引言(Introduction)
微生物學(xué)當(dāng)前面臨重大挑戰(zhàn),其中細(xì)菌感染對人類健康構(gòu)成了嚴(yán)重威脅。在臨床實(shí)踐中,從樣本中進(jìn)行細(xì)菌培養(yǎng)是關(guān)鍵步驟之一。在醫(yī)療環(huán)境中,檢測人員不可避免地會使用細(xì)菌培養(yǎng)技術(shù),并依據(jù)培養(yǎng)出的菌落總數(shù)評估食品和環(huán)境的細(xì)菌污染程度[1]。然而,傳統(tǒng)的人工計(jì)數(shù)方法效率低、精度有限,無法滿足實(shí)驗(yàn)人員的實(shí)際需求。因此,開發(fā)一種高效、高精度的菌落計(jì)數(shù)方法,成為生物行業(yè)亟待解決的重要問題。
為解決傳統(tǒng)菌落計(jì)數(shù)方法存在的效率低、精度有限的問題,本文提出了一種基于改進(jìn)YOLOv5模型的菌落計(jì)數(shù)算法。該算法通過Kmeans++[2]聚類算法優(yōu)化初始錨框的大小;添加了小目標(biāo)檢測層,以更好地檢測小目標(biāo);采用Focal-EIoU損失函數(shù),有效解決了縱橫比模糊的問題;引入SPPCSPC池化層,提高了計(jì)算效率和特征表達(dá)能力;增加了ShuffleAttention[3]注意力機(jī)制,增強(qiáng)了特征表達(dá)能力。
1 相關(guān)研究(Related research)
隨著計(jì)算機(jī)科學(xué)技術(shù)的高速發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測算法日益受到關(guān)注。目標(biāo)檢測算法是一種用于定位圖像中對象實(shí)例的計(jì)算機(jī)視覺技術(shù),通常利用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)進(jìn)行定位識別。基于深度學(xué)習(xí)的目標(biāo)檢測算法可以分為兩類。一類為兩階段(Two-Stage)網(wǎng)絡(luò)目標(biāo)檢測算法,如R-CNN[4]、SPP-Net[5]、Fast-RCNN[6]、Mask R-CNN[7]等算法。這類目標(biāo)檢測算法的初始階段用于提取對象區(qū)域,第二階段用于分類并進(jìn)一步細(xì)化對象定位。兩階段網(wǎng)絡(luò)目標(biāo)檢測算法可以實(shí)現(xiàn)高精度的物體檢測,但是其資源消耗較大且計(jì)算速度較慢。為此,研究者提出了另一種單階段(One-Stage)網(wǎng)絡(luò)目標(biāo)檢測算法,如SSD[8]、RetinaNet[9]、FoveaBox[10]、YOLO[11]等算法。這類目標(biāo)檢測算法通過使用錨框?qū)φ麄€圖像的區(qū)域進(jìn)行網(wǎng)絡(luò)預(yù)測,并對預(yù)測結(jié)果進(jìn)行解碼以生成對象的最終邊界框。然而,相較于兩階段網(wǎng)絡(luò)目標(biāo)檢測算法,單階段網(wǎng)絡(luò)目標(biāo)檢測算法計(jì)算速度快,但是其精度比一階網(wǎng)絡(luò)目標(biāo)檢測算法效果差。因此,本文的研究目標(biāo)是在提高檢測速度的同時,進(jìn)一步提升檢測的精度。
2 YOLOv5目標(biāo)檢測模型(YOLOv5 object detectionmodel)
YOLOv5[12]模型是一種基于深度學(xué)習(xí)的目標(biāo)檢測算法。如圖1所示,YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)分為3個部分:骨干網(wǎng)絡(luò)(Backbone)、頸部網(wǎng)絡(luò)(Neck)、頭部網(wǎng)絡(luò)(Head)。
YOLOv5的Backbone模塊是基于CSPDarknet53構(gòu)建的,該結(jié)構(gòu)采用跨階段部分連接的結(jié)構(gòu)加速模型訓(xùn)練速度,并在保持精度的情況下降低模型復(fù)雜度。CSPDarknet53將一個大的卷積層分成兩個較小的卷積層,這種分割策略不僅可以減少計(jì)算量,還可以提高模型的非線性表達(dá)能力。此外,CSPDarknet53使用了殘差連接和密集連接技術(shù),進(jìn)一步強(qiáng)化了特征的傳遞和重用。
YOLOv5的Neck 模塊采用特征金字塔網(wǎng)絡(luò)(FeaturePyramid Network,F(xiàn)PN[13])結(jié)構(gòu),該結(jié)構(gòu)旨在提升檢測性能,尤其在小目標(biāo)檢測和遠(yuǎn)距離目標(biāo)檢測方面表現(xiàn)出色。FPN是一種多尺度特征融合技術(shù),可以將來自不同深度的特征圖進(jìn)行融合,從而生成具有不同分辨率的特征金字塔。這種金字塔結(jié)構(gòu)可以更好地適應(yīng)不同尺度的目標(biāo),同時提高目標(biāo)檢測的準(zhǔn)確性。
YOLOv5的Head模塊是用于生成目標(biāo)檢測的邊界框和類別預(yù)測的關(guān)鍵部分,它負(fù)責(zé)將特征金字塔網(wǎng)絡(luò)提取的特征轉(zhuǎn)化為目標(biāo)檢測的結(jié)果。YOLOv5的預(yù)測頭由多個卷積層組成,這些卷積層旨在對特征進(jìn)行進(jìn)一步的處理和壓縮,以獲得更豐富的語義信息。在預(yù)測頭的最后一層,YOLOv5使用了不同尺度的輸出層,每個輸出層都負(fù)責(zé)預(yù)測不同尺度下的目標(biāo)邊界框和類別。具體來說,YOLOv5在3個不同的尺度下生成了3組邊界框。在訓(xùn)練階段,YOLOv5會根據(jù)實(shí)際標(biāo)注的邊界框信息,通過計(jì)算損失函數(shù)優(yōu)化預(yù)測結(jié)果。通過預(yù)測頭的處理,YOLOv5可以從特征圖中提取目標(biāo)檢測所需的信息,并生成相應(yīng)的邊界框和類別預(yù)測,實(shí)現(xiàn)對圖像中目標(biāo)的準(zhǔn)確定位。
3 YOLOv5算法改進(jìn)(Improvement of YOLOv5algorithm)
YOLOv5是當(dāng)前主流的目標(biāo)檢測算法之一,在大多數(shù)應(yīng)用場景下已展現(xiàn)出其高效性。然而,在菌落計(jì)數(shù)這一特定任務(wù)中,仍面臨兩大挑戰(zhàn):一是背景干擾問題,菌落通常在培養(yǎng)皿上進(jìn)行計(jì)數(shù),部分菌落會長到培養(yǎng)皿的邊緣位置與培養(yǎng)皿混為一體,難以區(qū)分,這會導(dǎo)致在計(jì)數(shù)過程中出現(xiàn)漏算的情況;二是菌落分布在培養(yǎng)皿的各個位置,有的會發(fā)生粘黏、有的可能重疊,并且菌落大小不一,尤其是小型菌落難以準(zhǔn)確識別。針對這些問題,本文對骨干網(wǎng)絡(luò)和特征融合網(wǎng)絡(luò)進(jìn)行重新設(shè)計(jì)與調(diào)整,提出了YOLOES網(wǎng)絡(luò)模型,該模型可以有效地應(yīng)對菌落計(jì)數(shù)工作面臨的挑戰(zhàn)。YOLOES網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
3.1 用Kmeans++改進(jìn)錨框算法
YOLOv5使用Kmean算法確定錨框,但在Kmeans聚類過程中過于依賴隨機(jī)初始化的聚類中心,可能會得到局部最優(yōu)解。所以,本文采用Kmeans++算法,智能選擇初始聚類中心,使得生成的錨框能更準(zhǔn)確地匹配目標(biāo)的尺寸和比例。Kmeans++算法可以選擇具有代表性的初始聚類中心,從而更好地考慮數(shù)據(jù)集中不同的特點(diǎn),生成更準(zhǔn)確、更合理的錨框,進(jìn)而提高目標(biāo)檢測算法的性能。Kmeans++算法在聚類過程使用的公式如下:
其中:D(x)表示每個樣本與現(xiàn)有聚類中心的距離;P(x)表示每個樣本被選為聚類中心的概率;X 表示數(shù)據(jù)集的目標(biāo)框?qū)挾群透叨扔?jì)算概率,選擇下一個聚類中心,可以減少隨機(jī)性對聚類結(jié)果的影響,提高穩(wěn)定性。
3.2 添加小目標(biāo)檢測層
YOLOv5是基于骨干網(wǎng)絡(luò)Backbone模塊進(jìn)行特征的提取,通過Head模塊進(jìn)行目標(biāo)檢測。然而,對于菌落這類尺寸較小、特征信息不夠明顯的目標(biāo),網(wǎng)絡(luò)可能難以準(zhǔn)確地捕獲和區(qū)分其特征。本文則在YOLOv5原有的3個檢測層上,新增了一個160×160的微小目標(biāo)檢測層,可以更好地捕捉微小目標(biāo)的位置信息和細(xì)節(jié)特征,加強(qiáng)微小目標(biāo)定位。特征圖尺寸表如表1所示。
3.4 使用SPPCSPC池化層
YOLOv5采用SPPF快速空間金字塔池化,將輸入特征圖映射為固定長度的特征向量,這意味著無法從不同尺度的特征中獲取更詳細(xì)的信息。YOLOv5對每個區(qū)域的特征進(jìn)行統(tǒng)計(jì),并未考慮其空間位置,因此它對目標(biāo)的位置敏感性較低,在識別小目標(biāo)時,SPPF無法很好地捕捉到這些信息。
SPPCSPC模塊基于SPP模塊和CSP結(jié)構(gòu)構(gòu)建,并在SPP的基礎(chǔ)上增加了一個卷積,以增強(qiáng)特征整合的魯棒性,SPPCSPS結(jié)構(gòu)如圖3所示。該模塊首先將骨干的C3模塊提取的特征分為兩個部分:SPP和傳統(tǒng)卷積操作。SPP結(jié)構(gòu)由4個分支組成,對應(yīng)著池化核大小為1×1、5×5、9×9和13×13的池化核操作。這4種不同的池化核使得SPPCSPC結(jié)構(gòu)有4種不同視野用來感知目標(biāo),進(jìn)而可以更好地區(qū)分小型目標(biāo)和大型目標(biāo),避免圖像處理操作引起的圖像失真問題。通過Concat將SPP和傳統(tǒng)卷積操作合并在一起,以實(shí)現(xiàn)更快的速度和更高的準(zhǔn)確性。
本文將SPPF改進(jìn)為SPPCSPS,因?yàn)閿?shù)據(jù)集中含有小目標(biāo),為了保留其信息,不使Maxpool過多地重復(fù)獲得局部極大值信息,導(dǎo)致信息更加匱乏,因此本文將SPPCSP的原始卷積核大小改為1×1、3×3、5×5和7×7,以更好地保留小目標(biāo)的特征信息。
3.5 添加置換注意力機(jī)制
SA(Shuffle Attention)是一種用于卷積神經(jīng)網(wǎng)絡(luò)的注意力機(jī)制模塊,其目的是通過引入通道交換操作,增強(qiáng)特征圖中不同通道之間的交互和信息傳遞能力。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,不同通道的特征是獨(dú)立處理的,并沒有考慮到它們之間的關(guān)聯(lián)性;而SA通過將輸入特征圖按照通道數(shù)分成若干組,然后在組內(nèi)進(jìn)行通道交換,從而使得不同通道之間的信息可以進(jìn)行混合和交互。SA模塊結(jié)構(gòu)如圖4所示。
對于菌落計(jì)數(shù)任務(wù),模型需要考慮背景干擾和小目標(biāo)檢測的挑戰(zhàn)。為了增強(qiáng)小目標(biāo)的檢測能力,引入SA模塊,通過計(jì)算特征圖上不同位置之間的相似性度量,為小目標(biāo)提供更多的權(quán)重,使其在特征融合過程中起到更重要的作用。這樣,模型就能夠更集中地關(guān)注小目標(biāo)所在的區(qū)域。通過通道交換機(jī)制增強(qiáng)小目標(biāo)的特征表示能力。SA可以有效地提高小目標(biāo)的檢測和識別準(zhǔn)確性,并減少背景干擾對最終結(jié)果的影響,如公式(7)所示:
將空間注意力和通道注意力分支的輸出與通道洗牌策略相結(jié)合,模型可以充分利用圖像中的空間和通道信息,并實(shí)現(xiàn)沿通道維度的跨組信息流。
4 實(shí)驗(yàn)結(jié)果與分析(Experimental result and analysis)
4.1 實(shí)驗(yàn)數(shù)據(jù)
本文使用的數(shù)據(jù)來源于香港科技大學(xué)使用索尼IMX586拍攝的大腸桿菌菌落,其液體培養(yǎng)基采用胰蛋白酶大豆肉湯(TSB),采用平板計(jì)數(shù)瓊脂(PCA)作為固體培養(yǎng)基,0.9%無菌生理鹽水作為稀釋液。數(shù)據(jù)集包含訓(xùn)練數(shù)據(jù)集(864張圖像)和驗(yàn)證數(shù)據(jù)集(96張圖像)。
4.2 實(shí)驗(yàn)環(huán)境
本文實(shí)驗(yàn)環(huán)境為Windows 11,使用Python語言,Pytorch深度學(xué)習(xí)框架。硬件配置為CPU 13th Gen Intel(R) Core(TM) i9-13900H,內(nèi)存為32 GB,顯卡為Nvidia GeForce RTX4060,顯存為16 GB。
超參數(shù)設(shè)置為輸入分辨率為640×640,訓(xùn)練輪次數(shù)為300,批處理尺寸大小為8,初始學(xué)習(xí)率為0.01,權(quán)重衰減系數(shù)為0.005,優(yōu)化器為SGD,所有實(shí)驗(yàn)?zāi)P投及凑丈鲜鰠?shù)進(jìn)行實(shí)驗(yàn)。
4.3 實(shí)驗(yàn)評價(jià)指標(biāo)
本文使用精確率(Precision)、召回率(Recall)、平均精度均值(mAP)等指標(biāo)評價(jià)YOLOES算法的性能。Precision表示預(yù)測為真實(shí)正例樣本數(shù)占所有被預(yù)測正例樣本數(shù)的總數(shù),用來評估實(shí)驗(yàn)中正例被正確預(yù)測的概率。Recall表示預(yù)測為真實(shí)正例樣本數(shù)占實(shí)際正例樣本總數(shù)的比例,用來評估實(shí)驗(yàn)的漏檢概率。mAP是用來平衡精確率與召回率計(jì)算結(jié)果的,mAP代表了數(shù)據(jù)集中所有類別平均精度的平均值。本文以閾值為0.5的mAP(mAP@0.5)作為評價(jià)指標(biāo),即步長為0.05,IoU閾值為0.5的mAP(IoU大于0.5時的預(yù)測有效)。
4.4 超參數(shù)實(shí)驗(yàn)結(jié)果
YOLOv5模型的超參數(shù)為官方訓(xùn)練針對于Coco(microsoftCommon Objects in Context)數(shù)據(jù)集和Voc(Visual ObjectClasses)數(shù)據(jù)集,可能并不完全適用于小目標(biāo)的識別任務(wù)。所以,本文對YOLOv5的超參數(shù)anchor_t進(jìn)行了一些調(diào)整,使其能更好地識別小目標(biāo)。超參數(shù)anchor_t為anchor的閾值,用于篩選anchor。對一些小目標(biāo),需要一個比較小的anchor box進(jìn)行匹配,所以需要設(shè)置一個較小的anchor_t。表2所示是設(shè)置不同anchor_t值時,對模型精度的影響。
4.5 消融實(shí)驗(yàn)結(jié)果
為了驗(yàn)證上述改進(jìn)方法對YOLOv5模型的影響,在相同數(shù)據(jù)集下分別使用不同的改進(jìn)模塊進(jìn)行實(shí)驗(yàn),以YOLOv5作為基礎(chǔ)網(wǎng)絡(luò),最終添加所有改進(jìn)模塊的方法,消融實(shí)驗(yàn)結(jié)果如表3所示。
由表3可知,將錨框算法改進(jìn)為Kmeans++算法時,與初始YOLOv5模型相比,Precision下降了0.1百分點(diǎn),Recall提升了3.8百分點(diǎn),mAP@0.5提升了4百分點(diǎn),說明將錨框算法改進(jìn)為Kmeans++后,生成的錨框能更準(zhǔn)確地匹配到目標(biāo)。當(dāng)添加了小目標(biāo)檢測層時,相比于初始YOLOv5模型,Precision下降了2.5百分點(diǎn),Recall提升了4.7百分點(diǎn),mAP@0.5提升了2.6百分點(diǎn),添加小目標(biāo)檢測雖然導(dǎo)致精度有所下降,但是模型的召回率卻明顯提高,說明添加小目標(biāo)檢測層可以適應(yīng)小目標(biāo)尺寸問題。在將損失函數(shù)改為Focal-EIoU 后,與初始YOLOv5模型相比,Precision提升了0.7百分點(diǎn),Recall提升了5.2百分點(diǎn),mAP@0.5提升了4.5百分點(diǎn),說明改進(jìn)后的模型更關(guān)注小菌落的識別,進(jìn)而提升了模型的準(zhǔn)確性。空間金字塔池化層改為SPPCSPS后,與初始YOLOv5模型相比,Precision提升了1.1百分點(diǎn),Recall提升了1.4百分點(diǎn),mAP@0.5 提升了0.9 百分點(diǎn),說明空間金字塔池化層改為SPPCSPS后,模型通過4個不同池化核感知不同尺寸的目標(biāo),可以有效地提高對不同尺寸菌落的識別精度。添加SA注意力機(jī)制后,與初始YOLOv5模型相比,Precision提升了3.4百分點(diǎn),Recall提升了1.9百分點(diǎn),mAP@0.5提升了4.2百分點(diǎn),說明添加SA注意力機(jī)制后,模型可以有效地將圖片中的背景干擾過濾,并提高小目標(biāo)檢測的權(quán)重。將上述的全部方法添加進(jìn)YOLOv5中,與初始YOLOv5模型相比,Precision提升了17.5百分點(diǎn),Recall提升了6.3百分點(diǎn),mAP@0.5提升了17.9百分點(diǎn),證明了YOLOES在菌落計(jì)數(shù)任務(wù)中表現(xiàn)優(yōu)異。
4.6 實(shí)驗(yàn)結(jié)果對比
為了進(jìn)一步驗(yàn)證本文提出的YOLOES網(wǎng)絡(luò)結(jié)構(gòu)的效率,研究人員進(jìn)行了一系列對比實(shí)驗(yàn),將其與YOLO系列的前幾代網(wǎng)絡(luò)以及其他主流網(wǎng)絡(luò)框架進(jìn)行了全面的性能比較。實(shí)驗(yàn)結(jié)果對比如表4所示。
由表4可知,YOLOES 相較于前幾代YOLO 模型,mAP@0.5分別提升了19.8百分點(diǎn)、17.6百分點(diǎn)、17.3百分點(diǎn),與其他目標(biāo)檢測模型EfficientDet相比,mAP@0.5提升了16.1百分點(diǎn)。可見,本論文提出的模型YOLOES在菌落計(jì)數(shù)任務(wù)中比現(xiàn)有菌落計(jì)數(shù)算法有著更好的表現(xiàn)。
5 結(jié)論(Conclusion)
本文改進(jìn)了YOLOv5網(wǎng)絡(luò),提出了YOLOES模型,并將其應(yīng)用于菌落計(jì)數(shù)任務(wù)中。首先,使用Kmeans++聚類算法對錨框進(jìn)行重聚類,避免網(wǎng)絡(luò)陷入局部最優(yōu)解,從而增強(qiáng)了模型的穩(wěn)定性和魯棒性。其次,添加了小目標(biāo)檢測層并改進(jìn)了Focal-EIoU損失函數(shù),使網(wǎng)絡(luò)更加關(guān)注小目標(biāo),從而提高了小目標(biāo)的檢測精度。同時,改進(jìn)了空間金字塔模塊,并引入了SPPCSPS模塊,從不同的視野感知目標(biāo),進(jìn)一步提升了檢測精度。此外,添加了Shuffle Attention注意力機(jī)制,有效地增強(qiáng)了特征圖中不同通道之間的交互和信息傳遞能力,使得模型更加集中地關(guān)注小目標(biāo)。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的算法YOLOES在菌落計(jì)數(shù)任務(wù)上表現(xiàn)出較高的檢測精度,能夠準(zhǔn)確、高效地完成目標(biāo)檢測任務(wù)。
作者簡介:
樊翔宇(1998-),男,碩士生。研究領(lǐng)域:圖像處理與模式識別。
代琦(1979-),男 ,博士,教授。研究領(lǐng)域:醫(yī)學(xué)圖像處理,功能基因組分析。本文通信作者。