韓濤,詹煒
(長江大學(xué),湖北 荊州 434023)
番茄作物作為我國重要的經(jīng)濟(jì)農(nóng)作物之一,隨著番茄作物在我國種植面積的不斷擴(kuò)大,番茄作物的病蟲害問題也日益突出。番茄病蟲害的暴發(fā),會(huì)導(dǎo)致番茄的產(chǎn)量和質(zhì)量的嚴(yán)重下降,從而給整個(gè)農(nóng)業(yè)經(jīng)濟(jì)帶來不小的影響。因此,番茄病蟲害的檢測和識(shí)別對(duì)于防治番茄病蟲害尤為重要。目前,人為識(shí)別番茄病蟲害存在準(zhǔn)確率低、效率低、成本高等問題,無法廣泛應(yīng)用于大面積的番茄作物區(qū)域,而且由于人為的錯(cuò)誤識(shí)別可能會(huì)使用錯(cuò)誤的防治策略,進(jìn)而影響番茄作物的產(chǎn)量和質(zhì)量,從而對(duì)當(dāng)?shù)氐霓r(nóng)業(yè)經(jīng)濟(jì)造成不可挽回的損失。
隨著計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù)的快速發(fā)展和人工智能技術(shù)的不斷進(jìn)步,在農(nóng)業(yè)病蟲害防治領(lǐng)域中,為通過使用計(jì)算機(jī)視覺圖像識(shí)別技術(shù)來加強(qiáng)對(duì)農(nóng)作物病蟲害的識(shí)別和病蟲害的及時(shí)預(yù)警和預(yù)防,提供了有力的技術(shù)和理論支持[1]。基于圖像處理的病蟲害識(shí)別方法已經(jīng)被運(yùn)用于其他農(nóng)業(yè)病蟲害識(shí)別領(lǐng)域當(dāng)中,例如水稻病蟲害識(shí)別[2-3]、玉米病蟲害識(shí)別[4-5]等。李子茂等人[6]提出了一種基于DenseNet的茶葉病害識(shí)別方法,該方法對(duì)5種常見的茶葉病害類別進(jìn)行了識(shí)別,最終DenseNet 模型識(shí)別準(zhǔn)確率達(dá)到了92.66%。劉君等人[7]提出了一種基于YOLO 卷積神經(jīng)網(wǎng)絡(luò)模型的番茄病蟲害識(shí)別方法,該方法對(duì)8種常見的番茄病蟲害進(jìn)行了檢測和識(shí)別,最終訓(xùn)練得到的YOLO 卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)番茄病蟲害的平均檢測精度達(dá)到了85.09%。上述所提到的方法,都只對(duì)病蟲害進(jìn)行了識(shí)別和分類,但是并沒有對(duì)神經(jīng)網(wǎng)絡(luò)模型所學(xué)習(xí)到的圖像特征進(jìn)行顯示,從而缺乏不同類別病蟲害圖像特征的可視化佐證,也就無法判斷神經(jīng)網(wǎng)絡(luò)模型是否正確地學(xué)習(xí)到了各類病蟲害的圖像特征。基于此,本文提出了使用ResNet[8]卷積神經(jīng)網(wǎng)絡(luò)模型來完成對(duì)番茄病蟲害的識(shí)別和分類任務(wù),并通過加入Grad-CAM 算法[9],對(duì)訓(xùn)練完成的ResNet 卷積網(wǎng)絡(luò)模型所學(xué)習(xí)到的番茄病蟲害的圖像特征進(jìn)行了可視化的顯示。
在實(shí)驗(yàn)的過程中,所使用的番茄病蟲害數(shù)據(jù)集總共包括7 073張JPG格式的圖像數(shù)據(jù)。所有圖像的分辨率為256×256(像素), 經(jīng)過農(nóng)業(yè)領(lǐng)域?qū)I(yè)研究人員的仔細(xì)辨認(rèn)和分類,整個(gè)番茄病蟲害數(shù)據(jù)集總共包括菌斑病、早疫病、晚疫病、葉霉病、白粉病、斑枯病、二斑葉螨病、斑點(diǎn)病、番茄病毒病、番茄黃化曲葉病毒病及健康番茄葉這11種類別。每種番茄病蟲害類別的圖像數(shù)據(jù)約為614張,數(shù)據(jù)集示例如圖1所示。

