劉雙艷,葛華勇,段家輝
(東華大學信息科學與技術學院,上海 201620)
小麥麥穗數量的檢測在產量評估、種植密度估計和基因性狀評估等方面都有一定的應用價值,目前在麥穗計數方面有較多相關的研究。小麥產量的評估一般是統計單位面積內麥穗的個數,通過人工計數結果較為準確,但是會浪費人力資源,并且由于沒有統一的計數標準,結果會受主觀影響。利用數字圖像處理技術進行計數能更加高效且節省資源,但缺點是精確度不夠高。
隨著人工智能的快速發展,深度學習成為當前研究的熱點。將深度學習技術應用在小麥麥穗檢測方面,選取合適的網絡進行訓練,利用數據訓練的模型自動檢測麥穗,可以滿足預估小麥產量的要求,同時也將提高小麥麥穗計數的效率,減少人工田間的工作量,并且擁有較高的準確率。基于深度學習的目標檢測方法中,最具代表性的算法是YOLO(you only look once)[1],其高效、靈活和泛化性能好,在工業界十分受歡迎,能夠滿足麥穗檢測的基本要求。
深度學習的網絡模型的計算量和參數量尤為巨大,以及硬件資源的匱乏,這對檢測效果和嵌入式設備和移動端的部署是不利的,使網絡模型更加輕量化是解決問題的關鍵。考慮到一些特征圖的冗余信息可能是成功模型的重要組成部分, Han 等[2]提出了新型輕量卷積模塊Ghost Module,嘗試使用一系列線性轉換等計算量小的操作來獲取這些冗余信息,并將這些冗余的特征圖稱為Ghost,旨在獲取輕量化的模型。除了在網絡計算量上進行改進,增加網絡精度也能達到提高網絡性能的效果。注意力機制結合全局信息,讓模型更關注于重要的區域,篩選當前任務較為關鍵的信息,提高網絡檢測性能。Woo 等[3]提出的注意力機制模塊CBAM,將特征信息分為通道域和空間域,算法分別在兩個獨立的維度進行學習,更能識別出重要信息。陳啟超等[4]在陰影檢測技術中添加了注意力機制,在原有模型中搭建注意力機制模塊,使得檢測能力進一步提升。高明柯等[5]在手勢識別過程中為了不丟失動態手勢的重要信息,引進了基于特征融合和注意力機制的手勢識別方法,通過實驗驗證了方法的有效性和魯棒性。
本研究以來自不同大陸的Global Wheat大規模麥穗數據集為研究對象,研究了基于改進的YOLOv5 網絡的麥穗自動檢測方法。在YOLOv5的基礎上進行了如下的研究和改進:①為了減少算法的計算時間并提高檢測速度,將Leaky-ReLu代替SILU作為整個網絡的激活函數;②在YOLOv5的基礎上進行模型優化,在每一個多尺度特稱融合之后加入CBAM 注意力網絡,關注圖上有意義的信息和目標的位置信息,并抑制不重要的信息,提取更豐富全面的特征;③結合GhostNet 的Ghost 模塊用于替代網絡中的普通卷積層,同時將Ghostbottleneck 代替Neck 中的C3 模塊,達到有效降低模型的參數量并提升算法性能的效果。
YOLOv5 網絡的結構主要包括輸入端Backbone、Neck、Prediction 三部分,輸入端采用Mosaic 方法進行數據增強,同時具備自適應的圖片縮放以及錨框計算等功能。待檢圖片首先由Backbone 進行特征提取,獲取三個有效特征層,進行下一步網絡的構建。
其在CSP Darknet53[6]結構的基礎上,加入簡化版Bottleneck CSP 的C3 模塊,由于C3 部分只有3 個卷積,因此可以減少參數。SPPF 結構與SPP(spatial pyramid pooling)[7]結構作用一樣,但SPPF 結構效率更高、速度更快。如通過不同池化核大小的最大池化進行特征提取,提高網絡的感受野。在YOLOv4[8]中,SPP 是用在FPN里面的;在YOLOv5 中,SPPF 模塊被用在了主干特征提取網絡中,如圖1 所示。YOLOv5 整體框架如圖2所示。YOLOv5中的Neck端融合FPN(feature pyramid network)+PAN(path aggregation network)結構,特征金字塔結構中引入了CSP結構,每個C3 模塊中都含有CSP 結構。網絡的Prediction 模塊采用的損失函數為GIOU_Loss,采用YOLOv3[9]的Head 結構,對三個不同尺度進行檢測結果的預測。

圖1 SPPF模塊

