馬 宇,單玉剛,袁 杰
(1.新疆大學(xué)電氣工程學(xué)院,烏魯木齊 830001;2.湖北文理學(xué)院教育學(xué)院,襄陽 441053)
番茄病害問題是影響番茄生長發(fā)育的主要因素之一,病害問題導(dǎo)致番茄的質(zhì)量和產(chǎn)量嚴(yán)重下降,同時(shí)使農(nóng)民遭受嚴(yán)重的經(jīng)濟(jì)損失,由于番茄病害的多樣性和復(fù)雜性,人工識(shí)別的方法具有成本高、主觀性強(qiáng)、準(zhǔn)確率低等問題。隨著計(jì)算機(jī)視覺及深度學(xué)習(xí)的不斷發(fā)展,人工智能不斷應(yīng)用于農(nóng)作物采摘、生長狀況實(shí)景監(jiān)測(cè)和病害識(shí)別等方面,基于多層卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)的深度學(xué)習(xí)方法在番茄病害識(shí)別取得了較大進(jìn)步,中外針對(duì)農(nóng)作物病害識(shí)別提出許多有效的方法。龍滿生等[1]提出一種對(duì)油茶葉片圖像進(jìn)行閾值分割、旋轉(zhuǎn)對(duì)齊、尺度縮放等預(yù)處理后在遷移學(xué)習(xí)和數(shù)據(jù)擴(kuò)充方式下的油茶病害圖像分類,分類準(zhǔn)確率高達(dá)96.53%。郭小清等[2]結(jié)合番茄葉部病害的不同圖像特點(diǎn),采用不同尺度的卷積核對(duì)圖像提取特征,去除局部響應(yīng)歸一化層,設(shè)計(jì)出一種基于AlexNet的多感受野識(shí)別模型,對(duì)番茄病害的平均識(shí)別準(zhǔn)確率達(dá)到了92.7%。董松等[3]提出一種基于過渡區(qū)研究的黃瓜病害識(shí)別方法,根據(jù)黃瓜病害圖像的病斑區(qū)和過渡區(qū)在顏色和形狀方面的22個(gè)特征數(shù)據(jù),使用支持向量機(jī)(support vector machine,SVM)對(duì)霜霉病、白粉病和靶斑病3種病害的識(shí)別率達(dá)到了83.3%、76.7%和90.0%。劉翠翠等[4]以川麥冬葉部黑斑病、炭疽病、葉枯病3種病害圖像為研究對(duì)象,采用K-means聚類分割技術(shù)分離出病斑。岳有軍等[5]在VGG-16網(wǎng)絡(luò)的基礎(chǔ)上,加入批歸一化層、采用全局平均池化和聯(lián)合損失函數(shù)的方法對(duì)其進(jìn)行結(jié)構(gòu)優(yōu)化,提高了分類準(zhǔn)確率。王艷玲等[6]以Plant Village數(shù)據(jù)集中的14 529張番茄葉部病害圖像作為研究對(duì)象,將遷移學(xué)習(xí)應(yīng)用在AlexNet卷積神經(jīng)網(wǎng)絡(luò)中,減少了訓(xùn)練所需時(shí)長,測(cè)試平均準(zhǔn)確率達(dá)到了95.62%,提高了5.6%。
許景輝等[7]以玉米病害圖像作為研究對(duì)象,在VGG-16模型的基礎(chǔ)上,改進(jìn)全連接層,針對(duì)圖像數(shù)據(jù)小,對(duì)訓(xùn)練圖像進(jìn)行數(shù)據(jù)增強(qiáng)擴(kuò)充,對(duì)玉米的病害識(shí)別平均準(zhǔn)確率達(dá)到95.33%。卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)在植物病害分類的應(yīng)用廣泛,并取得不錯(cuò)的效果。胡志偉等[8]以早、晚期5種番茄病害葉片為研究對(duì)象,提出ARNet,使用殘差網(wǎng)絡(luò)并引入多層注意力模塊,解決番茄葉部病害區(qū)域特征不易提取,避免網(wǎng)絡(luò)訓(xùn)練出現(xiàn)退化現(xiàn)象,平均識(shí)別率達(dá)到了88.2%。于洪濤等[9]為了提高自然環(huán)境下蘋果病蟲害的識(shí)別準(zhǔn)確率和識(shí)別效率,提出了具有動(dòng)態(tài)學(xué)習(xí)特征的VGG-F蘋果病蟲害識(shí)別模型。但目前已有CNN模型在圖像的背景復(fù)雜和類間相似度較高的情況下,對(duì)葉部病害的有效特征提取效果不足,導(dǎo)致對(duì)番茄葉部病害的識(shí)別準(zhǔn)確率不高。因此,為了高效、準(zhǔn)確地識(shí)別番茄葉部10種病害,現(xiàn)設(shè)計(jì)一種基于三通道注意力的番茄病害識(shí)別方法。首先,對(duì)現(xiàn)場(chǎng)采集數(shù)據(jù)集和Plant Village公共數(shù)據(jù)集進(jìn)行圖像增強(qiáng)和拓展,其次,在ResNeXt50[10]殘差網(wǎng)絡(luò)的基礎(chǔ)上,嵌入注意力機(jī)制并行提取網(wǎng)絡(luò)中目標(biāo)的通道特征和空間特征,使用雙損失函數(shù)解決訓(xùn)練過程出現(xiàn)的過擬合問題,最后,通過遷移學(xué)習(xí)弱監(jiān)督訓(xùn)練參數(shù)減少模型訓(xùn)練時(shí)間和檢測(cè)時(shí)間,并提高番茄病害識(shí)別準(zhǔn)確率。
圖像采集地點(diǎn)為江蘇省徐州市“三鄉(xiāng)工程”項(xiàng)目示范區(qū)蘇蔬基地,農(nóng)耕占地面積22 000 m2。園區(qū)利用太陽能秸稈糞便沼氣站所產(chǎn)沼液沼渣及農(nóng)業(yè)廢棄物配制有機(jī)基質(zhì),鹽堿地較少,種植茄果類蔬菜;棚內(nèi)依托農(nóng)業(yè)物聯(lián)網(wǎng)開展智能環(huán)境調(diào)控,進(jìn)行綠色蔬菜生態(tài)種植。年產(chǎn)粉果鮮食型西紅柿120萬kg、小番茄30萬kg。圖片采集工具為華為mate20pro手機(jī),為模擬自然光線場(chǎng)景,采集時(shí)進(jìn)行多角度拍攝;為算法適應(yīng)不同番茄葉片距離,在不同高度拍攝;拍攝時(shí)間包括8:00,12:00和17:00,共計(jì)500張,如圖1所示。為保證數(shù)據(jù)的平衡性,拓展使用Plant Village數(shù)據(jù)集的12 000張番茄葉部病害圖像,如圖2所示。
圖1 人工采集的番茄葉部病害圖例Fig.1 Sample of manually collected tomato leaf diseases
將所有圖像的尺寸縮放為224×224大小,采用數(shù)據(jù)增強(qiáng)的方法,對(duì)數(shù)據(jù)集圖片進(jìn)行旋轉(zhuǎn)、增加圖片對(duì)比度、中心剪切并對(duì)陰影部分進(jìn)行填充,圖片旋轉(zhuǎn)角度包括15°、30°及45°。預(yù)處理后的番茄葉部病害圖像如圖3所示。
番茄葉部病害識(shí)別實(shí)驗(yàn)采用Plant Village數(shù)據(jù)集中的12 000張番茄葉片圖像,并加上人工采集的500張圖像共計(jì)12 500張番茄病害圖像。為保證數(shù)據(jù)平衡,每類1 250張,數(shù)據(jù)集按8∶2劃分為訓(xùn)練集和測(cè)試集。
選用ResNeXt50為基礎(chǔ)網(wǎng)絡(luò),采用ResNeXt模塊作為本文算法的特征提取網(wǎng)絡(luò)的基礎(chǔ)模塊,ResNeXt模型延用了ResNet的shortcut連接、VGG模塊堆疊和Inception的分組卷積方法,可以有效防止神經(jīng)網(wǎng)絡(luò)反向傳播帶來的梯度彌散和梯度爆炸,并把building block中除了shortcut以外的支路數(shù)量作為基數(shù)(cardinality)。減少了超參數(shù)數(shù)量,拓?fù)浣Y(jié)構(gòu)相同,有利于模型的拓展和移植。
總體網(wǎng)絡(luò)結(jié)構(gòu)包括輸入層、ResNeXt模塊、池化層、全連接層和輸出判別層。ResNeXt模塊由分組殘差連接的瓶頸結(jié)構(gòu)層[11](bottleneck layer)組成,包括多組的1×1卷積、3×3卷積、1×1卷積依次連接。除輸出判別層外,其他層均采用ReLU[12]作為激活函數(shù),采用Softmax[13]對(duì)番茄葉部病害進(jìn)行判別。實(shí)驗(yàn)中改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,算法的輸入葉部病害尺寸為224×224×3,原ResNeXt算法對(duì)輸入圖像使用步長為2的7×7卷積進(jìn)行提取,針對(duì)葉部病害圖像類間距較小的特點(diǎn),本文采用3個(gè)3×3小卷積核對(duì)進(jìn)行特征提取,降低參數(shù),增加特征表達(dá)層次,得到特征圖C1;采用步長為2大小為3×3的卷積核對(duì)C1進(jìn)行最大池化;采用3個(gè)三通道注意力殘差模塊對(duì)C2進(jìn)行卷積,輸入通道為64,輸出通道為256,步長為1;采用4個(gè)32路徑的ResNeXt模塊對(duì)C3進(jìn)行卷積,輸入通道為256,輸出通道為512,步長為1;采用6個(gè)32路徑的ResNeXt模塊對(duì)C4進(jìn)行卷積,輸入通道為512,輸出通道為1 024,步長為1;采用3個(gè)32路徑的ResNeXt模塊對(duì)C4進(jìn)行卷積,輸入通道為1 024,輸出通道為2 048,步長為1;對(duì)C5進(jìn)行全局最大池化后經(jīng)全連接層和Softmax分類層10個(gè)神經(jīng)元。
圖2 拓展番茄葉部病害圖例Fig.2 Samples of expanded tomato leaf diseases
圖3 預(yù)處理后的番茄葉部病害圖像Fig.3 The images of tomato leaf diseases after pretreatment
圖4 網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Structure of network
由于不同病害的番茄葉部圖像特征具有相似性,并且番茄葉部圖片中的病害區(qū)域與整個(gè)圖像相比面積較為狹小,例如番茄葉斑病和番茄細(xì)菌性斑點(diǎn)病。借鑒注意力模塊(convolutional block attention module,CBAM)[14],本文模型在ResNeXt模塊中加入并聯(lián)的通道加權(quán)轉(zhuǎn)換器和空間加權(quán)轉(zhuǎn)換器,如圖5所示,輸出特征紅色部分為注意力模塊關(guān)注的信息,將特征插值映射回原圖可見,番茄葉部病害特征得到更大的關(guān)注,無用特征被抑制。
圖5 注意力模塊結(jié)構(gòu)Fig.5 Attention module structure
設(shè)計(jì)的三通道注意力轉(zhuǎn)化器公式為
F′=f1×1[MC(F)?F+MS(F)?F]
(1)
式(1)中:?為矩陣元素點(diǎn)乘;MC(F)為通道注意力特征圖;MS(F)為空間注意力特征圖,為1×1大小的卷積核,在第一個(gè)殘差模塊中,輸入56×56×256的番茄病害特征圖,經(jīng)卷積1×1后得到維度為56×56×1的空間權(quán)重圖和1×1×256的通道權(quán)重圖,使用sigmoid激活函數(shù)將權(quán)重歸一化到0~1;F′為最終輸出特征圖。
通道注意力模塊是對(duì)圖像特征的通道特征進(jìn)行壓縮和提取,通過對(duì)原特征通道加權(quán)的方式,關(guān)注番茄不同類別病害細(xì)節(jié)特點(diǎn),計(jì)算公式為
MC(F)=δ{MLP[AvgP(F)]+MLP[MaxP(F)]}
(2)
式(2)中:MLP為共享網(wǎng)絡(luò);F為輸入特征圖;δ為激活函數(shù),將權(quán)重歸一化到0~1。最大池化和平均池化共享一個(gè)神經(jīng)網(wǎng)絡(luò)提取特征。
空間注意力模塊是對(duì)圖像特征的空間特征進(jìn)行壓縮和提取,關(guān)注番茄病害的病灶位置,計(jì)算公式為
MS(F)=δ{MLP[AvgP(F)];MLP[MaxP(F)]}
(3)
式(3)中:分號(hào)“;”為矩陣橫向拼接操作。最大池化和平均池化共享一個(gè)神經(jīng)網(wǎng)絡(luò)提取特征。
首先,通過在ResNeXt50網(wǎng)絡(luò)基礎(chǔ)上,增加注意力模塊和設(shè)置雙損失函數(shù),加載已有訓(xùn)練參數(shù),構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)模型。在網(wǎng)絡(luò)訓(xùn)練前,為了使訓(xùn)練模型具有更強(qiáng)的泛化能力,防止訓(xùn)練模型過擬合,將原始數(shù)據(jù)集進(jìn)行擴(kuò)充增強(qiáng)。之后,標(biāo)注樣本圖像集,并將批量輸入圖片送入設(shè)計(jì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練并得到最終訓(xùn)練模型。在測(cè)試時(shí),用訓(xùn)練好的模型對(duì)10種類別的番茄葉片分類,并進(jìn)行多組實(shí)驗(yàn)。其算法流程如圖6所示。
圖6 三通道注意力網(wǎng)絡(luò)算法流程圖Fig.6 Three-channel attention network algorithm flow chart
實(shí)驗(yàn)中的計(jì)算機(jī)配置為64位Windows10 操作系統(tǒng),8核64 GB CPU,NVIDIA-v100 32 GB GPU。軟件方面,實(shí)驗(yàn)環(huán)境為PyTorch深度學(xué)習(xí)框架,版本為1.0.0。
單個(gè)類別的識(shí)別準(zhǔn)確率(accuracy,Acc)數(shù)學(xué)表達(dá)式為
(4)
式(4)中:Ni為單個(gè)番茄病害類別圖像總數(shù);Nc個(gè)為單個(gè)類別正確的預(yù)測(cè)數(shù)。
平均識(shí)別準(zhǔn)確率(average accuracy,AA)數(shù)學(xué)表達(dá)式為
(5)
式(5)中:ns為番茄病害葉部圖像類別數(shù)目,取ns為10;i∈[1,10]為病害類別標(biāo)簽;ni為第i類番茄葉部病害圖像總數(shù);nii為第i類樣本預(yù)測(cè)結(jié)果為i的總數(shù)。
分類結(jié)果一致性和信度指標(biāo)(Kappa)系數(shù),數(shù)學(xué)表達(dá)式為
(6)
(7)
式中:p0為總體分類精度,即每一類正確分類的樣本數(shù)量之和除以總樣本數(shù);pe為偶然達(dá)到的一致性比率,即每一類分類結(jié)果由于偶然性與實(shí)際類別結(jié)果所達(dá)到的一致性;ai為第i類番茄病害樣本數(shù);bi為第i類測(cè)試正確樣本數(shù);n為番茄病害樣本類別總數(shù),n取10。
針對(duì)卷積神經(jīng)網(wǎng)絡(luò)病害識(shí)別需大量的樣本對(duì)網(wǎng)絡(luò)長時(shí)間訓(xùn)練,考慮到大部分訓(xùn)練數(shù)據(jù)存在關(guān)聯(lián)性,所以使用遷移學(xué)習(xí)方法[15](transfer learning),將模型已學(xué)習(xí)到的模型參數(shù)分享給新模型,加快模型的訓(xùn)練效率。
選用已進(jìn)行弱監(jiān)督學(xué)習(xí)[16](weakly supervised learning)的ResNeXt50權(quán)重。借助遷移學(xué)習(xí)方法,從網(wǎng)絡(luò)提取卷積層和池化層作為本文模型的特征提取模塊得到番茄害圖像的高層特征,對(duì)其進(jìn)行模型參數(shù)遷移,該模型采用ReLU函數(shù)對(duì)每個(gè)輸入值x進(jìn)行閾值篩選,函數(shù)公式為
(8)
模型最后全連接層添加Dropout[17]方法,采用0.6的丟失率,保留60%的神經(jīng)元活性,其余的40%神經(jīng)元凍結(jié)來解決過訓(xùn)練過擬合問題。雙損失函數(shù)設(shè)計(jì)公式為
loss=?1lossCrossEntropy+?2lossLabelSmooth
(9)
式(9)中:?1、?2為兩種損失函數(shù)的權(quán)重,分別設(shè)置為0.5和0.5;lossCrossEntropy為交叉熵?fù)p失函數(shù);lossLabelSmooth為簽平滑損失函數(shù)。標(biāo)簽平滑損失函數(shù)相當(dāng)于向番茄病害識(shí)別真實(shí)分布中添加了服從均勻分布的噪音,抑制正負(fù)樣本間的差值,提高番茄病害檢測(cè)網(wǎng)絡(luò)的泛化能力,公式為
(10)
式(10)中:i為預(yù)測(cè)標(biāo)簽類別值;y為實(shí)際標(biāo)簽類別值;loss為lossLabelSmooth得到的損失值;β為隨機(jī)噪音。
將交叉熵?fù)p失函數(shù)和標(biāo)簽平滑損失函數(shù)累加,通過標(biāo)簽平滑歸一化方法[18]對(duì)交叉熵?fù)p失函數(shù)進(jìn)行優(yōu)化,防止番茄病害檢測(cè)識(shí)別過擬合。
使用訓(xùn)練集分別進(jìn)行遷移學(xué)習(xí)訓(xùn)練和從零開始訓(xùn)練,不同訓(xùn)練方式下算法訓(xùn)練集準(zhǔn)確率和損失值變化如圖7所示。由圖7可見,通過圖7(a)和圖7(b)不同訓(xùn)練方式下算法訓(xùn)練集的準(zhǔn)確率對(duì)比,采用遷移學(xué)習(xí)的方式可以更快地提高算法的分類準(zhǔn)確率。通過圖7(c)和圖7(d)的損失值變化對(duì)比,采用遷移學(xué)習(xí)預(yù)訓(xùn)練參數(shù)的訓(xùn)練方式可以加速訓(xùn)練過程。觀察圖7(c),改進(jìn)后算法在第138次迭代損失值開始收斂,收斂速度領(lǐng)先其他4種識(shí)別方法,改進(jìn)算法的損失值隨著迭代次數(shù)的增加在0.164~0.220的范圍間震蕩,變化幅度皆小于其他方法,表明改進(jìn)算法的訓(xùn)練穩(wěn)定性和快速性。實(shí)驗(yàn)中各個(gè)算法的訓(xùn)練時(shí)長、運(yùn)行時(shí)占用內(nèi)存及平均檢測(cè)時(shí)間如表1所示。
圖7 不同訓(xùn)練方式下算法訓(xùn)練集準(zhǔn)確率和損失值變化Fig.7 The accuracy and loss of algorithm training set under different training methods
測(cè)試集應(yīng)用不同方法計(jì)算所得的分類平均準(zhǔn)確率如表2所示??梢姡S著網(wǎng)絡(luò)模型層數(shù)加深,網(wǎng)絡(luò)可以提取番茄病害圖像的更高層特征,改進(jìn)的三通道注意力殘差網(wǎng)絡(luò)模型測(cè)試集準(zhǔn)確率達(dá)到了98.4%,參數(shù)量占用內(nèi)存105.9 MB,Kappa系數(shù)為0.96,相比于VGG-16降低了54.3%的運(yùn)行內(nèi)存,測(cè)試集平均準(zhǔn)確率提升了4.0%,平均每張番茄葉部病害圖片檢測(cè)速度僅為VGG-16的21.6%。表明改進(jìn)模型數(shù)據(jù)平衡性較好。
表1 不同算法訓(xùn)練和識(shí)別對(duì)比Table 1 Experimental comparison of different algorithms
表2 各類別葉部病害測(cè)試集準(zhǔn)確率Table 2 Accuracy of test set of leaf diseases in various categories
實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法分類測(cè)試準(zhǔn)確率高達(dá)98.4%,相比起傳統(tǒng)機(jī)器學(xué)習(xí)方法與其他神經(jīng)網(wǎng)絡(luò)方法都更高,各類樣本檢測(cè)準(zhǔn)確率分布均勻,檢測(cè)速度符合實(shí)時(shí)性,Kappa系數(shù)為0.96,在不同環(huán)境場(chǎng)景下?lián)碛休^高識(shí)別精度,是一種輕量實(shí)用的改進(jìn)算法。
改進(jìn)算法與ResNeXt50原算法相比縮短了算法訓(xùn)練時(shí)長,降低了算法的內(nèi)存占用空間。提升了算法對(duì)番茄葉部病害分類識(shí)別的準(zhǔn)確率和穩(wěn)定性,平均測(cè)試準(zhǔn)確率達(dá)到了98.4%,能夠在復(fù)雜背景下精確識(shí)別番茄葉部病害,檢測(cè)速度符合應(yīng)用實(shí)時(shí)性,算法可移植性強(qiáng)。改進(jìn)算法可以應(yīng)用于多種葉片病害的識(shí)別,在農(nóng)業(yè)的病害預(yù)防領(lǐng)域具有重要應(yīng)用價(jià)值,為農(nóng)業(yè)信息化技術(shù)提供可靠的理論依據(jù)。