魏甫豫,張振宇,王麗萍,3,張 潔,王素娜,3
(1.河北工程大學(xué) 園林與生態(tài)工程學(xué)院,河北 邯鄲 056000;2.新鄉(xiāng)學(xué)院 美術(shù)學(xué)院,河南 新鄉(xiāng) 453003;3.邯鄲市土壤生態(tài)修復(fù)重點(diǎn)實(shí)驗(yàn)室,河北 邯鄲 056038)
在我國的基礎(chǔ)產(chǎn)業(yè)中, 農(nóng)業(yè)占據(jù)著十分重要的地位。 農(nóng)業(yè)蟲害是影響農(nóng)業(yè)生產(chǎn)的重要因素。 目前,已發(fā)現(xiàn)危害農(nóng)作物的昆蟲的種類就達(dá)上千種, 數(shù)量更是不計(jì)其數(shù)。蟲害的發(fā)生不利于農(nóng)作物生長,有效防治農(nóng)業(yè)蟲害是提高農(nóng)作物產(chǎn)量的重要保證。 昆蟲的種類不同,防治辦法也不同。 因此,準(zhǔn)確識別昆蟲種類對于防治農(nóng)業(yè)蟲害具有重要意義。
隨著計(jì)算機(jī)應(yīng)用技術(shù)的發(fā)展, 卷積神經(jīng)網(wǎng)絡(luò)(CNN)已開始在昆蟲的圖像識別中發(fā)揮重要作用,一些學(xué)者利用CNN 研究了昆蟲種類的圖像識別問題。 HUANG J. H.等[1]利 用MobileNetV2 網(wǎng) 絡(luò) 識 別 了4 種白蟻, 識別精度超過90%, 已接近人工識別精度。 彭 明 杰 等[2]構(gòu) 建 了 以SqueezeNet 為 主 干 分 類 網(wǎng)絡(luò)的蜻蜓識別系統(tǒng),提高了識別的準(zhǔn)確率,避免了傳統(tǒng)算法只能識別標(biāo)本圖片的局限性。 王衛(wèi)民等[3]提出了一種基于CNN 的蟲情圖像分割和計(jì)數(shù)方法,該方法提高了昆蟲的計(jì)數(shù)精度, 為昆蟲的識別和分類提供了大量的無背景數(shù)據(jù)集。 薛大暄等[4]利用RPN人工神經(jīng)網(wǎng)絡(luò)模型得到了美國白蛾圖像數(shù)據(jù), 并對模型進(jìn)行了改進(jìn), 將識別美國白蛾的準(zhǔn)確率提高到99.5%。 易 星[5]改 進(jìn) 了Faster-RCNN 模 型 的 網(wǎng) 絡(luò) 結(jié)構(gòu), 得到了面向小目標(biāo)的多尺度區(qū)域神經(jīng)網(wǎng)絡(luò)檢測算法,并在小目標(biāo)昆蟲檢測上取得良好效果。 梁文哲等[6]以YOLO v3 目標(biāo)檢測算法為基礎(chǔ),通過短時(shí)傅里葉變換豐富了目標(biāo)的圖像特征, 提高了低SNR 下的檢測率。 為了實(shí)現(xiàn)危害農(nóng)作物昆蟲檢測和分類的自動(dòng)化,我們以稻縱卷葉螟、黏蟲和棉鈴蟲為研究對象,構(gòu)造了對應(yīng)的樣本數(shù)據(jù)集,通過改進(jìn)YOLO v3 模型[7]構(gòu) 建 了PPYOLO[8]模 型,并 進(jìn) 行 了 識 別 研 究,為昆蟲圖像識別提供了參考。
在本文中, 我們將利用PPYOLO 模型對稻縱卷葉螟、黏蟲和棉鈴蟲進(jìn)行識別。
1.1.1 數(shù)據(jù)獲取
實(shí)驗(yàn)所用昆蟲樣本來自河南現(xiàn)代農(nóng)業(yè)研究開發(fā)基地。 在高空探照燈的照射下,我們利用昆蟲的趨光性捕獲了不同種類昆蟲,并將這些昆蟲進(jìn)行采樣,按不同類別對昆蟲進(jìn)行拍照, 以獲取昆蟲的原始數(shù)據(jù)樣本。
1.1.2 數(shù)據(jù)增強(qiáng)
由于原始數(shù)據(jù)樣本數(shù)量較少, 為避免模型訓(xùn)練時(shí)出現(xiàn)過擬合現(xiàn)象, 采取數(shù)據(jù)增強(qiáng)方式對數(shù)據(jù)進(jìn)行擴(kuò)充。 利用python 的自帶庫和PaddleX 的模型框架進(jìn)行數(shù)據(jù)增強(qiáng),增強(qiáng)方式包括像水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)和調(diào)整圖像亮度、對比度及飽和度等。 對應(yīng)的python代碼表示如下:
原數(shù)據(jù)樣本共29 張圖片, 其中棉鈴蟲4 張,稻縱卷葉螟12 張,黏蟲13 張。 進(jìn)行數(shù)據(jù)增強(qiáng)處理后,擴(kuò)充到261 張, 其中棉鈴蟲36 張, 稻縱卷葉螟108張,黏蟲117 張。
1.1.3 數(shù)據(jù)標(biāo)注
因?yàn)槟繕?biāo)檢測需要對目標(biāo)進(jìn)行定位, 所以需要利用圖像標(biāo)注工具labelImg 對擴(kuò)充后的數(shù)據(jù)進(jìn)行標(biāo)注,以形成XML 文件,其文件結(jié)構(gòu)表示如下:
在以上文件結(jié)構(gòu)中, 重要的標(biāo)簽參數(shù)為name、xmin、ymin、xmax 和ymax,其中name 表示標(biāo)注類別,xmin、xmax、ymin 和ymax 分 別 代 表 矩 形 框 的 左 上 角和右下角坐標(biāo)位置。
1.1.4 建立數(shù)據(jù)集
按與照片對應(yīng)的順序?qū)?biāo)注數(shù)據(jù)以jpg 圖像格式存放于JPEGImages 文件夾, 將XML 文件存放于Annotations 文件夾。構(gòu)建insects-base 數(shù)據(jù)集,以形成如下insects-base 目錄。
1.1.5 劃分?jǐn)?shù)據(jù)集
把insects-base 數(shù)據(jù)集分為訓(xùn)練集、測試集和驗(yàn)證集,并把70%的圖片放入訓(xùn)練集,把20%的圖片放入測試集,把10%的圖片放入驗(yàn)證集。劃分?jǐn)?shù)據(jù)集的代碼表示如下:
paddlex--split_dataset--format VOC--dataset_dir D:insects-base--val_value 0.2--test_value 0.1
在insects -base 目錄下自動(dòng)生成labels.txt,train_list.txt、val_list.txt 和test_list.txt 等4 個(gè)文件,這4 個(gè)文件分別存儲(chǔ)目標(biāo)類別信息、訓(xùn)練樣本信息、驗(yàn)證信息和測試樣本信息。
實(shí)驗(yàn)1:比較Faster-RCNN 模型[9]與PPYOLO 模型在移動(dòng)端的適用性。
在相同條件下,先按比例對開源insects-set 數(shù)據(jù)集進(jìn)行切分, 該數(shù)據(jù)集包含6 種昆蟲的217 張標(biāo)注圖片,再以ResNet50 骨干網(wǎng)絡(luò)為基礎(chǔ),對Faster-RCNN和PPYOLO 模型進(jìn)行訓(xùn)練。
主要參數(shù)設(shè)置如下: 學(xué)習(xí)率 (learning-rate)為0.000 2, 批處理大小為每次2 張圖片,warmup 初始值為0,步數(shù)為260,訓(xùn)練次數(shù)(epochs)為100。
實(shí)驗(yàn)2: 通過3 個(gè)預(yù)訓(xùn)練模型的對比找到最優(yōu)模型。
借助已構(gòu)建的 insects -base 數(shù)據(jù)集和MobileNetV3[10]骨架網(wǎng)絡(luò),利用遷移學(xué)習(xí)理論將3 個(gè)預(yù)訓(xùn)練模型的參數(shù)和權(quán)值應(yīng)用到PPYOLO 模型,對該模型進(jìn)行訓(xùn)練。 用到的3 個(gè)預(yù)訓(xùn)練模型分別是無預(yù)訓(xùn)練模型、COCO[11]預(yù)訓(xùn)練模型和insects-set 自定義預(yù)訓(xùn)練模型。
訓(xùn)練模型的主要參數(shù)設(shè)置如下: 學(xué)習(xí)率(learning-rate)為0.000 2,批處理大小為每次2 張圖片,warmup 初 始 值 為0, 步 數(shù) 為260, 訓(xùn) 練 輪 次(epochs)為100。
平均精度mAP(mean Average Precision)是目標(biāo)檢測中重要的評價(jià)指標(biāo),其度量(mAP)為
其中,n 表示類別數(shù),AP 表示PR (Precision-Recall)曲線下面積值。
精準(zhǔn)度precison(P)的計(jì)算公式為
在以上式子中,TP 表示IoU 大于設(shè)定閾值的檢測框數(shù)量, FP 表示IoU 小于等于設(shè)定閾值的檢測框數(shù)量或檢測到同一GT 多余檢測框數(shù)量,本實(shí)驗(yàn)設(shè)定的閾值為0.5,F(xiàn)N 表示沒有檢測到GT 的數(shù)量。 GT(Ground Truth)表示真實(shí)目標(biāo)框,IoU 表示交并比,其表達(dá)式為
Epoch=100/100, Step=84/84, loss_xy=1.128 747,loss_wh=1.495 412, loss_iou=6.899 587, loss_iou_aware=2.083 375, loss_obj=4.660 137, loss_cls=8.191 339, loss=24.458 595,lr=0.000 002,time_each_step=0.22 s
FasterRCNN-ResNet50_vd
bbox_map=79.143 329 589 900 35
Epoch 100 finished, loss_rpn_cls=0.031 200 517,loss_rpn_reg=0.163 0650 9, loss_bbox_cls=0.318 333 48, loss_bbox_reg=0.321 418 55, loss=0.834 017 7.
Epoch=100/100, Step=84/84, loss_rpn_cls=0.079 776, loss_rpn_reg=0.264 407, loss_bbox_cls=0.348 309,loss_bbox_reg=0.361 669, loss=1.054 161, lr=0.000 002,time_each_step=0.41 s
實(shí)驗(yàn)結(jié)果表明,模型訓(xùn)練100 次后,達(dá)到收斂狀態(tài)。這時(shí),faster-RCNN 模型的mAP 值為79.14,每步訓(xùn)練時(shí)長(time_each_step)為0.41 s,PPYOLO 模型的mAP值為67.42,每步訓(xùn)練時(shí)長(time_each_step)為0.22 s。
從得到的數(shù)據(jù)可以看出,雖然faster-RCNN 模型的mAP 值優(yōu)于PPYOLO 模型,但PPYOLO 模型文件小、運(yùn)算速度快、預(yù)測時(shí)間短。因此,如果考慮在移動(dòng)端的適用性,PPYOLO 模型更適合。
利用insects-base 數(shù)據(jù)集對無預(yù)訓(xùn)練模型、COCO 預(yù)訓(xùn)練模型和insects-set 自定義預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練,結(jié)果見表1。
表1 3 個(gè)模型的訓(xùn)練結(jié)果對比
其中,Dp 表示預(yù)測框,Dgt 表示真實(shí)框。
在相同條件下, 采用開源insects-set 數(shù)據(jù)集對Faster-RCNN 與PPYOLO 模型進(jìn)行訓(xùn)練, 結(jié)果表示如下:
PPYOLO-ResNet50_vd_dcn
bbox_map=67.428 915 674 793 69
Epoch 100 finished,loss_xy=1.654 320 7, loss_wh=1.991 560 2, loss_iou=9.277 742, loss_iou_aware=2.715 423 6, loss_obj=4.558 316 7, loss_cls=10.453 637, loss=30.651 001.
從表1 可以看出,insects-set 自定義模型、COCO預(yù)訓(xùn)練模型和無預(yù)訓(xùn)練模型的mAP 精度分別為82.18%、79.27%和49.89%, 平均召回率分別為76.47%、75.27%和32.57%。 從表1 還可以看出,insects-set 自定義預(yù)訓(xùn)練模型的mAP 值比其他模型分別高2.91 和32.29 個(gè)百分點(diǎn), 召回率比其他模型高了1.2 和43.9 個(gè)百分點(diǎn)。
利用高空探測燈捕獲3 種目標(biāo)昆蟲, 獲取了它們的圖像,通過數(shù)據(jù)增強(qiáng)擴(kuò)充了數(shù)據(jù),采用labelImg構(gòu)建了insects-base 標(biāo)注數(shù)據(jù)集。
通過Faster-RCNN 模型與PPYOLO 模型的精度對比,發(fā)現(xiàn)在模型大小、運(yùn)算、預(yù)測時(shí)長性能指標(biāo)及移動(dòng)端的適用性方面,PPYOLO 模型更適合用于在移動(dòng)端進(jìn)行的目標(biāo)昆蟲檢測。
通過insects-set 自定義預(yù)訓(xùn)練模型、COCO 數(shù)據(jù)集預(yù)訓(xùn)練模型和無預(yù)訓(xùn)練模型的對比,發(fā)現(xiàn)insectsset 自定義預(yù)訓(xùn)練模型為最優(yōu)PPYOLO 模型。
在本文中,我們只對3 種昆蟲進(jìn)行目標(biāo)檢測,涉及的昆蟲種類和樣本數(shù)量都比較少, 下一步將重點(diǎn)研究擴(kuò)充昆蟲種類和樣本數(shù)量后的圖像識別問題,研究適用于移動(dòng)端的APP。