圖1 番茄病蟲害類別
非專業(yè)人員,很難從圖1 中分辨出不同類別的番茄病蟲害。例如,二斑葉螨病、斑點(diǎn)病、番茄病毒病這3種番茄病蟲害的區(qū)分度并不是很高,非常容易誤判。
為了使神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練的過程中具有更好的準(zhǔn)確性、魯棒性和泛化能力,以適應(yīng)于不同復(fù)雜情況,需要對(duì)番茄病蟲害的數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理操作。數(shù)據(jù)集預(yù)處理過程中,主要使用的是數(shù)據(jù)增強(qiáng)操作,具體方式包括:1) 隨機(jī)裁剪,按照原始圖像大小的90%進(jìn)行裁剪作為輸入;2) 隨機(jī)旋轉(zhuǎn):將原始圖像旋轉(zhuǎn)45°、90°和135°作為輸入;3) 高斯模糊,對(duì)數(shù)據(jù)集中的一部分圖像進(jìn)行高斯模糊,得到相對(duì)模糊的圖像作為輸入。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)模型如VGG[10],只能通過堆疊網(wǎng)絡(luò)層數(shù)來提高網(wǎng)絡(luò)模型的識(shí)別精度,然而隨著網(wǎng)絡(luò)模型層數(shù)的不斷增加,網(wǎng)絡(luò)模型會(huì)發(fā)生退化的現(xiàn)象,即淺層網(wǎng)絡(luò)模型的精度會(huì)比深層網(wǎng)絡(luò)的精度要高,而更深層的卷積網(wǎng)絡(luò)模型不僅在準(zhǔn)確率上低于淺層模型,而且模型訓(xùn)練時(shí)間更長、模型參數(shù)量更多。因此,為了解決傳統(tǒng)卷積網(wǎng)絡(luò)所帶來的上述問題,Kaiming He 團(tuán)隊(duì)于2016 年首次提出了ResNet 殘差網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)可以很好地解決網(wǎng)絡(luò)退化、難以訓(xùn)練等問題,而且可以使得整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)更加輕量化。ResNet 網(wǎng)絡(luò)模型分為3種常見的結(jié)構(gòu),根據(jù)網(wǎng)絡(luò)層數(shù)的大小進(jìn)行命名,分別為ResNet34、ResNet50 和ResNet101。本文使用的是ResNet50 網(wǎng)絡(luò)模型結(jié)構(gòu),因?yàn)镽esNet50在保證一定的模型深度的同時(shí),模型大小和參數(shù)量也不會(huì)太大,具有可移植性。
整個(gè)ResNet50卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖2所示。

