林建吾,張 欣*,陳孝玉龍,陳 洋,曹藤寶,喻殿智
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽(yáng) 550025;2.貴州大學(xué) 農(nóng)學(xué)院,貴州 貴陽(yáng) 550025)
農(nóng)業(yè)是我國(guó)國(guó)民經(jīng)濟(jì)建設(shè)和發(fā)展的基礎(chǔ)。番茄是我國(guó)最重要的經(jīng)濟(jì)農(nóng)作物之一,因富含人體所需的多種抗氧化物和礦物質(zhì)而得到人們的青睞。隨著社會(huì)發(fā)展,人們對(duì)番茄品質(zhì)和產(chǎn)量的要求逐年遞增,而番茄病害又是導(dǎo)致品質(zhì)和產(chǎn)量下滑的重要原因,所以對(duì)番茄病害的精準(zhǔn)識(shí)別和正確防治是目前解決此問題的有效手段之一。傳統(tǒng)的番茄病害識(shí)別往往得益于農(nóng)民的長(zhǎng)期經(jīng)驗(yàn),但是番茄病害種類繁多,通過人工觀察識(shí)別耗時(shí)耗力。因此,為了實(shí)現(xiàn)智能又精準(zhǔn)的農(nóng)業(yè)技術(shù),智能化農(nóng)作物病害識(shí)別的研究迫在眉睫。隨著近年卷積神經(jīng)網(wǎng)絡(luò)的迅速發(fā)展,農(nóng)作物病害識(shí)別取得了初步進(jìn)展,已逐步成為各高校與研究所的研究熱點(diǎn),并且已廣泛地運(yùn)用到農(nóng)作物病害圖像識(shí)別領(lǐng)域。Xiong等[1]設(shè)計(jì)了一種在保留植物疾病斑點(diǎn)的同時(shí)自動(dòng)去除圖像背景信息的自動(dòng)圖像分割算法,并結(jié)合MobileNet進(jìn)行病害識(shí)別分類。項(xiàng)小東等[2]在Xception的基礎(chǔ)上,提出了一種新的通道擴(kuò)增模塊,在10種不同植物的50類病害圖像中達(dá)到了91.9%的準(zhǔn)確率。高菊玲[3]首先提取病害葉片圖像的Gist特征以及VGG16模型提取的深度特征,通過深度典型相關(guān)分析(DCCA)發(fā)掘傳統(tǒng)特征與深度特征的相關(guān)性,從而提高識(shí)別效果。李立鵬等[4]提出了一種基于ResNet101和遷移學(xué)習(xí)的野生植物圖像識(shí)別方法,通過微調(diào)5組殘差模塊,準(zhǔn)確率較原模型提升了7個(gè)百分點(diǎn)。曾偉輝等[5]提出了一種可以應(yīng)用于實(shí)際環(huán)境農(nóng)作物病害識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)模型,并取得了較好的效果。方晨晨等[6]提出了一種新型番茄病害圖像識(shí)別方法,提升了模型準(zhǔn)確率的同時(shí)減少了模型所占內(nèi)存。Tm等[7]通過微調(diào)卷積神經(jīng)網(wǎng)絡(luò)模型LeNet參數(shù)來檢測(cè)和識(shí)別番茄葉片的病害。王東方等[8]提出了一種基于遷移學(xué)習(xí)用于不指定農(nóng)作物病害的識(shí)別模型,并且實(shí)際農(nóng)業(yè)生產(chǎn)環(huán)境下取得了很好的效果。Zhang等[9]構(gòu)建了一種改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)用于玉米病害的識(shí)別,平均準(zhǔn)確率達(dá)98%以上。上述研究都實(shí)現(xiàn)了對(duì)農(nóng)作物病害的識(shí)別,但仍然存在一些缺陷,比如識(shí)別精度還有待提升,算法模型較大導(dǎo)致無法有效地應(yīng)用于部分硬件設(shè)備。
因此,本文提出了一種基于輕量化卷積神經(jīng)網(wǎng)絡(luò)的番茄病害圖像識(shí)別方法,該方法在保證識(shí)別高精度的情況下極大地減少了模型所占內(nèi)存,使其能夠最大程度地應(yīng)用于性能不同的移動(dòng)終端和硬件平臺(tái),為智慧農(nóng)業(yè)科技的開展提供技術(shù)與方法。
本文的番茄病害數(shù)均來自于Plant Village數(shù)據(jù)集。Plant Village是一個(gè)公開數(shù)據(jù)庫(kù),收集了14種健康和病害植物,共計(jì)50 000張圖片,38種類別標(biāo)簽。其中番茄病害和健康標(biāo)簽累計(jì)10種,因數(shù)據(jù)標(biāo)簽數(shù)量分布不均,本文只選取了一種健康圖像和4種病害圖像類別標(biāo)簽作為數(shù)據(jù)集,其中番茄健康圖像1 591張,番茄細(xì)菌斑點(diǎn)病圖像2 127張,番茄晚疫病圖像1 909張,番茄斑枯病圖像1 771張,番茄二斑葉螨病圖像1 676張,番茄病害圖像樣例如圖1所示。
(a) 健康
為了保證訓(xùn)練集、驗(yàn)證集和測(cè)試集完全獨(dú)立、無重復(fù),同時(shí)為了提升模型的泛化能力,防止過擬合,先將選取的番茄病害數(shù)據(jù)集按8∶1∶1劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,再采用水平翻轉(zhuǎn)、旋轉(zhuǎn)和加椒鹽噪聲對(duì)訓(xùn)練集進(jìn)行數(shù)據(jù)擴(kuò)充,擴(kuò)充后的圖像樣例如圖2所示。若先擴(kuò)充整個(gè)數(shù)據(jù)集再進(jìn)行劃分,會(huì)導(dǎo)致同一張圖片增強(qiáng)后的多張圖片分別出現(xiàn)在訓(xùn)練集、驗(yàn)證集和測(cè)試集,造成數(shù)據(jù)的泄露,驗(yàn)證集和測(cè)試集的準(zhǔn)確率變得虛高,不能有效地表現(xiàn)出模型的真實(shí)性能。最后擴(kuò)充后的數(shù)據(jù)集總計(jì)33 970張圖片,且每張圖片的像素均為256 pixel×256 pixel。
(a) 原圖
MobileNetV1[10]由Google團(tuán)隊(duì)在2017年提出,用于部署在移動(dòng)終端和硬件平臺(tái)的輕量化卷積神經(jīng)網(wǎng)絡(luò),在精度略低于其他傳統(tǒng)模型的前提下,極大地減少了模型的計(jì)算量。Google團(tuán)隊(duì)相繼在2018年提出了比MobileNetV1識(shí)別精度更高、模型占用資源更小的MobileNetV2[11]。
MobileNetV2中使用深度可分離卷積(Depthwise Separable Convlution)代替了標(biāo)準(zhǔn)卷積(Standard Convlution),然后用于殘差模塊,可以極大地減少模型的大小和計(jì)算資源的消耗。標(biāo)準(zhǔn)卷積如圖3所示,假設(shè)輸入特征圖的shape為DF×DF×3,通過3個(gè)3×3的卷積核進(jìn)行標(biāo)準(zhǔn)卷積后,得到3個(gè)新的特征圖,于是該標(biāo)準(zhǔn)卷積的總計(jì)算量為3×3×3×3×DF×DF=81DF2。深度可分離卷積由逐深度卷積(Depthwise Convolution)和逐點(diǎn)1×1卷積(Pointwise Convolution)構(gòu)成,逐深度卷積就是每個(gè)卷積核的維度分別對(duì)應(yīng)輸入特征圖的每個(gè)維度進(jìn)行卷積,得到一組新的輸出;逐點(diǎn)1×1卷積則表示通過1×1卷積組合不同深度的卷積輸出,得到一組新的輸出。深度可分離卷積如圖4所示,若輸入的特征圖shape為DF×DF×3,先通過3個(gè)3×3逐深度卷積后,此時(shí)的計(jì)算量為3×3×3×DF×DF=27DF2,再通過3個(gè)逐點(diǎn)1×1卷積,此時(shí)深度可分離的總計(jì)算量為27DF2+3×3×DF×DF=36DF2。因此,深度可分離卷積相對(duì)于標(biāo)準(zhǔn)卷積減少的計(jì)算量為(36DF2)/(81DF2)=4/9,極大地減小了模型參數(shù),達(dá)到了輕量化的目的。
圖3 標(biāo)準(zhǔn)卷積Fig.3 Standard convolution
圖4 深度可分離卷積Fig.4 Deep separable convolution
深度可分離卷積組成了MobileNetV2的Bottleneck,Bottleneck網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。該結(jié)構(gòu)先通過1×1標(biāo)準(zhǔn)卷積進(jìn)行升維,再由3×3的深度可分離卷積進(jìn)行特征提取,大大降低了計(jì)算量,最后再由1×1標(biāo)準(zhǔn)的卷積進(jìn)行降維,從而形成倒殘差結(jié)構(gòu)。2個(gè)標(biāo)準(zhǔn)卷積分別使用線性整流函數(shù)ReLU6[12]和Linear函數(shù)進(jìn)行激活,深度可分離卷積使用標(biāo)準(zhǔn)化BN層[13]和線性整流函數(shù)ReLU6進(jìn)行正則化和激活。采用ReLU6代替ReLU是為了避免ReLU造成低維信息特征的大量損失。圖5中分別是步距為1和步距為2的Bottleneck網(wǎng)絡(luò)結(jié)構(gòu)圖,當(dāng)步距為1和輸入特征矩陣與輸出特征矩陣的shape相同,2個(gè)條件都滿足時(shí),才有捷徑分支(Shortcut)連接。
(a) Stride=1
MobileNetV2主干網(wǎng)絡(luò)由17個(gè)具有倒殘差結(jié)構(gòu)的Bottleneck、一個(gè)3×3標(biāo)準(zhǔn)卷積和一層平均池化層(Avgpool)構(gòu)成,網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,其中t為1×1卷積核升維擴(kuò)張的倍數(shù),c為輸出的深度,n為當(dāng)前結(jié)構(gòu)的重復(fù)次數(shù),s為步距。
表1 MobileNetV2網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 MobileNetV2 network structure
多數(shù)網(wǎng)絡(luò)采用交叉熵?fù)p失函數(shù)(Cross Entropy Loss)作為網(wǎng)絡(luò)訓(xùn)練的損失函數(shù):
CE(pt)=-lg(pt),
(1)
式中,pt為某個(gè)類別的類別分?jǐn)?shù)。從式(1)中可以發(fā)現(xiàn),交叉熵?fù)p失函數(shù)對(duì)于每個(gè)樣本的損失計(jì)算都相同。而本文采用了5種類別的番茄病害圖像,包含了1種健康類別和4種病害類別,識(shí)別簡(jiǎn)單和困難的樣本不平衡,數(shù)據(jù)集的多樣性導(dǎo)致網(wǎng)絡(luò)識(shí)別病害難度加大,交叉熵?fù)p失函數(shù)對(duì)于本文數(shù)據(jù)的處理并無優(yōu)勢(shì)。針對(duì)該問題,本文引入Focal Loss[14]代替交叉熵?fù)p失函數(shù),目的是解決難易樣本的數(shù)量不平衡,提升網(wǎng)絡(luò)的訓(xùn)練速度和精度。Focal Loss是在交叉熵的基礎(chǔ)上改進(jìn)而來,其核心思想是從損失函數(shù)中凸顯難分類的樣本的權(quán)重,使模型在訓(xùn)練時(shí)更加專注于難分類的樣本,表達(dá)式為:
FL(pt)=-(1-pt)γlg(pt),
(2)
式中,pt為某個(gè)類別的類別分?jǐn)?shù);γ為聚焦參數(shù);(1-pt)為調(diào)制系數(shù),用來調(diào)節(jié)不同難易樣本的權(quán)重。Focal Loss原理如圖6所示。
圖6 Focal Loss原理Fig.6 Principle diagram of Focal Loss
可以發(fā)現(xiàn),當(dāng)類別的概率逐步增大時(shí),即該類別屬于易分類的樣本時(shí),該類別的損失也開始逐漸減小,F(xiàn)ocal Loss通過調(diào)制系數(shù)來減小易分類樣本的損失權(quán)重,增加難分類的損失權(quán)重達(dá)到平衡樣本的目的。圖6中還展示了不同聚焦參數(shù)的損失曲線,若聚焦參數(shù)過大,損失下降過快;聚焦參數(shù)過小,損失下降過慢,效果均不理想。所以,本文選擇了聚焦參數(shù)為1的Focal Loss作為最終的損失函數(shù)。在本文中,使用Focal Loss聚焦于難分類的番茄病害圖像樣本,減少易分類番茄病害樣本的權(quán)重,從而實(shí)現(xiàn)提升識(shí)別準(zhǔn)確率的目的。
遷移學(xué)習(xí)(Transform Learning)[15]是指通過將已經(jīng)學(xué)習(xí)過的相關(guān)任務(wù)中的知識(shí)轉(zhuǎn)移到新的任務(wù)中來促進(jìn)學(xué)習(xí)。圖像分類的任務(wù)具有相關(guān)性,采用遷移學(xué)習(xí)可以有效地促進(jìn)網(wǎng)絡(luò)收斂,提升準(zhǔn)確率,防止過擬合,圖像分類實(shí)現(xiàn)遷移學(xué)習(xí)的方式主要有以下3種:
① 載入權(quán)重后訓(xùn)練所有參數(shù)。
② 載入權(quán)重后只訓(xùn)練最后幾層參數(shù)。
③ 載入權(quán)重后在原網(wǎng)絡(luò)基礎(chǔ)上再添加一個(gè)全連接層,僅訓(xùn)練添加的全連接層。
②和③兩種訓(xùn)練方式凍結(jié)層數(shù)過多,網(wǎng)絡(luò)訓(xùn)練的效果不理想,所以本文只采用載入權(quán)重后訓(xùn)練所有參數(shù)來構(gòu)建番茄病害識(shí)別模型。
先將Focal Loss引入MobileNetV2,接著在全連接層添加Dropout層減少模型過擬合,最后將MobileNetV2在ImageNet數(shù)據(jù)集上訓(xùn)練好的權(quán)重參數(shù)遷移到改進(jìn)好的模型中完成模型的搭建。構(gòu)建的番茄病害圖像識(shí)別網(wǎng)絡(luò)FTL-MobileNet如圖7所示。
圖7 FTL-MobileNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 FTL-MobileNet network structure
當(dāng)權(quán)重載入網(wǎng)絡(luò)模型后,輸入的RGB圖像的分辨率會(huì)被統(tǒng)一縮放為224 pixel×224 pixel,為了提升網(wǎng)絡(luò)訓(xùn)練效率,需要對(duì)像素做歸一化處理。處理后的圖像首先通過一個(gè)標(biāo)準(zhǔn)卷積和線性整流函數(shù)ReLU6提取圖像特征,接著通過17個(gè)Bottleneck提取特征,得到的特征圖再一次經(jīng)過標(biāo)準(zhǔn)卷積和ReLU6提取高維特征,ReLU6同時(shí)保證低維特征的不損失。然后,由自適應(yīng)平均池化得到shape為1×1×1 280的特征圖,將其展平(Flaten)后送入全連接神經(jīng)網(wǎng)絡(luò),并在全連接層添加Dropout。Dropout即隨機(jī)失活部分神經(jīng)元,使其在反向傳播時(shí)暫停更新部分參數(shù),增加模型的泛化能力。由Sotfmax進(jìn)行番茄病害圖像的分類,分類好的圖像與原標(biāo)簽采用Focal Loss計(jì)算并進(jìn)行反向傳播,直到模型的準(zhǔn)確率趨近擬合。
采用分類準(zhǔn)確率(Accuracy)、模型所占內(nèi)存大小和單張圖片耗時(shí)作為評(píng)估指標(biāo),分類準(zhǔn)確率高、模型所占內(nèi)存小以及單張圖片耗時(shí)低在一定程度上代表模型好。其中分類準(zhǔn)確率為:
(3)
式中,TP表示正樣本被正確地劃分為正樣本的個(gè)數(shù);FP表示負(fù)樣本被錯(cuò)誤地劃分為正樣本的個(gè)數(shù);FN表示正樣本被錯(cuò)誤地劃分為負(fù)樣本的個(gè)數(shù);TN表示負(fù)樣本被正確地劃分為負(fù)樣本的個(gè)數(shù)。
實(shí)驗(yàn)配置環(huán)境如下:Intel(R) Xeon(R) W-2235 CPU @ 3.80 GHz處理器;NVIDIA GeForce GTX 2080Ti顯卡;Windows10專業(yè)版操作系統(tǒng);編程語(yǔ)言為Python 3.8.8;深度學(xué)習(xí)開源框架為PyTorch 1.6.0。
FTL-MobileNet以32 160張番茄病害圖像用于訓(xùn)練,905張番茄病害圖像用于驗(yàn)證,905張番茄病害圖像用于測(cè)試,訓(xùn)練集、驗(yàn)證集和測(cè)試集分布如表2所示。同時(shí),以MobileNetV2,ResNet50[16],VGG16[17]和GoogLeNet[18]作為對(duì)照組實(shí)驗(yàn),對(duì)照組采用交叉熵作為損失函數(shù)。優(yōu)化器選用自適應(yīng)動(dòng)量?jī)?yōu)化器(Adam),初始學(xué)習(xí)率設(shè)置為0.000 1。Adam[19]是利用梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,優(yōu)點(diǎn)主要在于經(jīng)過偏置校正后,每一次迭代學(xué)習(xí)率都有確定范圍,使得參數(shù)比較平穩(wěn)。訓(xùn)練集和驗(yàn)證集Batch size均設(shè)置為32,迭代次數(shù)設(shè)置為30,F(xiàn)TL-MobileNet網(wǎng)絡(luò)的Dropout設(shè)置為0.2,其他模型均為默認(rèn)參數(shù)。訓(xùn)練過程中保存驗(yàn)證集準(zhǔn)確率最高時(shí)的權(quán)重文件,用于測(cè)試集預(yù)測(cè)。
表2 數(shù)據(jù)集分布表Tab.2 Dataset distribution
FTL-MobileNet,MobileNetV2,ResNet50,VGG16和GoogLeNet分別迭代30輪,不同模型在訓(xùn)練集與驗(yàn)證集上得到準(zhǔn)確率和損失的變化曲線如圖8所示。從訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率變化可以看出,F(xiàn)TL-MobileNet識(shí)別準(zhǔn)確率最高,其次是GoogLeNet,VGG16和ResNet50,準(zhǔn)確率最低的是MobileNetV2。以網(wǎng)絡(luò)訓(xùn)練的收斂速度來看,F(xiàn)TL-MobileNet在迭代3輪時(shí)完全收斂,其余網(wǎng)絡(luò)模型則在迭代大約19輪時(shí)完全收斂。訓(xùn)練集損失5種網(wǎng)絡(luò)模型都較為穩(wěn)定,F(xiàn)TL-MobileNet平均損失最低,GoogLeNet在訓(xùn)練集上平均損失最高,在驗(yàn)證集損失變化曲線圖中,5種網(wǎng)絡(luò)模型均有波動(dòng),F(xiàn)TL-MobileNet僅有輕微波動(dòng),驗(yàn)證損失波動(dòng)最大的是ResNet50。綜上可以得出,本文提出的FTL-MobileNet比MobileNetV2,ResNet50,VGG16和GoogLeNet在訓(xùn)練集與驗(yàn)證集上識(shí)別率更高,完全收斂需要的迭代次數(shù)更少,且具有較強(qiáng)的魯棒性,接下來繼續(xù)在測(cè)試集上測(cè)試模型性能。
不同網(wǎng)絡(luò)模型在測(cè)試集上識(shí)別番茄病害圖像的準(zhǔn)確率以及模型所占內(nèi)存大小如表3所示。可以發(fā)現(xiàn),F(xiàn)TL-MobileNet在測(cè)試集上的識(shí)別準(zhǔn)確率可以達(dá)到99.87%,在與MobileNetV2模型大小一樣的情況下,改進(jìn)過的網(wǎng)絡(luò)識(shí)別準(zhǔn)確率提升了1.25%。與ResNet50,VGG16和GoogLeNet相比,F(xiàn)TL-MobileNet識(shí)別準(zhǔn)確率有小幅度提升,但模型大小卻遠(yuǎn)遠(yuǎn)小于ResNet50,VGG16和GoogLeNet,這表明改進(jìn)后的網(wǎng)絡(luò)在一定程度上提升了番茄病害圖像識(shí)別的效果,而且在具備更好的泛化能力的同時(shí)還大大降低了模型所占內(nèi)存。
(a) 訓(xùn)練集準(zhǔn)確率隨迭代次數(shù)的變化曲線
表3 不同模型的性能比較Tab.3 Performance comparison of different models
為了驗(yàn)證FTL-MobileNet在單張圖片的耗時(shí)上也具有一定優(yōu)勢(shì),通過輸入不同尺寸的測(cè)試集圖片,對(duì)模型的時(shí)效性進(jìn)行測(cè)試,5種網(wǎng)絡(luò)模型都對(duì)測(cè)試集的多張圖片進(jìn)行測(cè)試取平均值,不同輸入圖像分辨率下的單張圖片耗時(shí)結(jié)果如表4所示??梢园l(fā)現(xiàn),F(xiàn)TL-MobileNet在輸入大小為128 pixel×128 pixel時(shí)耗時(shí)最低,僅需0.979 s。MobileNetV2在輸入大小為224 pixel×224 pixel和448 pixel×448 pixel時(shí)耗時(shí)最低,但FTL-MobileNet的準(zhǔn)確率高于MobileNetV2,所以綜合考慮,F(xiàn)TL-MobileNet在番茄病害圖像的識(shí)別中具有更好的性能優(yōu)勢(shì)。
表4 不同輸入圖像分辨率下的單張圖片耗時(shí)比較Tab.4 Time-consuming comparison of a single image with different input image resolutions 單位:s
針對(duì)番茄病害圖像識(shí)別的特點(diǎn),提出了一種輕量化卷積神經(jīng)網(wǎng)絡(luò)模型FTL-MobileNet。該模型通過引入Focal Loss損失函數(shù)、Dropout和遷移學(xué)習(xí)對(duì)MobileNetV2進(jìn)行改進(jìn),在Plant Villae數(shù)據(jù)集上與GoogLeNet,VGG16,ResNet50和MobileNetV2進(jìn)行實(shí)驗(yàn)對(duì)比。結(jié)果表明,F(xiàn)TL-MobileNet具有收斂速度快、識(shí)別準(zhǔn)確率高、泛化能力強(qiáng)、模型所占空間小和單張圖片耗時(shí)低等優(yōu)勢(shì),能夠滿足番茄病害識(shí)別模型部署于各種移動(dòng)設(shè)備和嵌入式設(shè)備的要求。提出的輕量化模型也有一些不足之處,使用的公共數(shù)據(jù)集背景過于簡(jiǎn)單。接下來將針對(duì)復(fù)雜環(huán)境下的番茄病害圖像,不斷地優(yōu)化模型的性能,并將其部署于設(shè)備中用于田間實(shí)際的番茄病害識(shí)別。