圖2 YOLOv5s網絡結構
(1)注意力機制。注意力機制本質上分為三種:空間注意力模型(spatial attention),通道注意力模型(channel attention)和混合注意力模型。其中,后者中最典型的機制是CBAM 混合注意機制,結合了通道和空間注意力模塊,能夠關注圖上有意義的信息和目標的位置信息,并抑制不重要的信息,提取的特征更豐富全面。在神經網絡中引入CBAM,所增加的模型參數量和開銷可忽略,但能明顯地提高檢測和分類的精度。
(2)Ghost模塊。Ghost模塊是一種新型輕量卷積模塊,Ghost 模塊可以代替卷積網絡中的每一個卷積層。將與原本特征圖(intrinsic)相似的特征圖稱為魅影(ghost),普通的卷積操作運算量非常之大,被簡單的操作生成的ghost 圖所代替,將使得模型更加輕量化。
改進的YOLO 網絡結構如圖3 所示。

圖3 改進的YOLO網絡結構
主干網絡對輸入圖像進行特征提取,分別得到了128×128,256×256, 512×512 三個不同尺度的有效特征層。在512×512 大小的特征圖輸入到SPPF 模塊之后,采用CBAM 模塊對輸出進行處理,YOLOv5 的PANet 將三個不同尺度的特征圖進行自上而下和自下而上兩條路徑上的融合。改進的YOLOv5 中,將融合之后的特征圖輸入CBAM 模塊,關注圖上有意義的信息和目標的位置信息,并抑制不重要的信息,提取更豐富全面的特征。將普通卷積替換成輕量型的GhostConv,并且將Bottle neckcsp 換成了GhostBottleneck,旨在降低Neck 部分的參數計算量,使得整個模型更加地輕量化。并采用LeakyRelu函數激活,相較于SiLU激活能夠一定程度上減少計算量。
CBAM 注意力機制結合了通道和空間注意力模塊,能夠識別有用的信息并抑制大量冗余信息。本文對YOLOv5 中的FPN 結構進行了改進,提出在每兩個特征進行Concat 堆疊之后添加CBAM 注意力機制,在空間和通道兩個維度進行Attention 操作,使網絡更加關注圖上有意義的信息和目標的位置信息,并抑制不重要的信息,提取更豐富全面的特征。CBAM 模塊結構如圖4所示。

圖4 CBAM模塊
CBAM 注意力機制先通過通道注意力模塊進行空間的壓縮,學習圖上有用的內容,H*W*C大小的特征圖輸入后,首先進行了全局最大池化和局部最大池化等運算,運算結果輸入共享全連接層,將輸出特征圖的像素點進行相加,之后由Sigmoid 函數激活,最終生成通道注意特征圖,再與輸入圖片的像素點進行相乘操作,作為空間注意機制的輸入。
空間注意機制是對通道維度的壓縮。基于通道維度進行Maxpooling 和Avgpooling,得到兩個H*W*1 的輸出,進行Concat 之后,再進行卷積操作,降低維度,經過Sigmoid 函數激活,得到空間注意特征圖,再與輸入feature 進行像素點的相乘操作,得到最后的特征,CBAM 注意力機制各部分的具體公式如下:
其中:σ運算表示Sigmoid 函數激活;AvgPool、MaxPool分別表示全局池化和最大池化;?表示對應像素點相乘,⊕表示對應像素點相加。
原網絡中卷積層全部使用SiLU 激活函數推理速度較低,為了減少算法的計算時間并提高檢測速度,將LeakyReLu 代替SiLU 作為整個網絡的激活函數。
為了使得模型計算量更小,引入Ghost模塊替換普通卷積層,Ghost 模塊結構如圖5 所示。在初步卷積操作中,卷積核是普通卷積層的一半,從而減少一半的計算量,稱為少量卷積,因此可得到一半通道的特征圖,次級卷積操作逐個將初級卷積輸出的特征圖進行3*3或5*5的卷積,稱為廉價操作,得到另一半幽靈(ghost)特征圖。

圖5 GhostConv
普通卷積和Ghost卷積的計算量公式以及普通卷積和輕量卷積計算量的比值如下:
其中:h'、w'表示特征圖的高和寬,k表示卷積核大小。d表示3 或者5(3*3 或5*5 的卷積)。FLOPs1表示普通卷積的計算量,FLOPs2表示輕量卷積的計算量。可以看出,用GhostModule 模塊,FLOPs一般可減少為原來的1/2。
為驗證本文所提出的改進YOLOv5 的性能,在Global Wheat 2020 數據集上進行了訓練和測試。Global Wheat 2020 麥穗來自不同國家不同地區的小麥,是目前使用最多的麥穗檢測數據集。輸入模型之前,對圖像進行了數據增強,如調整對比度、飽和度、亮度(包括調亮和調暗)以及水平翻轉來豐富數據集,提高泛化能力。研究中使用訓練集900張、驗證集747張共1647 張麥穗圖像。實驗中9 個先驗框的尺寸如表1所示。