圖2 ResNet網(wǎng)絡(luò)結(jié)構(gòu)
在整個(gè)ResNet卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)中有2 個(gè)重要的ResNet 殘差結(jié)構(gòu),分別為Res_1 和Res_2。Res_1 和Res_2 殘差結(jié)構(gòu)都由2個(gè)分支構(gòu)成。如圖2所示,Res_1 殘差結(jié)構(gòu)的一個(gè)分支由3 個(gè)conv卷積網(wǎng)絡(luò)構(gòu)成,另一個(gè)分支則直接是輸入的特征圖大小,最后兩個(gè)分支的輸出位置進(jìn)行一個(gè)相加的連接操作。而Res_2 殘差模塊的兩個(gè)分支都由conv 卷積網(wǎng)絡(luò)構(gòu)成,只是數(shù)量有所不同,一個(gè)分支由3個(gè)卷積層構(gòu)成,另一分支則只有一個(gè)卷積層構(gòu)成,最后2 個(gè)分支將各自提取的特征同樣進(jìn)行相加的連接操作。Res_1和Res_2 兩個(gè)殘差結(jié)構(gòu)的作用是對(duì)神經(jīng)網(wǎng)絡(luò)模型中的低尺度特征圖和高尺度特征圖進(jìn)行不同方式的融合,使得整個(gè)神經(jīng)網(wǎng)絡(luò)模型在增加層數(shù)的過程中不會(huì)丟失對(duì)低層次特征的感知能力,從而在一定程度上學(xué)習(xí)到全局性特征。
所有的ResNet卷積神經(jīng)網(wǎng)絡(luò)模型都分為4 個(gè)stage(x 表示數(shù)量),只是不同層數(shù)的ResNet 網(wǎng)絡(luò)模型的每個(gè)stage 所包含的Res_1 和Res_2殘差模型的數(shù)量有所不同。其中,每個(gè)stage都由Res_1和Res_2這兩種殘差結(jié)構(gòu)所構(gòu)成。
硬件實(shí)驗(yàn)環(huán)境配置信息包括:CPU Intel Core i9-12900k;內(nèi)存32 GB;顯卡RTX 4090,顯存24 GB。軟件實(shí)驗(yàn)環(huán)境配置信息如下:Ubuntu 22.04;Python 3.8;Pycharm 2022.3;Pytorch 1.13.0,CUDA 11.7。在訓(xùn)練過程中,訓(xùn)練集、驗(yàn)證集和測試集按照7:2:1的比例進(jìn)行劃分,并將圖片輸入網(wǎng)絡(luò)模型的尺寸大小設(shè)置為224×224(像素),優(yōu)化器設(shè)置為SGD,動(dòng)量因子設(shè)置為0.9,批次大小設(shè)置為32,迭代次數(shù)epoch設(shè)置為500。
番茄病蟲害的識(shí)別在計(jì)算機(jī)圖像處理領(lǐng)域?qū)儆谝粋€(gè)分類任務(wù),為了得到較好的分類和檢測效果,采用SiLU作為ResNet 卷積神經(jīng)網(wǎng)絡(luò)模型的激活函數(shù)。SiLU函數(shù)是一個(gè)沒有上界,有下界的一個(gè)平滑曲線函數(shù),在一定程度上可以避免網(wǎng)絡(luò)模型在訓(xùn)練過程中出現(xiàn)的過擬合問題,同時(shí)曲線的平滑更有利于訓(xùn)練過程的收斂。SiLU激活函數(shù)如公式(1)所示:
Sigmoid函數(shù)由下列公式定義:
Sigmoid具有平滑易于求導(dǎo)的優(yōu)點(diǎn),適用于計(jì)算機(jī)圖像處理領(lǐng)域中的分類任務(wù)。
為了量化ResNet 卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)于番茄病蟲害識(shí)別和分類的實(shí)際效果,需要選擇能夠評(píng)價(jià)訓(xùn)練完成的ResNet 模型的模型評(píng)價(jià)指標(biāo)。模型評(píng)價(jià)指標(biāo)選擇平均精度均值(mAP)、模型大小(Model size)、參數(shù)量(Parameters)和浮點(diǎn)運(yùn)算數(shù)(FLOPs)。平均精度均值mAP 能夠描述網(wǎng)絡(luò)模型的平均檢測精度;模型大小,能夠體現(xiàn)模型所占磁盤空間大小,是評(píng)價(jià)一個(gè)網(wǎng)絡(luò)模型是否能夠移植其他平臺(tái)的重要指標(biāo);參數(shù)量是衡量網(wǎng)絡(luò)模型復(fù)雜度的一個(gè)重要指標(biāo);浮點(diǎn)運(yùn)算數(shù)體現(xiàn)了網(wǎng)絡(luò)模型在訓(xùn)練過程中需要的具體計(jì)算量,也是衡量網(wǎng)絡(luò)模型復(fù)雜度的一個(gè)重要參數(shù)。平均精度值均值是體現(xiàn)網(wǎng)絡(luò)模型檢測效果的重要指標(biāo),見公式(3),其中c為數(shù)據(jù)集類別數(shù)量。
AP 是對(duì)P-R(Precision-Recall) 曲線的精度值求均值,見公式(4),其中Psmooth( )r代表進(jìn)行了平滑操作過后的P-R曲線。
使用ResNet50 網(wǎng)絡(luò)模型對(duì)番茄病蟲害數(shù)據(jù)集進(jìn)行訓(xùn)練和驗(yàn)證,圖3展示了ResNet50網(wǎng)絡(luò)模型在訓(xùn)練500 個(gè)epoch 過程中的平均精度值mAP 曲線和loss 曲線變化的過程。從曲線圖中可以看出,ResNet50網(wǎng)絡(luò)模型在訓(xùn)練的過程中,平均精度均值mAP和loss上升和下降都很快,最后都趨于平緩。

