劉雙艷,葛華勇,段家輝
(東華大學(xué)信息科學(xué)與技術(shù)學(xué)院,上海 201620)
小麥麥穗數(shù)量的檢測(cè)在產(chǎn)量評(píng)估、種植密度估計(jì)和基因性狀評(píng)估等方面都有一定的應(yīng)用價(jià)值,目前在麥穗計(jì)數(shù)方面有較多相關(guān)的研究。小麥產(chǎn)量的評(píng)估一般是統(tǒng)計(jì)單位面積內(nèi)麥穗的個(gè)數(shù),通過(guò)人工計(jì)數(shù)結(jié)果較為準(zhǔn)確,但是會(huì)浪費(fèi)人力資源,并且由于沒(méi)有統(tǒng)一的計(jì)數(shù)標(biāo)準(zhǔn),結(jié)果會(huì)受主觀影響。利用數(shù)字圖像處理技術(shù)進(jìn)行計(jì)數(shù)能更加高效且節(jié)省資源,但缺點(diǎn)是精確度不夠高。
隨著人工智能的快速發(fā)展,深度學(xué)習(xí)成為當(dāng)前研究的熱點(diǎn)。將深度學(xué)習(xí)技術(shù)應(yīng)用在小麥麥穗檢測(cè)方面,選取合適的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,利用數(shù)據(jù)訓(xùn)練的模型自動(dòng)檢測(cè)麥穗,可以滿足預(yù)估小麥產(chǎn)量的要求,同時(shí)也將提高小麥麥穗計(jì)數(shù)的效率,減少人工田間的工作量,并且擁有較高的準(zhǔn)確率。基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法中,最具代表性的算法是YOLO(you only look once)[1],其高效、靈活和泛化性能好,在工業(yè)界十分受歡迎,能夠滿足麥穗檢測(cè)的基本要求。
深度學(xué)習(xí)的網(wǎng)絡(luò)模型的計(jì)算量和參數(shù)量尤為巨大,以及硬件資源的匱乏,這對(duì)檢測(cè)效果和嵌入式設(shè)備和移動(dòng)端的部署是不利的,使網(wǎng)絡(luò)模型更加輕量化是解決問(wèn)題的關(guān)鍵??紤]到一些特征圖的冗余信息可能是成功模型的重要組成部分, Han 等[2]提出了新型輕量卷積模塊Ghost Module,嘗試使用一系列線性轉(zhuǎn)換等計(jì)算量小的操作來(lái)獲取這些冗余信息,并將這些冗余的特征圖稱為Ghost,旨在獲取輕量化的模型。除了在網(wǎng)絡(luò)計(jì)算量上進(jìn)行改進(jìn),增加網(wǎng)絡(luò)精度也能達(dá)到提高網(wǎng)絡(luò)性能的效果。注意力機(jī)制結(jié)合全局信息,讓模型更關(guān)注于重要的區(qū)域,篩選當(dāng)前任務(wù)較為關(guān)鍵的信息,提高網(wǎng)絡(luò)檢測(cè)性能。Woo 等[3]提出的注意力機(jī)制模塊CBAM,將特征信息分為通道域和空間域,算法分別在兩個(gè)獨(dú)立的維度進(jìn)行學(xué)習(xí),更能識(shí)別出重要信息。陳啟超等[4]在陰影檢測(cè)技術(shù)中添加了注意力機(jī)制,在原有模型中搭建注意力機(jī)制模塊,使得檢測(cè)能力進(jìn)一步提升。高明柯等[5]在手勢(shì)識(shí)別過(guò)程中為了不丟失動(dòng)態(tài)手勢(shì)的重要信息,引進(jìn)了基于特征融合和注意力機(jī)制的手勢(shì)識(shí)別方法,通過(guò)實(shí)驗(yàn)驗(yàn)證了方法的有效性和魯棒性。
本研究以來(lái)自不同大陸的Global Wheat大規(guī)模麥穗數(shù)據(jù)集為研究對(duì)象,研究了基于改進(jìn)的YOLOv5 網(wǎng)絡(luò)的麥穗自動(dòng)檢測(cè)方法。在YOLOv5的基礎(chǔ)上進(jìn)行了如下的研究和改進(jìn):①為了減少算法的計(jì)算時(shí)間并提高檢測(cè)速度,將Leaky-ReLu代替SILU作為整個(gè)網(wǎng)絡(luò)的激活函數(shù);②在YOLOv5的基礎(chǔ)上進(jìn)行模型優(yōu)化,在每一個(gè)多尺度特稱融合之后加入CBAM 注意力網(wǎng)絡(luò),關(guān)注圖上有意義的信息和目標(biāo)的位置信息,并抑制不重要的信息,提取更豐富全面的特征;③結(jié)合GhostNet 的Ghost 模塊用于替代網(wǎng)絡(luò)中的普通卷積層,同時(shí)將Ghostbottleneck 代替Neck 中的C3 模塊,達(dá)到有效降低模型的參數(shù)量并提升算法性能的效果。
YOLOv5 網(wǎng)絡(luò)的結(jié)構(gòu)主要包括輸入端Backbone、Neck、Prediction 三部分,輸入端采用Mosaic 方法進(jìn)行數(shù)據(jù)增強(qiáng),同時(shí)具備自適應(yīng)的圖片縮放以及錨框計(jì)算等功能。待檢圖片首先由Backbone 進(jìn)行特征提取,獲取三個(gè)有效特征層,進(jìn)行下一步網(wǎng)絡(luò)的構(gòu)建。
其在CSP Darknet53[6]結(jié)構(gòu)的基礎(chǔ)上,加入簡(jiǎn)化版Bottleneck CSP 的C3 模塊,由于C3 部分只有3 個(gè)卷積,因此可以減少參數(shù)。SPPF 結(jié)構(gòu)與SPP(spatial pyramid pooling)[7]結(jié)構(gòu)作用一樣,但SPPF 結(jié)構(gòu)效率更高、速度更快。如通過(guò)不同池化核大小的最大池化進(jìn)行特征提取,提高網(wǎng)絡(luò)的感受野。在YOLOv4[8]中,SPP 是用在FPN里面的;在YOLOv5 中,SPPF 模塊被用在了主干特征提取網(wǎng)絡(luò)中,如圖1 所示。YOLOv5 整體框架如圖2所示。YOLOv5中的Neck端融合FPN(feature pyramid network)+PAN(path aggregation network)結(jié)構(gòu),特征金字塔結(jié)構(gòu)中引入了CSP結(jié)構(gòu),每個(gè)C3 模塊中都含有CSP 結(jié)構(gòu)。網(wǎng)絡(luò)的Prediction 模塊采用的損失函數(shù)為GIOU_Loss,采用YOLOv3[9]的Head 結(jié)構(gòu),對(duì)三個(gè)不同尺度進(jìn)行檢測(cè)結(jié)果的預(yù)測(cè)。
圖1 SPPF模塊
圖2 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
(1)注意力機(jī)制。注意力機(jī)制本質(zhì)上分為三種:空間注意力模型(spatial attention),通道注意力模型(channel attention)和混合注意力模型。其中,后者中最典型的機(jī)制是CBAM 混合注意機(jī)制,結(jié)合了通道和空間注意力模塊,能夠關(guān)注圖上有意義的信息和目標(biāo)的位置信息,并抑制不重要的信息,提取的特征更豐富全面。在神經(jīng)網(wǎng)絡(luò)中引入CBAM,所增加的模型參數(shù)量和開銷可忽略,但能明顯地提高檢測(cè)和分類的精度。
(2)Ghost模塊。Ghost模塊是一種新型輕量卷積模塊,Ghost 模塊可以代替卷積網(wǎng)絡(luò)中的每一個(gè)卷積層。將與原本特征圖(intrinsic)相似的特征圖稱為魅影(ghost),普通的卷積操作運(yùn)算量非常之大,被簡(jiǎn)單的操作生成的ghost 圖所代替,將使得模型更加輕量化。
改進(jìn)的YOLO 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。
圖3 改進(jìn)的YOLO網(wǎng)絡(luò)結(jié)構(gòu)
主干網(wǎng)絡(luò)對(duì)輸入圖像進(jìn)行特征提取,分別得到了128×128,256×256, 512×512 三個(gè)不同尺度的有效特征層。在512×512 大小的特征圖輸入到SPPF 模塊之后,采用CBAM 模塊對(duì)輸出進(jìn)行處理,YOLOv5 的PANet 將三個(gè)不同尺度的特征圖進(jìn)行自上而下和自下而上兩條路徑上的融合。改進(jìn)的YOLOv5 中,將融合之后的特征圖輸入CBAM 模塊,關(guān)注圖上有意義的信息和目標(biāo)的位置信息,并抑制不重要的信息,提取更豐富全面的特征。將普通卷積替換成輕量型的GhostConv,并且將Bottle neckcsp 換成了GhostBottleneck,旨在降低Neck 部分的參數(shù)計(jì)算量,使得整個(gè)模型更加地輕量化。并采用LeakyRelu函數(shù)激活,相較于SiLU激活能夠一定程度上減少計(jì)算量。
CBAM 注意力機(jī)制結(jié)合了通道和空間注意力模塊,能夠識(shí)別有用的信息并抑制大量冗余信息。本文對(duì)YOLOv5 中的FPN 結(jié)構(gòu)進(jìn)行了改進(jìn),提出在每?jī)蓚€(gè)特征進(jìn)行Concat 堆疊之后添加CBAM 注意力機(jī)制,在空間和通道兩個(gè)維度進(jìn)行Attention 操作,使網(wǎng)絡(luò)更加關(guān)注圖上有意義的信息和目標(biāo)的位置信息,并抑制不重要的信息,提取更豐富全面的特征。CBAM 模塊結(jié)構(gòu)如圖4所示。
圖4 CBAM模塊
CBAM 注意力機(jī)制先通過(guò)通道注意力模塊進(jìn)行空間的壓縮,學(xué)習(xí)圖上有用的內(nèi)容,H*W*C大小的特征圖輸入后,首先進(jìn)行了全局最大池化和局部最大池化等運(yùn)算,運(yùn)算結(jié)果輸入共享全連接層,將輸出特征圖的像素點(diǎn)進(jìn)行相加,之后由Sigmoid 函數(shù)激活,最終生成通道注意特征圖,再與輸入圖片的像素點(diǎn)進(jìn)行相乘操作,作為空間注意機(jī)制的輸入。
空間注意機(jī)制是對(duì)通道維度的壓縮。基于通道維度進(jìn)行Maxpooling 和Avgpooling,得到兩個(gè)H*W*1 的輸出,進(jìn)行Concat 之后,再進(jìn)行卷積操作,降低維度,經(jīng)過(guò)Sigmoid 函數(shù)激活,得到空間注意特征圖,再與輸入feature 進(jìn)行像素點(diǎn)的相乘操作,得到最后的特征,CBAM 注意力機(jī)制各部分的具體公式如下:
其中:σ運(yùn)算表示Sigmoid 函數(shù)激活;AvgPool、MaxPool分別表示全局池化和最大池化;?表示對(duì)應(yīng)像素點(diǎn)相乘,⊕表示對(duì)應(yīng)像素點(diǎn)相加。
原網(wǎng)絡(luò)中卷積層全部使用SiLU 激活函數(shù)推理速度較低,為了減少算法的計(jì)算時(shí)間并提高檢測(cè)速度,將LeakyReLu 代替SiLU 作為整個(gè)網(wǎng)絡(luò)的激活函數(shù)。
為了使得模型計(jì)算量更小,引入Ghost模塊替換普通卷積層,Ghost 模塊結(jié)構(gòu)如圖5 所示。在初步卷積操作中,卷積核是普通卷積層的一半,從而減少一半的計(jì)算量,稱為少量卷積,因此可得到一半通道的特征圖,次級(jí)卷積操作逐個(gè)將初級(jí)卷積輸出的特征圖進(jìn)行3*3或5*5的卷積,稱為廉價(jià)操作,得到另一半幽靈(ghost)特征圖。
圖5 GhostConv
普通卷積和Ghost卷積的計(jì)算量公式以及普通卷積和輕量卷積計(jì)算量的比值如下:
其中:h'、w'表示特征圖的高和寬,k表示卷積核大小。d表示3 或者5(3*3 或5*5 的卷積)。FLOPs1表示普通卷積的計(jì)算量,F(xiàn)LOPs2表示輕量卷積的計(jì)算量??梢钥闯觯肎hostModule 模塊,F(xiàn)LOPs一般可減少為原來(lái)的1/2。
為驗(yàn)證本文所提出的改進(jìn)YOLOv5 的性能,在Global Wheat 2020 數(shù)據(jù)集上進(jìn)行了訓(xùn)練和測(cè)試。Global Wheat 2020 麥穗來(lái)自不同國(guó)家不同地區(qū)的小麥,是目前使用最多的麥穗檢測(cè)數(shù)據(jù)集。輸入模型之前,對(duì)圖像進(jìn)行了數(shù)據(jù)增強(qiáng),如調(diào)整對(duì)比度、飽和度、亮度(包括調(diào)亮和調(diào)暗)以及水平翻轉(zhuǎn)來(lái)豐富數(shù)據(jù)集,提高泛化能力。研究中使用訓(xùn)練集900張、驗(yàn)證集747張共1647 張麥穗圖像。實(shí)驗(yàn)中9 個(gè)先驗(yàn)框的尺寸如表1所示。
表1 先驗(yàn)框大小
實(shí)驗(yàn)所用的硬件設(shè)備為NVIDIA GeForce RTX 3090,使用Python 語(yǔ)言在Torch1.10.0 +cu113 CUDA 框架下實(shí)現(xiàn)算法。輸入網(wǎng)絡(luò)的圖片分辨率大小為640×640,采用隨機(jī)梯度下降優(yōu)化器,權(quán)重衰減設(shè)置為0.0005。初始學(xué)習(xí)率是0.01,最終學(xué)習(xí)率0.1,SGD 動(dòng)量為0.937,優(yōu)化權(quán)重衰減系數(shù)是0.0005,訓(xùn)練輪次300 次,batchsize=16,前3 個(gè)epoch 進(jìn)行學(xué)習(xí)率預(yù)熱,其初始化動(dòng)量為0.8,初始bias學(xué)習(xí)率為0.1。邊界框損失系數(shù)設(shè)為0.05,分類損失系數(shù)為0.5,IoU訓(xùn)練閾值設(shè)為0.2,邊界框的長(zhǎng)寬比閾值為4.0。
表2 列出了改進(jìn)網(wǎng)絡(luò)前后的參數(shù)模型對(duì)比。網(wǎng)絡(luò)參數(shù)從701 萬(wàn)減少到了570 萬(wàn),降低了18.59 %。
表2 參數(shù)量對(duì)比
把訓(xùn)練后的網(wǎng)絡(luò)在GlobalWheat2020 測(cè)試集上進(jìn)行了檢測(cè),獲得了圖6 所示的召回率-精確度曲線。
圖6 YOLOv5s和改進(jìn)YOLO的檢測(cè)召回率-精確度曲線對(duì)比
表3進(jìn)一步將改進(jìn)前后的網(wǎng)絡(luò)特性進(jìn)行了比較。根據(jù)表3可知,改進(jìn)YOLO 算法與YOLOv5s算法相比,平均檢測(cè)精度提高了1.3 個(gè)百分點(diǎn);在相同數(shù)據(jù)集的情況下,改進(jìn)YOLO 算法的檢測(cè)用時(shí)更少,檢測(cè)速度相比于YOLOv5s 有17.6%的提升。實(shí)驗(yàn)得出改進(jìn)前后算法檢測(cè)圖片的對(duì)比如圖7所示。
表3 性能對(duì)比
圖7 YOLOv5和改進(jìn)YOLO檢測(cè)結(jié)果對(duì)比
圖7 (a)和(b)的兩組圖片表示YOLOv5 和改進(jìn)網(wǎng)絡(luò)的檢測(cè)結(jié)果對(duì)比。其中,每組左列的標(biāo)注框是YOLOv5 未檢測(cè)到的麥穗,(a)組中,YOLOv5會(huì)漏檢一些小麥穗和被遮擋的麥穗,而改進(jìn)的算法均會(huì)將這些麥穗檢測(cè)出來(lái),對(duì)小物體和被遮擋物體的檢測(cè)效果明顯提升。(b)組實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法比YOLOv5 檢測(cè)出更多位于圖像邊緣的麥穗。對(duì)比YOLOv5 和改進(jìn)算法的檢測(cè)結(jié)果發(fā)現(xiàn),YOLOv5對(duì)小目標(biāo)的漏檢現(xiàn)象嚴(yán)重,對(duì)于圖片中不完整的麥穗,尤其是圖片邊緣的物體,存在漏檢、誤檢、檢測(cè)精度不高的現(xiàn)象。另外,對(duì)于背景模糊的圖像,麥穗的檢測(cè)也存在缺陷,比如擁擠的麥穗只用一個(gè)邊界框標(biāo)注。改進(jìn)后的網(wǎng)絡(luò)對(duì)遮擋不完整且尺寸較小的麥穗的檢測(cè)能力提高明顯。即使背景圖像模糊、出現(xiàn)在圖像邊緣不完整的麥穗,改進(jìn)的網(wǎng)絡(luò)也會(huì)準(zhǔn)確檢測(cè)出來(lái),并且可以看出,改進(jìn)的YOLO 算法檢測(cè)到的麥穗整體的平均精度更大一些。
本文開展了一系列的對(duì)照試驗(yàn),①將網(wǎng)絡(luò)所有卷積層的SiLU 激活函數(shù)修改為L(zhǎng)eakyRelu函數(shù);②在①的基礎(chǔ)上,添加CBAM 注意力機(jī)制模塊:在主干網(wǎng)絡(luò)的SPPF 模塊后添加CBAM模塊,在FPN部分的每?jī)蓚€(gè)特征圖疊加(concat)之后添加CBAM 模塊;③在②的基礎(chǔ)上引入GhostNet,即將FPN 網(wǎng)絡(luò)里的普通卷積替換成Ghost 輕量化卷積模塊,把bottleneckCSP 替換成相應(yīng)的Ghostbottleneck模塊。分別將以上改進(jìn)策略做實(shí)驗(yàn),效果如表4所示。
通過(guò)實(shí)驗(yàn)對(duì)比可以發(fā)現(xiàn):將網(wǎng)絡(luò)所有卷積層的SiLU 激活函數(shù)修改為L(zhǎng)eakyRelu 函數(shù)提高了網(wǎng)絡(luò)檢測(cè)速度,但參數(shù)數(shù)量并沒(méi)有提升;進(jìn)一步添加CBAM 注意力機(jī)制模塊之后,檢測(cè)時(shí)間雖增加0.3 ms,但是檢測(cè)精度提升至92.0%,Ghostmodule 和Ghostbottleneck 結(jié)構(gòu)的引入使得網(wǎng)絡(luò)的檢測(cè)精度由92.0%提高到了92.3%,檢測(cè)時(shí)間從10.2 ms 減少到了8.5 ms,檢測(cè)速度提升了17.6%。綜上,本文針對(duì)YOLOv5 的改進(jìn)策略能夠提升復(fù)雜場(chǎng)景下的麥穗檢測(cè)效果。
表4 不同改進(jìn)策略的實(shí)驗(yàn)結(jié)果對(duì)比
本文在YOLOv5 的基礎(chǔ)上,引進(jìn)了輕量級(jí)GhostNet模塊、注意力機(jī)制CBAM 模塊,改進(jìn)了激活函數(shù),使得網(wǎng)絡(luò)整體精度提升了1.3 個(gè)百分點(diǎn),速度提升了17.6%。結(jié)合Ghost 模塊的輕量型思想,能夠很大程度上同時(shí)提高檢測(cè)的速度和精確度。引進(jìn)的注意力模塊技術(shù)可以更有效地改善網(wǎng)絡(luò)檢測(cè)準(zhǔn)確度。改進(jìn)后的網(wǎng)絡(luò)對(duì)遮擋不完整且尺寸較小的麥穗的檢測(cè)能力明顯提高,同時(shí)也會(huì)檢測(cè)出來(lái)背景圖像模糊、出現(xiàn)在圖像邊緣不完整的麥穗目標(biāo)。由于現(xiàn)有的麥穗數(shù)據(jù)集中,所含有的邊緣不完整麥穗和小目標(biāo)麥穗的數(shù)量較少,能否對(duì)其數(shù)據(jù)集改善并擴(kuò)充,以及如何提升網(wǎng)絡(luò)的速度和精度是今后的研究方向。