王哲豪 范麗麗 何前
摘要:番茄葉部病害嚴(yán)重影響了番茄的產(chǎn)量和質(zhì)量,為實現(xiàn)在移動設(shè)備實時對番茄進行病害識別,提高番茄的產(chǎn)量,減少種植者的損失。本研究提出將輕量級網(wǎng)絡(luò)模型MobileNet V2和遷移學(xué)習(xí)的方式相結(jié)合,對番茄早疫病、番茄細(xì)菌性斑疹病、番茄晚疫病、番茄葉霉病、番茄斑枯病、番茄紅蜘蛛病、番茄褐斑病、番茄花葉病、番茄黃化曲葉病等9種葉部病害圖像以及健康番茄葉片圖像進行分類識別,首先將數(shù)據(jù)集按照9 ∶?1的比例分為訓(xùn)練集和驗證集,對于訓(xùn)練模型根據(jù)遷移學(xué)習(xí)的方式分別采用不凍結(jié)卷積層、凍結(jié)部分卷積層、全部凍結(jié)卷積層的方式獲得3種模型,然后在模型最后加上2層全連接層并用Dropout層防止過擬合,接著通過Softmax層輸出實現(xiàn)對番茄病害圖像分類識別,最后利用驗證集來統(tǒng)計模型的準(zhǔn)確率和損失值。其中,凍結(jié)部分卷積層準(zhǔn)確率最高,達(dá)到93.67%。另外,通過試驗對比傳統(tǒng)網(wǎng)絡(luò)VGG16、ResNet50訓(xùn)練集和驗證集的準(zhǔn)確率、損失值及運行時間,其中遷移學(xué)習(xí)的MobileNet V2模型的準(zhǔn)確率最高,運行時間最短。該研究提出的基于MobileNet V2和遷移學(xué)習(xí)的番茄病害識別研究方法識別效果較佳,速度較快,為在移動設(shè)備實時對番茄病害識別提供了技術(shù)支持。
關(guān)鍵詞:MobileNet V2;遷移學(xué)習(xí);病害識別;番茄
中圖分類號:TP391.41??文獻(xiàn)標(biāo)志碼:A??文章編號:1002-1302(2023)09-0215-07
基金項目:湖北省教育廳創(chuàng)新團隊項目(編號:T2021009);國家自然科學(xué)基金(編號:11871388)。
作者簡介:王哲豪(1996—),男,湖北武漢人,碩士研究生,研究方向為農(nóng)業(yè)圖像處理。E-mail:1030922418@qq.com。
通信作者:范麗麗,博士,副教授,碩士生導(dǎo)師,從事偏微分方程方面的研究。E-mail:23404587@qq.com。
我國自古以來都是農(nóng)業(yè)大國,目前我國農(nóng)業(yè)經(jīng)濟十分發(fā)達(dá),是我國國民經(jīng)濟中的中流砥柱。番茄作為我國主要農(nóng)作物之一,無論是出口還是在國內(nèi)都有相當(dāng)大的市場。番茄整個生長周期都會受到不同病害的侵襲,其中在番茄葉部的病害對番茄有較為嚴(yán)重的影響[1],番茄葉部病害種類繁多,包括番茄早疫病、番茄細(xì)菌性斑疹病、番茄晚疫病、番茄葉霉病、番茄斑枯病、番茄紅蜘蛛病、番茄褐斑病、番茄花葉病、番茄黃化曲葉病,每種病害都會直接影響番茄的質(zhì)量和產(chǎn)量。因此對番茄病害的研究與防治就顯得十分有必要。
近年來,隨著機器學(xué)習(xí)的不斷發(fā)展壯大,將機器學(xué)習(xí)與農(nóng)業(yè)結(jié)合越來越普遍。對農(nóng)作物病害識別也從傳統(tǒng)方法[2]慢慢過渡到機器學(xué)習(xí)相關(guān)方法。趙小虎等將改進的U-Net網(wǎng)絡(luò)運用于番茄分割,獲得了較好的分類并為后面識別打下了基礎(chǔ)[3]。賈兆紅等提出EFCA注意力模塊再通過最大池化和concat操作,將番茄葉面型病害分類準(zhǔn)確度提高到了86.69%[4]。張洪駿等分別研究了VGG16、InceptionV3、ResNet50、MobileNet V2對番茄病害的識別,不考慮時間成本,準(zhǔn)確率達(dá)到了94%[5]。胡玲艷等利用輕量級模型SqueezeNet對番茄病害進行識別,并對比了與LeNet、MobileNet模型的差異,證明了輕量級模型的實效性和準(zhǔn)確率[6]。方晨晨等采用多尺度卷積代替?zhèn)鹘y(tǒng)卷積,解決了網(wǎng)絡(luò)過深引起的退化問題,最終訓(xùn)練后的模型權(quán)重只有19 MB,準(zhǔn)確率達(dá)到了98.58%,可以有效識別出番茄病害圖像[7]。遷移學(xué)習(xí)作為深度學(xué)習(xí)常用的方法,被廣泛地運用于農(nóng)作物病害識別研究[8-11],包括水稻、玉米、茶葉等。但是基于遷移學(xué)習(xí)和輕量級模型MobileNet V2以實現(xiàn)移動端設(shè)備實時對番茄病害識別的研究較少。
番茄葉部病害種類多,病害之間相似度高,用傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,簡稱CNN)網(wǎng)絡(luò)訓(xùn)練需要花費大量時間、精力且準(zhǔn)確率不高,不能很好地結(jié)合于實際情況。因此,本研究提出基于MobileNet V2和遷移學(xué)習(xí)的番茄病害識別研究方法,并通過試驗驗證其有效性。
1?數(shù)據(jù)集
本研究的數(shù)據(jù)集選自Plant-Village數(shù)據(jù)集,包括54 303張健康和染病葉片的圖片,分為38個類別。本研究選取其中番茄健康和染病圖片,分為10個類別,分別是番茄健康葉片圖片、番茄早疫病圖片、番茄細(xì)菌性斑疹病圖片、番茄晚疫病圖片、番茄葉霉病圖片、番茄斑枯病圖片、番茄紅蜘蛛病圖片、番茄褐斑病圖片、番茄花葉病圖片、番茄黃化曲葉病圖片,共有18 835張照片。每個類別按照9 ∶?1劃分為訓(xùn)練集和驗證集,具體的數(shù)據(jù)集數(shù)量見表1,部分示例圖像見圖1。
由表1可知,番茄葉部病害數(shù)據(jù)集數(shù)量偏少且分布不均勻,模型在訓(xùn)練過程中將不可避免地將數(shù)據(jù)集中數(shù)量少的病害分類到數(shù)據(jù)集中數(shù)量多的病害中。除此之外,由圖1可知,番茄細(xì)菌性斑疹病和番茄健康葉片在形狀、紋理上非常相似,番茄紅蜘蛛病和番茄褐斑病在外觀、顏色上同樣非常相似,這就導(dǎo)致模型直接訓(xùn)練會難以區(qū)分。
2?MobileNet V2
2.1?模型提出
隨著計算機視覺領(lǐng)域的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)也在不斷地迭代更新。為追求更高的準(zhǔn)確率,相繼出現(xiàn)了AlexNet、VGG、NiN、GooLeNet、ResNet。卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)在不斷加深,內(nèi)存需求不斷增大,計算量也在成倍增加[12]。比如,VGG16權(quán)重文件大小就高達(dá)490 M,ResNet50更是達(dá)到了644 M。
如此巨大的內(nèi)存需求和計算量導(dǎo)致這些網(wǎng)絡(luò)模型局限于實驗室,不能在移動設(shè)備和嵌入式設(shè)備運行,由此Google團隊在2017年提出專注于移動端和嵌入式設(shè)備中的輕量級CNN——MobileNet V1。
通過文獻(xiàn)[13]可知,MobileNet V1模型參數(shù)只有VGG16的1/32,準(zhǔn)確率卻只下降了0.9%。模型最大的創(chuàng)新點就是提出了深度可分離卷積(depthwise separable convolution)。深度可分離卷積包括逐通道卷積(depthwise convolution,簡稱DW)和逐點卷積(pointwise convolution,簡稱PW)。
圖2中傳統(tǒng)卷積,卷積核的channel等于輸入特征圖的channel,輸出特征矩陣的channel等于卷積核個數(shù)。圖3中深度可分離卷積前半部分是逐通道卷積后半部分是逐點卷積。其中逐通道卷積和傳統(tǒng)卷積的區(qū)別在于,卷積核channel等于1,輸入特征矩陣channel等于卷積核個數(shù)等于輸出特征矩陣channel。
假設(shè)輸入特征矩陣的高和寬為DF,卷積核的高和寬為DK,輸入特征矩陣的深度為M,輸出特征矩陣的深度為N。對于普通卷積而言計算量如下:
對于深度可分離卷積,計算量如下:
兩者對比:
深度可分離卷積計算量普通卷積計算量=DK×DK×M×DF×DF+M×N×DF×DFDK×DK×M×N×DF×DF=1N+1DK×DK。(3)
而在MobileNet網(wǎng)絡(luò)中卷積核大小一般取值為3×3,即DK=3,同時N取值一般較大,則由公式(3)推導(dǎo)得到兩者比值為1N+19,使用深度可分離卷積計算量是傳統(tǒng)卷積計算量的1/9到1/8,大大減少了運算量和參數(shù)數(shù)量。
本研究還提出寬度因子α和分辨率因子ρ,通過調(diào)整寬度乘法器和分辨率乘法器來權(quán)衡網(wǎng)絡(luò)計算量和準(zhǔn)確率。具體計算量如下:
權(quán)衡后的深度可分離卷積計算量=DK×DK×αM×ρDF×ρDF+αM×ρN×ρDF×ρDF。(4)
對于MobileNet V1網(wǎng)絡(luò)模型有一些顯而易見的缺點,比如V1結(jié)構(gòu)相對簡單沒有圖形復(fù)用、在處理低維度問題上使用ReLU函數(shù)容易造成信息丟失,針對以上問題Google團隊在2018年提出了MobileNet V2網(wǎng)絡(luò)模型,其中最大創(chuàng)新點是提出了倒殘差結(jié)構(gòu)(inverted residual)以及在倒殘差結(jié)構(gòu)最后一層用線性函數(shù)(linear bottlenecks)[14-15]代替ReLU激活函數(shù)。
2.2?模型結(jié)構(gòu)
MobileNet V2借鑒了ResNet中的殘差模塊,在ResNet殘差結(jié)構(gòu)先降維,再卷積,最后升維。而根據(jù)深度可分離卷積計算量小的特點提出的倒殘差結(jié)構(gòu),先通過1×1的卷積核升維操作,再通過3×3深度可分離卷積,最后通過1×1卷積降維。以較小的計算量獲得較好的性能。
由圖4可知,倒殘差結(jié)構(gòu)分為步距為1和步距為2等2種情況。其中,只有當(dāng)步距等于1且輸入特征矩陣和輸出特征矩陣大小和深度相同才有捷徑分支連接。由圖4還可以看出,在倒殘差結(jié)構(gòu)中后面采用線性激活函數(shù)代替ReLU激活函數(shù),這是因為對于低維運算ReLU容易造成信息損失。同時對于移動端和嵌入式設(shè)備低精度float16/int8 也能反映較好的數(shù)值分辨率,在倒殘差結(jié)構(gòu)中使用ReLU6激活函數(shù)來代替ReLU激活函數(shù),ReLU6激活函數(shù)見圖5。
最終通過類似于ResNet網(wǎng)絡(luò)不斷堆疊殘差結(jié)構(gòu)形成MobileNet V2模型。由表2可知,t表示擴展因子,c表示輸出特征矩陣深度,n表示bottleneck次數(shù),s是步距,k是深度。MobileNet V2模型首先通過一層卷積層,接著不斷通過DW卷積,通過平均池化下采樣,最后通過類似于全連接層的卷積層輸出。
3?遷移學(xué)習(xí)
在傳統(tǒng)模型訓(xùn)練中往往不可避免會出現(xiàn)以下幾個問題:(1)數(shù)據(jù)量少,數(shù)據(jù)量分布不均勻,導(dǎo)致過擬合。(2)需要不斷地調(diào)整各種參數(shù),效率低且花費精力。(3)面對模型層數(shù)深,計算量大,耗費時間長。面對以上問題提出了遷移學(xué)習(xí),遷移學(xué)習(xí)可以簡化模型,加快模型收斂,減少數(shù)據(jù)量對訓(xùn)練的依賴[16-18]。遷移學(xué)習(xí)已經(jīng)成為深度學(xué)習(xí)中十分常見的方法之一。
遷移學(xué)習(xí)使用方法是相同模型下,將已經(jīng)訓(xùn)練好的模型參數(shù)引入到自己需要訓(xùn)練的模型中。模型訓(xùn)練本質(zhì)就是對數(shù)據(jù)進行特征提取,以此讓計算機更好地識別。具體過程是對于一個給定的深度神經(jīng)網(wǎng)絡(luò),用數(shù)據(jù)集去訓(xùn)練它,在學(xué)習(xí)過程中,第1層學(xué)會了識別一些很簡單的特征,緊接著后面的層將開始對這些簡單特征進行組合。隨著特征的增加,就能得到很復(fù)雜的特征表示。也就是說底層這些簡單的特征是相通的,而遷移學(xué)習(xí)就是要遷移這些共性的信息和特征從而避免再次學(xué)習(xí)到這類知識,實現(xiàn)快速學(xué)習(xí)。反映到具體模型訓(xùn)練中就是權(quán)重參數(shù)和偏置參數(shù)。
遷移學(xué)習(xí)結(jié)合到模型訓(xùn)練中主要分為3種情況:(1)不凍結(jié)。遷移卷積層參數(shù)作為模型初始化繼續(xù)訓(xùn)練。載入權(quán)重之后,只作為預(yù)訓(xùn)練和初始化并重新訓(xùn)練所有參數(shù)。(2)部分凍結(jié)。凍結(jié)一部分卷積層,只對另一部分卷積層訓(xùn)練。(3)全部凍結(jié)。直接將已經(jīng)訓(xùn)練好的模型參數(shù)作為自己的模型參數(shù)。在遷移策略中往往在模型的最后根據(jù)自己的分類個數(shù)結(jié)合以上3種情況設(shè)計不同的輸出層。
本研究的遷移學(xué)習(xí)是基于TensorFlow官方提供的MobileNet V2 1.0 224預(yù)訓(xùn)練模型權(quán)重。在遷移之前首先需要將數(shù)據(jù)做和TensorFlow模型權(quán)重一樣的預(yù)處理,將圖片從[0,255]分布轉(zhuǎn)化到[0,1]之間,然后減去0.5,最后再乘以2。然后根據(jù)以上3種情況對模型進行凍結(jié)訓(xùn)練,具體見圖6。
由圖6可知,本研究在利用遷移學(xué)習(xí)方法之后在模型后面加入了2層全連接層,并在最后利用Softmax函數(shù)分類。情況二部分凍結(jié),選擇在模型倒殘差模塊訓(xùn)練中凍結(jié)一部分卷積層,訓(xùn)練一部分模型權(quán)重參數(shù)。
4?結(jié)果與分析
4.1?試驗環(huán)境
試驗硬件環(huán)境:CPU為Intel CoreTM i7-10750H CPU @ 2.60 GHz 2.59 GHz;RAM為16.0 GB。軟件環(huán)境:64 位操作系統(tǒng),基于 ×64 的處理器;IDE為PyCharm;軟件環(huán)境為Python 3.7;學(xué)習(xí)框架為TensorFlow 2.0,Keras 2.3.1。
4.2?試驗方法與結(jié)果
為了驗證本研究選取的MobileNet V2模型對番茄病害識別的準(zhǔn)確性與實時性,選取準(zhǔn)確率優(yōu)秀的傳統(tǒng)網(wǎng)絡(luò)模型VGG16網(wǎng)絡(luò)模型和ResNet50網(wǎng)絡(luò)模型進行對比試驗。對3種網(wǎng)絡(luò)都是采取全部凍結(jié)的遷移學(xué)習(xí)方式,并且在模型最后加上2層全連接層,最后利用Softmax分類輸出,進行訓(xùn)練,batch設(shè)置為16,epochs設(shè)置為50,學(xué)習(xí)率設(shè)置為0.000 5,試驗結(jié)果見圖7、圖8、圖9、表3。
由圖7、圖9可知,VGG16模型和MobileNet V2模型收斂速度快,準(zhǔn)確率好。而在圖8中ResNet50模型,隨著迭代次數(shù)的增加,訓(xùn)練集準(zhǔn)確率很高但是驗證集準(zhǔn)確率卻沒有提升。由表3可知,MobileNet V2模型無論在訓(xùn)練集還是驗證集的準(zhǔn)確率和損失值都優(yōu)于VGG16模型,且MobileNet V2模型訓(xùn)練時間明顯更短。
表4是分辨率因子ρ取224,不同寬度因子α對模型性能和訓(xùn)練時間的影響;表5是寬度因子α取1.0,不同分辨率因子ρ對模型性能和訓(xùn)練時間的影響。
由表4和表5可知,寬度因子取1.0,分辨率因子取224,模型準(zhǔn)確率最高,雖然減少寬度因子和分辨率因子的取值可以降低運行時間,但是準(zhǔn)確率也會有不同程度的降低,況且輕量級模型MobileNet
V2的運行時間本來就比傳統(tǒng)模型短很多,每個epoch訓(xùn)練時間只有122 s。相比于準(zhǔn)確率對模型的影響,運行時間并沒有明顯降低,因此對于本試驗?zāi)P驮谶x取寬度因子1.0,分辨率因子224情況下表現(xiàn)最好。
混淆矩陣是結(jié)果的一種指標(biāo),可以更加直觀地看到預(yù)測結(jié)果,對于3種遷移學(xué)習(xí)方式,batch設(shè)置為16,epochs設(shè)置為50,學(xué)習(xí)率設(shè)置為0.000 5,寬度因子設(shè)置為1.0,分辨率因子設(shè)置為224?;煜仃囈妶D10至圖12,準(zhǔn)確率和損失值見表6。
由圖10、圖12可知,對于番茄細(xì)菌斑疹病和健康番茄的分類效果并不好,除此之外對番茄紅蜘蛛病和番茄褐斑病的分類效果也比較差。由圖11可知,部分凍結(jié)卷積層中番茄早疫病和番茄葉霉病的分類完全正確,而且番茄斑枯病和番茄花葉病也有較好的分類效果。
由表6可知,本試驗?zāi)P蛯τ诓糠謨鼋Y(jié)的遷移學(xué)習(xí)方式表現(xiàn)效果最好,驗證集準(zhǔn)確率最高,達(dá)到了93.67%,能夠有效地對番茄葉部病害進行識別。
5?結(jié)論
針對移動端和嵌入式設(shè)備能夠快速準(zhǔn)確識別番茄病害,本研究提出了基于MobileNet V2和遷移學(xué)習(xí)的番茄病害識別研究方法。利用遷移學(xué)習(xí)對淺層特征的提取,對MobileNet V2模型卷積層參數(shù)部分凍結(jié),部分保留,并在模型最后加上2層全連接層,1層Softmax層輸出,實現(xiàn)模型對番茄病害區(qū)域的快速訓(xùn)練與準(zhǔn)確識別。試驗結(jié)果表明,本研究對番茄病害識效果較好,準(zhǔn)確率達(dá)到了93.67%,同時滿足了在移動設(shè)備上實時識別。但本試驗通過測試發(fā)現(xiàn)識別準(zhǔn)確率還有進一步提升的空間。因此下一步研究工作考慮細(xì)化遷移學(xué)習(xí)對模型的影響,進一步提高準(zhǔn)確率以滿足商業(yè)需求。
參考文獻(xiàn):
[1]Chandra N V,Megha Reddy K,Ashish Sushanth G,et al. A versatile approach based on convolutional neural networks for early identification of diseases in tomato plants[J]. International Journal of Wavelets,Multiresolution and Information Processing,2022,20(1):12-21.
[2]張?寧,吳華瑞,韓?笑,等. 基于多尺度和注意力機制的番茄病害識別方法[J]. 浙江農(nóng)業(yè)學(xué)報,2021,33(7):1329-1338.
[3]趙小虎,李?曉,葉?圣,等. 基于改進U-Net網(wǎng)絡(luò)的多尺度番茄病害分割算法[J]. 計算機工程與應(yīng)用,2022,58(10):216-223.
[4]賈兆紅,張袁源,王海濤,等. 基于Res2Net和雙線性注意力的番茄病害時期識別方法[J]. 農(nóng)業(yè)機械學(xué)報,2022,53(7):259-266.
[5]張洪駿. 基于CNN的番茄葉片病害圖像識別方法研究[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2021.
[6]胡玲艷,周?婷,許?巍,等. 面向番茄病害識別的改進型SqueezeNet輕量級模型[J]. 鄭州大學(xué)學(xué)報(理學(xué)版),2022,54(4):71-77.
[7]方晨晨,石繁槐. 基于改進深度殘差網(wǎng)絡(luò)的番茄病害圖像識別[J]. 計算機應(yīng)用,2020,40(增刊1):203-208.
[8]王忠培,張?萌,董?偉,等. 基于遷移學(xué)習(xí)的多模型水稻病害識別方法研究[J]. 安徽農(nóng)業(yè)科學(xué),2021,49(20):236-242.
[9]董?萍,衛(wèi)夢華,時?雷,等. 遷移學(xué)習(xí)在玉米葉片病害識別中的研究與應(yīng)用[J]. 中國農(nóng)機化學(xué)報,2022,43(3):146-152.
[10]徐?杰. 基于ResNet的茶葉病害識別系統(tǒng)設(shè)計與實現(xiàn)[J]. 電子技術(shù)與軟件工程,2022(12):167-170.
[11]周?維,牛永真,王亞煒,等. 基于改進的YOLOv4-GhostNet水稻病蟲害識別方法[J]. 江蘇農(nóng)業(yè)學(xué)報,2022,38(3):685-695.
[12]孫?俊,朱偉棟,羅元秋,等. 基于改進MobileNet-V2的田間農(nóng)作物葉片病害識別[J]. 農(nóng)業(yè)工程學(xué)報,2021,37(22):161-169.
[13]孟?琭,徐?磊,郭嘉陽.一種基于改進的MobileNet V2網(wǎng)絡(luò)語義分割算法[J]. 電子學(xué)報,2020,48(9):1769-1776.
[14]劉合兵,魯?笛,席?磊. 基于MobileNet V2和遷移學(xué)習(xí)的玉米病害識別研究[J]. 河南農(nóng)業(yè)大學(xué)學(xué)報,2022,56(6):1041-1051.
[15]Shahi T B,Sitaula C,Neupane A,et al. Fruit classification using attention-based MobileNet V2 for industrial applications[J]. PLoS One,2022,17(2):e0264586.
[16]林?禹. 深度神經(jīng)網(wǎng)絡(luò)傳遞遷移學(xué)習(xí)遙感影像分類[D]. 阜新:遼寧工程技術(shù)大學(xué),2021.
[17]馬?錚. 基于深度-遷移學(xué)習(xí)的玉米葉部病害識別方法研究[D]. 哈爾濱:東北農(nóng)業(yè)大學(xué),2021.
[18]周宏威,沈恒宇,袁新佩,等. 基于遷移學(xué)習(xí)的蘋果樹葉片病蟲害識別方法研究[J]. 中國農(nóng)機化學(xué)報,2021,42(11):151-158.