郭勝娟,劉 峰
(1.武漢城市職業(yè)學院初教學院,湖北武漢 430070;2.武漢大學計算機學院,湖北武漢 430072)
昆蟲是農作物生產的主要威脅,可以感染、破壞并降低農業(yè)產量。對有害昆蟲的識別并對其進行及早防治有助于提高農業(yè)種植和經濟林業(yè)的產值。準確、快速地從監(jiān)控視頻、遠程協同以及無人機巡查圖片中檢測有害昆蟲將有助于實現農林害蟲的早期防治[1]。由于圖像中昆蟲的分辨率低,以及遮擋、噪聲和特征缺乏等干擾因素,處理大型數據集中微小物體的檢測具有一定的挑戰(zhàn)性。近年來,如何使用人工智能技術快速、準確地從復雜背景圖像中識別有害昆蟲成為研究的熱門問題,對農林生產、環(huán)境保護以及自然蟲害防治都具有非常重要的研究價值[2,3]。因此,本文以日本脊吉丁、楊小舟蛾、柳蘭葉甲和刺蛾四種有害昆蟲為例,探討基于YOLOV5的圖像目標檢測技術識別特定區(qū)域常見有限種類的有害昆蟲的可能性,以便于為農業(yè)生產提供科學依據。
日本脊吉丁(Chalcophora japonica)為鞘翅目吉丁蟲科昆蟲。體長2.9~3.7 cm,體型狹長而扁,末端尖,體色黑褐色,前胸、翅鞘有縱向灰白色條狀斑紋,頭部黑色,兩復眼內側及下緣有粉紅色條紋。主要分布在福建、江西、湖南、重慶、云南等地。幼蟲主要寄生在樹干韌皮部、形成層和木質部淺層,蛀食樹木導致樹皮開裂與脫落,使得樹勢衰弱甚至死亡。
楊小舟蛾(Micromelalopha sieversi Staudinger)為舟蛾科小舟蛾屬昆蟲,體長1.1~1.4 cm,展翅2.4~2.6 cm[4]。體色有黃褐、紅褐和暗褐等多種顏色,變化多樣,具3條灰白橫線的前翅。在我國廣泛分布于北京、湖北、四川等地。蟲卵半球形,黃綠色,呈塊狀排列于頁面。幼蟲主要寄居于經濟作物和楊柳等景觀樹種,啃食葉表,使葉片呈籮篩狀。多發(fā)于7、8月份高溫多雨天氣。
柳蘭葉甲(Plagiodera versicolora)為鞘翅目葉甲科昆蟲[5]。體長4 mm左右,全體有金屬光澤,頭部橫寬,具有褐色觸角,前胸背板光滑,前緣呈弧形凹入。廣泛分布在全國各地。成蟲和幼蟲主要寄居于葡萄、柳、桃等葉片,啃食嫩葉,導致寄主葉片穿孔或者孔洞,使被害葉片呈紗窗網紋狀。
刺蛾(Limacodidae)鱗翅目刺蛾科昆蟲[6]。成蟲體長1.5~1.6 cm,翅展3.6~4.0 cm,體綠色,胸背中央有1條棕色縱線,腹部灰黃色,翅背面灰綠色;復眼黑褐色。幼蟲體長2.5~2.8 cm,初黃色,后為黃綠至綠色。前胸盾上有1對黑斑,亞背線部位有10對刺突,氣門下方有8對刺突。分布地域廣泛,幾乎遍及全國。刺蛾是雜食性食葉害蟲,以蘋果、梨、棗等果樹以及月季、楊、柳等多種園林植物的葉片為食,危害性大,危害范圍廣。刺蛾幼蟲常啃食葉下表皮及葉肉,成蟲啃食樹全葉,形成圓形透明小斑塊。
基于圖像特征提取并對圖像分類的算法早期已經被應用于農業(yè)昆蟲的識別。竺樂慶等人搜集了10種害蟲579個樣本,采用局部平均顏色特征和支持向量機對樣本進行分類[7]。Fina等人引入了K均值聚類算法對作物害蟲識別進行識別。張紅濤等人收集了270個訓練樣本,設計了一個田間害蟲識別系統[8]。Ebrahimi等人使用微分核函數SVM方法來對小樣本數據集的昆蟲進行分類[9]。
在人工智能領域,深度學習算法具有很強的學習能力,廣泛應用在圖像特征提取方面。自卷積神經網絡提出以來,出現ResNet、GoogleNet和UNet等優(yōu)秀的神經網絡。它們可以自動學習復雜圖像的形態(tài)、顏色和紋理特征,解決了傳統手工設計的特征提取器局限性和主觀性,從而廣泛應用復雜圖像檢測、分割、分類和識別領域。
2018年,Denan Xia等人提出了一種基于卷積神經網絡的多層分類器來解決昆蟲識別問題[10]。該方法首先采用16層卷積網絡VGG-19模型用于提取特征,并采用區(qū)域生成網絡(RPN)定位昆蟲。2020年,Fuji Ren等人設計了一種特征重用殘差塊,將輸入信號的特征與殘差信號融合,形成特征重用殘差網絡(FR ResNet),通過對重用殘差信息進行學習,提高了圖像信息的表示能力[11]。
Abderraouf等人提出了一種改進了YOLOv3網絡框架,通過集成自適應特征融合模塊,能夠快速檢測農業(yè)害蟲[12]。Lei Du等人基于Faster R-CNN,提出了一種稱為害蟲區(qū)域CNN的端到端模型Pest R-CNN,能夠對玉米葉片的夜蛾取食痕跡進行快速檢測[13]。
有害昆蟲的識別本質上是通過視頻或者圖像的目標檢測過程,而Joseph等人提出的YOLO算法廣泛應用于目標檢測領域[14,15,16,17]。YOLO是一種端到端的網絡模型,它將對象檢測重新定義為一個回歸問題,使用單個卷積神經網絡,在一幅圖像中定義多個預測框來實現多目標的檢測任務。YOLO V5是Ultralytics推出的開源目標檢測算法,它支持快速的視頻和圖像檢測,可以實現實時目標檢測任務[18]。
YOLO v5整個網絡架構由如圖1所示的輸入部分、主干部分、頭部部分和預測部分組成。輸入部分主要負責對數據的輸入和數據增強,支持錨框的自動計算機制,支持基于馬賽克的數據增強機制,支持對圖像隨機裁剪、排列、縮放等拼接方式。
主干部分主要作用是提取輸入圖片中的特征信息,以便于頭部網絡進行特征融合。YOLO v5的主干網絡部分由Focus子模塊、CBL模塊與CSP模塊組成。CBL模塊由卷積、批量正則化和Leaky relu激活函數組成。Focus模塊由多個片段拼接和CBL模塊卷積組成。ResUnit單元是兩次CBL操作后進行的殘差鏈接運算組成。CSP模塊由CBL模塊、ResUnit單元運算后,再進行卷積和殘差鏈接的方式拼接,拼接后再采用批量正則化、Leaky relu和CBL操作組成。
頸部部分主要是采用卷積、CSP模塊、上采樣和拼接操作形成三種不同尺度的預測特征圖。該模塊借鑒了繼承了YOLOV4的優(yōu)點,多通道特征PANet網絡模型來提升預測精度[18]。預測部分主要通過卷積形成三個不同尺度的特征向量,采用全連接層實現目標檢測任務。
如圖1所示,在YOLO v5中,算法首先將圖像轉化為608×608像素的三通道RGB圖像,然后,將其分割為S×S個網格,如果標注的樣本中心落入到某個網格,則該網格負責預測目標對象。因此,每個網格需要預測一個矩形錨框來擬合目標對象的位置,每個待預測的錨框由[w,h,x,y,c]五元組組成,其中錨框長度(w)、寬度(h)、中心點位置坐標x,y值以及預測的置信度(c)可以通過機器學習預測。同時,在這五元組已預測的情況下,還需要預測該框中的物體屬于某個類別L的可能性(pL)。若需要預測k個類別,則應保存每個錨框的參數為(5+k)個參數。假設每個中心點預測三個錨框,而預測類別數為80,則每個中心點需要3×(80+5)=255個參數。機器學習時,隨機生成這些參數,通過卷積神經網絡的迭代,將參數優(yōu)化到樣本標簽擬合的位置,從而完成機器學習的過程。YOLO v5采用三個尺度來預測錨框,其推薦尺度分別為76×76、38×38、19×19。
圖1 YOLO v5 網絡結構圖
為了解決數據集的規(guī)模相對較小和類別相對不平衡而導致過擬合問題,本文在YOLO v5的Mosaic 數據增強方式的基礎上,將四張圖片進行隨機裁剪、縮放后,再隨機排列拼接形成一張圖片,實現豐富數據集的同時,增加了小樣本目標,提升網絡的訓練速度。
此外,本文還采用復制、粘貼和混合技術對數據進行增強。對于一組四個訓練圖像,首先通過隨機選擇幾張圖片對其進行亮度、色調和飽和度分量來應用顏色抖動調整;再通過插入操作將其插入其他圖片來產生更多的輸入圖像;接著采用隨機馬賽克技術對圖像進行處理,然后通過平移、翻轉、旋轉和縮放等幾何變換技術,實現圖像融合。
為了提高網絡的學習精度,本文在Yolo v5的損失函數基礎上,融合了中心點損失函數[18]。設xi為第i個預測框中心點位置,Cyi每個標簽的中心點位置。則中心點損失函數的定義如公式1所示。
為了探究日本脊吉丁、楊小舟蛾、柳蘭葉甲和刺蛾四種昆蟲的人工智能識別機制,本文基于Baidu圖像從公開數據集中收集了四種昆蟲在不同的生長周期中的圖片2 680張,采用數據增強的方式對數據進行四倍增強。對增強后的數據集按照9:1隨機劃分為訓練集和測試集,再對測試集按照8:2隨機劃分為過程訓練集和評估集。
將樣本圖像的尺寸進行歸一化處理,處理后的圖像分辨率為608×608。對歸一化后的數據采用Labelme軟件進行人工標注為JSON格式,通過Python程序將JSON格式轉化為VOC格式和YOLO格式。
實驗的操作系統為Windows 11,主要軟件為Python-3.9.7和torch-1.10.2 ;顯卡為NVIDIA GeForce RTX 3060,6G顯存。
實驗主要參數配置為:學習率lr為0.01,動量系數為0.937,批尺寸設置為16,圖像輸入分辨率為608×608,iou閾值為0.2,Anchor閾值為4.0,訓練epoch為400。
為了評估實驗識別精度,本實驗選用預測準確度、置信度為0.5~0.95的平均精度mAP、混淆矩陣和F1曲線等評價指標來進行評價[19,20]。mAP通常用于衡量目標檢測的精度指標;混淆矩陣用于觀察模型在各個類別上的表現;F1曲線主要用來觀察定模型精度和最佳置信度。
在昆蟲檢測過程中,深度神經網絡提取圖像中可能存在的昆蟲,并標注昆蟲的類別以及概率即置信度。為了驗證算法的性能,本文從測試集中隨機選擇4張樣本,并根據標簽標注錨框[圖2(上圖)]與算法預測結果[圖2(下圖)]進行對比。從圖中可見,算法能完整的預測四種昆蟲,其中脊吉丁、葉甲的置信度達到1.0,楊小舟蛾和刺蛾的置信度達到0.8。對比預測結果的刺蛾,由于標簽樣本并沒有完全標注所有的刺蛾,算法通過推理,找到了所有的刺蛾,并將所有刺蛾進行歸并,這說明該算法具有一定的遷移能力,能夠找到比標簽更合乎實際情況的昆蟲。
圖2 四種昆蟲樣本標簽(上圖)與預測結果對比圖(下圖)
為了驗證算法的準確性,本文采用獨立的測試集對算法進行測試,結果如表1所示。測試表明四種昆蟲的平均準確率達到96.7%,平均召回率達到97%,置信度在0.5~0.95區(qū)間的平均精度mAP值為79.1%。從該預測結果可以開出,所有昆蟲的召回率都大于92%,其中脊吉丁召回率可以達到100%,而刺蛾的召回率可以達到92.3%。但是隨著置信度水平的提升,所有四種昆蟲的準確率都有不同程度的下降。
表1 四種昆蟲的測試結果
在獨立測試集上,四種昆蟲的混淆矩陣和F1曲線如圖3所示。從混淆矩陣可以看出,脊吉丁的準確率和召回率都可以達到100%,但是楊小舟蛾和刺蛾的準確率較低,達到92%,很容易將部分背景圖像認為是楊小舟蛾和刺蛾。從F1曲線可以看出,置信度在10%~85%范圍都能有效地區(qū)分四種昆蟲。
圖3 測試集的混淆矩陣和F1曲線
本文收集公開的日本脊吉丁、楊小舟蛾、柳蘭葉甲和刺蛾四種昆蟲,通過labelme進行人工標注,采用改進的YOLO v5算法對四種昆蟲進行檢測。通過對比實驗和數值分析,證明可以采用YOLO v5快速檢測四種有害昆蟲,為農業(yè)和林業(yè)生產的害蟲早期發(fā)現提供了科學依據。