










摘要:為解決肥城桃病蟲害特征小以及不同病斑表征相似導致的難以精準識別的問題,以山東省肥城市肥城桃種植基地為樣本采集點,構建包含細菌穿孔病、褐斑穿孔病、潛隱黃化病、桃小食心蟲、紅頸天牛、流膠病6種桃病蟲害的數據集:針對樣本分布特點,引入Mixup、Cutout、高斯模糊等多種方法進行數據增強,以提升模型對小病斑特征的檢測:以YOLOv7模型作為骨干網絡,加入Ghost模塊進行瘦身以降低模型冗余特征,構建基于CBAM注意力機制和加權雙向特征金字塔網絡(BiFPN)的多尺度神經網絡模型,增強小病斑的多尺度融合,從而提高模型的泛化能力。經實驗驗證,改進后的模型對上述6種病蟲害的識別精度均值(mAP)達到93. 2%。表明改進后的模型能夠實現對病蟲害的有效識別,可為肥城桃病蟲害的早期預警和防治提供一定的技術支撐。
關鍵詞:肥城桃;病蟲害識別;YOLOv7模型:深度學習;卷積神經網絡
中圖分類號:S126:S436.621 文獻標識號:A 文章編號:1001-4942(2024) 08-0150-08
肥城桃是山東省的特色農產品之一,因產于山東省肥城市而得名,具有悠久的種植歷史。肥城桃生長過程中易受多種病蟲侵害,嚴重影響產量和品質,及時、準確識別病蟲害種類是其精準、有效防治的關鍵。目前,肥城桃病蟲害的識別仍主要依賴種植戶的經驗,無法滿足大面積桃園病蟲害快速、精準識別和診治的需求。因此,探究高效的肥城桃病蟲害識別方法對于解決該問題具有重要意義。
深度學習是對成像傳感器感知到的植物圖像進行處理、分析和學習,并從中獲取目標信息的重要技術手段。基于深度學習的目標檢測算法主要分為兩大類,一類是以R-CNN為代表的二階段算法,另一類是以YOLO、SSD為代表的一階段算法。第一類速度較慢,無法滿足病害識別檢測的實時性要求:第二類雖然可以滿足實時性的要求,但檢測精度較低。目前,通過構建深度學習模型來識別農作物病蟲害,已取得到了一些研究成果。如:王云露等針對目標圖像復雜特征的提取或復雜背景下小目標的識別,使用特征金字塔網絡FPN和Cascade R-CNN中的級聯機制對Faster R-CNN算法進行改進,實現了在自然場景下對蘋果5種病害的無損識別,準確率達98.3%。李鑫然等通過深層特征融合和精確感興趣區域池化對Faster R_CNN模型進行改進,實現對自然環境條件下蘋果葉部病害的有效檢測,平均準確率達到82.42%。鮑文霞等通過在頸部網絡中加入卷積模塊對VGG16網絡模型進行改進,實現對蘋果葉部微小病斑的識別率達到94.7%。張志遠等采用離線數據增強和在線數據增強相結合的策略,同時對YOLOv5模型的骨干網絡進行改動優化,實現在自然環境下對櫻桃果實的識別,識別率可達98%。商楓楠等為實現自然環境下火龍果的精準識別采摘,以YOLOX-Nano模型為基準,在主干特征提取網絡中加入卷積注意力模塊,檢測速度和精度都得到了一定的提高,識別準確率達到98%。樊湘鵬等通過對VGG16網絡模型的全連接層和分類層進行改進,實現在自然環境條件下對葡萄葉部病害檢測的精度達到95. 67%。王國偉等選用Adam算法、Dropout策略和ReLU激勵函數,對LeNet模型進行改進,提高了對玉米病害的檢測精度,準確率達到96%。趙立新等通過遷移學習和改進Alex模型來提高對棉葉病蟲害識別的準確率,準確率達到了97.16%。
雖然深度學習技術已在多種作物病害識別方面取得了一定的進展,但由于受空氣溫濕度、土壤等環境因素的影響,病蟲害在不同植物、不同時期的發生特征存在差異,前人建立的模型無法直接應用于肥城桃病蟲害的檢測識別。為此,本研究建立包含細菌穿孔病、褐斑穿孔病、潛隱黃化病、桃小食心蟲、流膠病、紅頸天牛6種肥城桃病蟲害的數據集,以YOLOv7模型作為骨干網絡,加入Ghost模塊進行瘦身,再引入CBAM注意力模塊和加權雙向特征金字塔(BiFPN)來提高對小尺度病蟲害特征的識別效率和精度,從而實現對自然環境條件下肥城桃病蟲害的實時檢測。
1 材料與方法
1.1 數據采集與數據集建立
1.1.1 數據采集
試驗數據采集于肥城市康頓農業有限公司種植基地。為保證數據的普適性,選擇肥城桃生長狀況良好的500 m2左右露天種植地塊進行數據采集。為更好地研究病蟲害不同階段的表現特征,于2021年6月至9月,每7天采集一次,并固定在8、12、17時三個時間段采集不同光照條件下的病蟲害圖像數據。采用iPhonell的后置攝像頭進行近距離(約40 cm)拍攝獲取圖像,圖像分辨率為4 032×3 024像素。對采集到的圖像數據進行清洗,去除失焦、抖動、曝光等導致的成像質量差的數據,初步得到包括6種病蟲害的數據集,其中,單一簡單背景的細菌穿孔病、褐斑穿孔病、潛隱黃化病圖像分別有327、234、202張,復雜背景的桃小食心蟲(包括幼蟲)、流膠病、紅頸天牛(包括幼蟲)圖像分別有249、128、66張,共計1 206張。各種病蟲害示例見圖1。
1.1.2 數據集構建
首先,對收集到的數據進行預處理,將每張圖像分辨率調整為512×512像素。其次,為避免訓練過程中因蟲害數據集過小而引起過擬合現象,影響模型識別效果,采用離線數據增強的方法擴充數據集。所使用的離線數據增強方式如下:①水平翻轉。以模擬實際拍攝過程中不同角度的采樣。②旋轉。通過旋轉,增加角度的變化。③裁剪。從圖像中隨機裁剪出不同區域的子圖像,以改變圖像的視角和尺度。④色彩變化。通過改變色彩飽和度、亮度、對比度等豐富圖像。⑤噪聲添加。向圖像中添加隨機噪聲,如高斯噪聲或椒鹽噪聲,以模擬真實世界中的圖像噪聲。經過數據增強處理的各種病害圖像效果如圖2所示。通過上述5種數據離線增強處理將一張原始圖像擴充為6張,擴充前后訓練集圖像數量的變化如表1所示。最后,對擴充后的圖像進行篩選,去除冗余圖像和低質量圖像,最終建立了包含5 408張圖像的肥城桃病蟲害數據集。將數據集按照8:1:1的比例隨機分成訓練集、驗證集、測試集。使用交叉驗證方法進行模型的訓練和測試,重復進行10次,最終結果取10次結果的平均值。
1.2 基于改進YOLOv7算法的病蟲害檢測模型構建
本研究使用YOLOv7作為肥城桃病蟲害識別的基本模型算法。YOLOv7采用多尺度特征融合和特征金字塔的設計,這使其在處理不同大小的目標時都具有較強的性能。YOLOv7主要包括四個部分:輸入層(Input)、骨干網絡(Backbone)、頸部(Neck)和預測層(Prediction)。YOLOv7網絡模型的具體結構如圖3A所示。其中縮寫CBS、MP-C3、C7_1、SPPCSPC、C7_2部分的結構如圖3B所示。為使YOLOv7能夠適用于肥城桃病蟲害預測,本研究對YOLOv7的Backbone和Neck結構進行優化,以增強其特征表達能力,提高檢測性能。
1.2.1 使用輕量化的幻影卷積層(GhostConv)替代傳統的卷積層,降低模型復雜度
YOLOv7初始模型為能很好地學習輸入數據并得到良好的泛化性能,加大了對計算過程中冗余資源的存儲,從而增大了模型本身的復雜程度。為此,針對標準卷積生成的特征圖中存在高度相似的冗余特征問題,本研究在Backbone和Neck部分引入Ghost-Net網絡中的GhostConv卷積模塊代替原有普通卷積,將標準卷積替換成線性變換,利用“簡單”特征代替冗余特征,同時將簡單線性運算和標準卷積運算相結合,以降低特征提取過程中的冗余計算量,進而降低模型復雜度。
如圖4所示,GhostNet輕量級網絡模型可以在保持原有卷積輸出特征圖的尺寸以及通道大小的前提下,降低網絡的計算量和參數量。首先,GhostNet使用普通卷積(1×1×M)、批量歸一化和激活函數對輸入圖像進行通道壓縮,從而生成固有的特征映射。接著,將這些特征映射應用一系列簡單的線性操作Φk,以獲得更多特征圖并增加特征的多樣性。此處,廉價操作Φk由深度卷積(Depthwise Convolution,即每個卷積核負責一個通道,每個通道僅被一個卷積核卷積)、批量歸一化和激活函數組合而成。最后,通過concat操作將這些新增的特征圖與第一步中通過普通卷積、批量歸一化和激活函數生成的特征圖進行拼接,最終獲得的特征圖即為輸出。
1.2.2 在Backbone中加入CBAM注意力機制,加強對復雜背景下小目標特征的學習能力
在對病蟲害進行目標檢測過程中,存在大量易在深層網絡中丟失特征信息的小病灶和小目標,從而導致漏檢和錯檢現象。為此,本研究在Backbone中引入輕量級通用模塊——CBAM(Convolutional Block At-tention Module)注意力模塊。如圖5所示,CBAM通過結合通道注意力模塊和空間注意力模塊,一方面利用空間注意力機制使神經網絡專注于特征圖像中起決定作用的分類區域,另一方面利用通道注意力機制處理特征圖通道的分配關系,從而使神經網絡沿著這兩個維度進行自適應特征優化,以加強模型對小目標信息的學習。
在通道注意力模塊上分別經過最大池化和平均池化將尺寸為CxHxW的特征圖變成C×1×1的,經過多層感知機(Multi-layer Perceptron,MLP)轉換,壓縮通道數,再通過加和操作合并結果,并進行Sigmoid歸一化,使得提取到的高層特征更全面、更豐富。空間注意力模塊首先對輸入的通道注意力特征圖在通道維度上分別進行全局平均池化和全局最大池化,得到兩個二維特征圖:然后,將這兩個特征圖沿通道維度連接,形成一個新的特征圖,再通過一個7×7的卷積操作和Sigmoid激活函數生成空間注意力特征圖;最后,將原始特征圖與該空間注意力特征圖逐元素相乘,得到增強的特征圖,通過選擇重要的空間位置來提高模型的性能。
1.2.3 在Neck中引入加權雙向特征金字塔網絡(BiFPN),更多保留小目標的特征信息
隨著卷積的深入,為更好地保留小目標特征信息,本研究又進一步在Neck中引入加權雙向特征金字塔網絡(BiFPN)。從圖6中可以看出,特征金字塔網絡(FPN)采用簡單的自上而下的特征融合方式,在R-CNN、RetinaNet和YOLOv3中較常見,具有較好的檢測效果:PAN結構在FPN基礎上增加了自下而上的特征融合分支,用低層特征融合高層特征,以增強高層特征的定位信息,常在YOLOv4和YOLOv5模型中使用:BiFPN與PAN結構相比,雖然二者在特征融合方式上都是將信息流基于臨近特征,但BiFPN通過引入雙向跨尺度連接,允許特征在不同層次之間進行多次交互,從而更有效地融合多尺度信息,有利于解決檢測過程中可能存在的小病斑重疊問題。同時,采用了簡單而高效的加權特征融合方法,使網絡能夠自適應地調整不同特征圖的重要性,從而提高檢測精度和模型的靈活性。
1.3 模型性能評價指標
目標檢測算法的評價標準主要包括精確率(Precision,P)、召回率(Recall,R)、平均精度(Av-erage Precision,AP)和平均精度均值(mean Aver-age Precision,mAP)。其中,P是衡量模型預測為正例的樣本中有多少是真正的正例,表示模型在預測為正例的樣本中的準確性:R是衡量模型正確檢測到的正例占所有真實正例的比例,表示模型對正例的覆蓋能力:AP是對精確率一召回率曲線進行積分所得,用于反映模型的預測效果,值越大模型預測效果越好,反之則越差:mAP是所有類別的平均精度的平均值,用于綜合評估模型的性能。各指標計算公式如下:
其中:TP是被正確分類的正樣本數量:FP是被錯誤分為正類的負樣本數量:FN是被錯誤分為負樣本的正樣本數量。
1.4 實驗環境及模型訓練參數
實驗環境配置如下:操作系統為Windowsll:GPU為GTX3060;深度學習框架為PyTorch1.1;使用的編程語言為Python3.8:GPU加速庫為CU-DA10.0、CUDNN7.6.0。
模型使用預訓練的參數進行初始化,使用SGD(隨機下降梯度)對改進后的識別模型進行優化,初始學習率lr= 0.001,權重衰減因子設置為0.000 5,SGD的動量設置為0.9。使用官方建議的預訓練權重進行1 500輪次(Epoch)訓練,數據集批處理大小(BatchSize)設置為32。
2 結果與分析
2.1 消融實驗結果分析
為驗證改進方法的效果,利用同一病蟲害數據集進行消融實驗,對比分析初始模型Yolov7、單獨加入CBAM注意力機制后的YOLOv7_CBAM、單獨引入BiFPN的YOLOv7_BiFPN、單獨加入Ghost模塊的YOLOv7_Ghost及本研究改進模型YOLOv7_Ghost_CBAM_BiFPN的檢測性能,結果如表2所示。與初始YOLOv7網絡相比,①在YOLOv7網絡結構中融人CBAM模塊后,模型的mAP提升了3.2個百分點,但模型參數量增大了6.3 Mb,檢測速度略有下降:②在YOLOv7網絡中引入加權雙向特征金字塔BiFPN后,模型的mAP提高了4.5個百分點,模型參數量和檢測速度與YOLOv7_CBAM相近;③在YOLOv7中加入Ghost模塊進行輕量化后,模型的mAP降低了2.2個百分點,僅84.5%,但模型參數量最小,檢測速度最快;④本研究改進后的模型YOLOv7_Ghost_CBAM_BiFPN識別準確率最高,mAP達到93.2%,分別較前四種模型提升了6.5、3.3、2.0、8.7個百分點,且模型參數量較小,比原模型YOLOv7高2.4 Mb,檢測速度僅次于YOLOv7_Ghost模型。表明本研究改進后的YOLOv7模型,在降低模型參數量、提升檢測速度的同時,明顯提升了識別準確率,因而可以很好地滿足實際應用場景中對肥城桃病蟲害識別檢測的需求。
2.2 本研究改進YOLOv7模型的性能對比分析
為了驗證本研究改進YOLOv7模型的性能,在相同數據集下,將其與近年來應用較為廣泛的深度學習模型,如FasterR - CNN、YOLOv5s、YOLOv7等,進行對比實驗,結果如表3所示。可以看出,YOLOv5s、FasterR-CNN、YOLOv7、YOLOv7_CBAM_BiFPN四種識別模型在6種肥城桃病蟲害數據集上的mAP分別為81.1%、82. 3%、86.7%、93.7%。本研究改進后的模型YOLOv7_Ghost_CBAM_BiFPN識別精度為93.2%,遠高于YOLOv5s、FasterR-CNN和YOLOv7,僅比YOLOv7_CBAM_BiFPN略有下降,但其參數量較小,檢測較快。考慮到實際生產場景中復雜的環境因素,在能夠保持較高識別精度的情況下,降低模型體積,提升模型檢測速度,可以更好地滿足實際復雜生產場景中對病蟲害識別的準確性和實時性需求。
2.3 改進YOLOv7模型對肥城桃病蟲害的檢測效果
通過對深度學習模型的預測結果和真實標簽構建混淆矩陣,可以更加全面地評估模型在不同類別上的表現,為模型的改進提供有力依據。本研究共涉及6類病蟲標簽,包括細菌穿孔病、褐斑穿孔病、潛隱黃化病、桃小食心蟲、流膠病、紅頸天牛,使用10%測試集進行模型性能評估,所得混淆矩陣如圖7所示,其中,對角線表示某一類別被模型正確預測為該類別的概率。混淆矩陣用來表示對樣本數據的預測結果與真實情況的關系,可以反映模型的分類性能,當模型所呈現出來的混淆矩陣接近一個對角矩陣時,表示該模型具有優異的識別分類能力。本實驗標簽的真實值和預測值的關系基本符合對角線矩陣的特點,其中細菌穿孔病與褐斑穿孔病無論是發病部位還是性狀特征都有一定的相似之處,導致識別過程中兩種病害略有混淆,檢測準確率較其他類別較低,分別為91 .7%與92.0%。潛隱黃化病的主要表現性狀大多分布在整個葉片,且早期病害特征并不十分明顯,故檢測準確率較其他三類低;桃小食心蟲、流膠病與紅頸天牛由于性狀特征明顯,預測分類效果較好,其中紅頸天牛的識別準確率最高,達97 .0%,表明本研究建立的模型對6類病蟲害的識別分類效果較好。
3 結論
為更好地解決肥城桃病蟲害的小目標識別檢測問題,本研究首先利用離線數據增強方式擴充肥城桃病蟲害數據集,以確保有足夠的數據以保證預測模型的魯棒性與訓練精度。然后從三個方面對傳統YOLOv7網絡模型進行改進:①用Ghost卷積替換普通卷積,以降低生成冗余特征的計算量,進而減少模型的計算時間和參數量,從而達到模型輕量化的目的:②在YOLOv7的骨干網絡增添輕量化程度高和通用性強的CBAM注意力機制,提升對桃樹病蟲害小目標的識別效果,同時可避免卷積乘法帶來的大量計算,以降低模塊復雜度、減小計算量;③在頸部網絡結構中引入BiF-PN,利用其雙向跨尺度和加權特征融合的方式,解決多種小目標相互重疊遮擋的問題。實驗結果表明,與初始YOLOv7網絡模型相比,本研究提出的YOLOv7_Ghost_CBAM_BiFPN優化模型的平均識別精度均值達到93. 2%,參數量僅77.2 Mb.略大于基礎模型YOLOv7,檢測速度為0.164 s/張,性能明顯提升,能夠很好地識別檢測實際生產場景中肥城桃的6種病蟲害。
基金項目:山東省重大科技創新工程項目“現代果園智慧種植裝備與大數據平臺研發及示范應用”(2019JZZY010706)