表1 先驗框大小
實驗所用的硬件設備為NVIDIA GeForce RTX 3090,使用Python 語言在Torch1.10.0 +cu113 CUDA 框架下實現算法。輸入網絡的圖片分辨率大小為640×640,采用隨機梯度下降優化器,權重衰減設置為0.0005。初始學習率是0.01,最終學習率0.1,SGD 動量為0.937,優化權重衰減系數是0.0005,訓練輪次300 次,batchsize=16,前3 個epoch 進行學習率預熱,其初始化動量為0.8,初始bias學習率為0.1。邊界框損失系數設為0.05,分類損失系數為0.5,IoU訓練閾值設為0.2,邊界框的長寬比閾值為4.0。
表2 列出了改進網絡前后的參數模型對比。網絡參數從701 萬減少到了570 萬,降低了18.59 %。

表2 參數量對比
把訓練后的網絡在GlobalWheat2020 測試集上進行了檢測,獲得了圖6 所示的召回率-精確度曲線。

圖6 YOLOv5s和改進YOLO的檢測召回率-精確度曲線對比
表3進一步將改進前后的網絡特性進行了比較。根據表3可知,改進YOLO 算法與YOLOv5s算法相比,平均檢測精度提高了1.3 個百分點;在相同數據集的情況下,改進YOLO 算法的檢測用時更少,檢測速度相比于YOLOv5s 有17.6%的提升。實驗得出改進前后算法檢測圖片的對比如圖7所示。

表3 性能對比

圖7 YOLOv5和改進YOLO檢測結果對比
圖7 (a)和(b)的兩組圖片表示YOLOv5 和改進網絡的檢測結果對比。其中,每組左列的標注框是YOLOv5 未檢測到的麥穗,(a)組中,YOLOv5會漏檢一些小麥穗和被遮擋的麥穗,而改進的算法均會將這些麥穗檢測出來,對小物體和被遮擋物體的檢測效果明顯提升。(b)組實驗結果表明,改進算法比YOLOv5 檢測出更多位于圖像邊緣的麥穗。對比YOLOv5 和改進算法的檢測結果發現,YOLOv5對小目標的漏檢現象嚴重,對于圖片中不完整的麥穗,尤其是圖片邊緣的物體,存在漏檢、誤檢、檢測精度不高的現象。另外,對于背景模糊的圖像,麥穗的檢測也存在缺陷,比如擁擠的麥穗只用一個邊界框標注。改進后的網絡對遮擋不完整且尺寸較小的麥穗的檢測能力提高明顯。即使背景圖像模糊、出現在圖像邊緣不完整的麥穗,改進的網絡也會準確檢測出來,并且可以看出,改進的YOLO 算法檢測到的麥穗整體的平均精度更大一些。
本文開展了一系列的對照試驗,①將網絡所有卷積層的SiLU 激活函數修改為LeakyRelu函數;②在①的基礎上,添加CBAM 注意力機制模塊:在主干網絡的SPPF 模塊后添加CBAM模塊,在FPN部分的每兩個特征圖疊加(concat)之后添加CBAM 模塊;③在②的基礎上引入GhostNet,即將FPN 網絡里的普通卷積替換成Ghost 輕量化卷積模塊,把bottleneckCSP 替換成相應的Ghostbottleneck模塊。分別將以上改進策略做實驗,效果如表4所示。
通過實驗對比可以發現:將網絡所有卷積層的SiLU 激活函數修改為LeakyRelu 函數提高了網絡檢測速度,但參數數量并沒有提升;進一步添加CBAM 注意力機制模塊之后,檢測時間雖增加0.3 ms,但是檢測精度提升至92.0%,Ghostmodule 和Ghostbottleneck 結構的引入使得網絡的檢測精度由92.0%提高到了92.3%,檢測時間從10.2 ms 減少到了8.5 ms,檢測速度提升了17.6%。綜上,本文針對YOLOv5 的改進策略能夠提升復雜場景下的麥穗檢測效果。

表4 不同改進策略的實驗結果對比
本文在YOLOv5 的基礎上,引進了輕量級GhostNet模塊、注意力機制CBAM 模塊,改進了激活函數,使得網絡整體精度提升了1.3 個百分點,速度提升了17.6%。結合Ghost 模塊的輕量型思想,能夠很大程度上同時提高檢測的速度和精確度。引進的注意力模塊技術可以更有效地改善網絡檢測準確度。改進后的網絡對遮擋不完整且尺寸較小的麥穗的檢測能力明顯提高,同時也會檢測出來背景圖像模糊、出現在圖像邊緣不完整的麥穗目標。由于現有的麥穗數據集中,所含有的邊緣不完整麥穗和小目標麥穗的數量較少,能否對其數據集改善并擴充,以及如何提升網絡的速度和精度是今后的研究方向。