圖3 ResNet模型的mAP 和loss曲線
在表1 展示了ResNet 網(wǎng)絡(luò)模型在訓(xùn)練過程中的一些評(píng)價(jià)指標(biāo)。從表1可以看出,ResNet 網(wǎng)絡(luò)模型對(duì)于11種不同類別的番茄病蟲害的識(shí)別準(zhǔn)確率達(dá)到了94.54%,而且模型大小和計(jì)算規(guī)模只有11.114M 和4.109G FLOPs。

表1 ResNet模型評(píng)價(jià)指標(biāo)
只通過ResNet網(wǎng)絡(luò)模型的訓(xùn)練曲線,并不能夠具象化地體現(xiàn)該網(wǎng)絡(luò)模型對(duì)于11種不同番茄病蟲害圖像特征的提取效果,因?yàn)橛?xùn)練的準(zhǔn)確率曲線并不能對(duì)ResNet 網(wǎng)絡(luò)模型所學(xué)習(xí)到的特征圖做出可解釋性的判斷。
Grad-CAM算法由RR Selvaraju等人提出,該算法可以通過熱力圖的形式,將訓(xùn)練得到的卷積神經(jīng)網(wǎng)絡(luò)模型所學(xué)習(xí)到的特征圖像進(jìn)行具象化的顯示,從而得到可解釋的卷積網(wǎng)絡(luò)模型圖像特征圖。如圖4所示,通過Grad-CAM 算法,展示了ResNet 卷積神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練的過程中,學(xué)習(xí)到的11種不同類型番茄病蟲害圖像特征的熱力圖和原圖像的結(jié)果對(duì)比圖。
從圖4 中可以看出,RseNet 卷積神經(jīng)網(wǎng)路模型在訓(xùn)練的過程中,該模型學(xué)習(xí)到的不同類型的番茄病蟲害的圖像特征有著較大的區(qū)別。從Gard-CAM 算法所得到的特征圖可以看出,對(duì)于二斑葉螨病、斑點(diǎn)病、番茄病毒病這3 種相似度非常高的病蟲害,ResNet50網(wǎng)絡(luò)模型確實(shí)學(xué)習(xí)到了這3 種番茄病蟲害的不同之處,并對(duì)這3種病蟲害進(jìn)行了區(qū)分。
目前對(duì)于番茄病蟲害識(shí)別的方法主要是以人工識(shí)別為主,針對(duì)人工識(shí)別番茄病蟲害所帶來的準(zhǔn)確度低、成本高、檢測慢等問題,本文使用計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù),提出了使用ResNet卷積神經(jīng)網(wǎng)絡(luò)模型完成對(duì)常見的11種番茄病蟲害的識(shí)別和分類。在實(shí)驗(yàn)的過程中,主要研究和分析了ResNet網(wǎng)絡(luò)模型對(duì)番茄病蟲害的識(shí)別和分類的精度問題,并且對(duì)ResNet網(wǎng)絡(luò)模型的平均精度均值mAP、模型大小、參數(shù)量和浮點(diǎn)運(yùn)算數(shù)進(jìn)行了分析。實(shí)驗(yàn)結(jié)果顯示了ResNet 網(wǎng)絡(luò)模型對(duì)于番茄病蟲害有著很高的識(shí)別準(zhǔn)確率,平均精度均值達(dá)到了94.54%。
本研究提出了一種使用ResNet 網(wǎng)絡(luò)模型識(shí)別番茄病蟲害的新方法,并通過實(shí)驗(yàn)對(duì)該方法的可行性進(jìn)行了論證。在今后的研究中,嘗試改進(jìn)ResNet網(wǎng)絡(luò)模型結(jié)構(gòu)使其能夠涵蓋更多種類的病蟲害識(shí)別任務(wù),并將輕量化的ResNet模型移植部署到可移動(dòng)設(shè)備當(dāng)中,以實(shí)現(xiàn)對(duì)番茄作物種植園病蟲害的實(shí)時(shí)檢測和預(yù)警。