蔣清健,姚 勇,付志軍,蘇鈺杰
(1.河南經(jīng)貿(mào)職業(yè)學(xué)院,河南鄭州 450018;2.河南省智慧農(nóng)業(yè)遠(yuǎn)程環(huán)境監(jiān)測控制工程技術(shù)研究中心,河南鄭州 450018;3.鄭州輕工業(yè)大學(xué),河南鄭州 450002)
番茄抗病害能力較弱,病蟲侵害容易導(dǎo)致其品質(zhì)下降。番茄病害主要通過葉片狀態(tài)顯現(xiàn),因此通過對番茄葉片病害的準(zhǔn)確識別,可及早預(yù)防和控制病害的發(fā)生[1-2]。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)能夠?qū)Ψ讶~片病害作出較好的識別效果[3],但是訓(xùn)練過程中需要大量的圖像數(shù)據(jù)集。在CNN多卷積特征與HOG融合算法(CNN multi-convolution feature and HOG,CNNMCFHOG)中,CNN提取番茄葉片病害的淺層特征與HOG特征進(jìn)行合并[4],SVM分類器對其分類。分層深度卷積神經(jīng)網(wǎng)絡(luò)(hierarchical deep CNN,HDCNN)利用類別的層次結(jié)構(gòu)[5],將分層CNN嵌入到類別層次結(jié)構(gòu)中來引入分層深度CNN,粗、細(xì)分類器識別不同的類,可擴(kuò)展用于大規(guī)模視覺識別。半監(jiān)督分層卷積神經(jīng)網(wǎng)絡(luò)(semi-supervised hierarchical CNN,SSHCNN)將番茄圖像分解為多個層次聚類[6],在父節(jié)點學(xué)習(xí)聚類級CNN,在子節(jié)點學(xué)習(xí)類別級CNN,該算法利用CNN特征的相似性,將視覺上相似的圖像分組到同個聚類中,從而消除了不均勻的數(shù)據(jù)可分性約束,通過分層聚類級CNN獲取特定的高級圖像類別信息,可以用少量標(biāo)記的圖像進(jìn)行訓(xùn)練。注意卷積二叉神經(jīng)樹結(jié)構(gòu)(attention convolutional binary neural tree,ACBNT)通過樹形算法融入卷積運算[7],利用節(jié)點的路由函數(shù)分析樹根到葉的最短路徑,深度卷積運算學(xué)習(xí)捕獲對象的表示,樹形算法描述粗、細(xì)分層神經(jīng)網(wǎng)絡(luò)的識別過程,使用注意轉(zhuǎn)換器模塊來加強網(wǎng)絡(luò)分類的特征,負(fù)對數(shù)似然損失使用梯度下降法,利用反向傳播以端到端的方式來訓(xùn)練整個網(wǎng)絡(luò)。自我關(guān)注CNN 算法(self-attention CNN,SACNN),由基本網(wǎng)絡(luò)和自我注意網(wǎng)絡(luò)構(gòu)成[8],基本網(wǎng)絡(luò)主要進(jìn)行提取圖像的全局特征,自我注意網(wǎng)絡(luò)主要進(jìn)行獲取病變區(qū)域的局部特征,識別準(zhǔn)確率較高。
以上方法主要是通過CNN增加卷積次數(shù)以便獲得較高的識別率,這樣加深網(wǎng)絡(luò)結(jié)構(gòu)會使得數(shù)據(jù)的計算量加大,導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化訓(xùn)練的難度增大。本研究提出改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)(improved CNN,ICNN)算法對番茄葉片病害進(jìn)行識別,四通道多核卷積神經(jīng)網(wǎng)絡(luò)對番茄葉片病害多特征進(jìn)行提取,雙重注意力對特征圖的內(nèi)容、位置進(jìn)行關(guān)注,仿真結(jié)果驗證了算法的有效性。
將番茄葉片通過Sobel算子得到水平方向、垂直方向、45°、135°對角方向的4個梯度圖像,即獲得4個通道方向的圖像[9],如圖1所示。將多個梯度圖像輸入到多層卷積神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)從而學(xué)習(xí)圖像不同方向梯度的特征,再將不同方向的特征進(jìn)行隨機化特征融合。將具有差異性的圖像特征信息進(jìn)行融合,以使融合后的特征信息可以方便地進(jìn)行區(qū)分,提高圖像的表達(dá)能力,對融合后的特征進(jìn)行通道混洗,使得特征圖的每一個區(qū)域都包含不同通道的特征,得到的圖像融合信息更有魯棒性。
卷積神經(jīng)網(wǎng)絡(luò)對番茄葉片圖像的分類效果取決于卷積核的大小,卷積核越大則卷積神經(jīng)網(wǎng)絡(luò)的感受野范圍越廣,越方便進(jìn)行番茄葉片圖像全局信息分析,但同時會使得圖像細(xì)節(jié)特征被忽視;卷積核越小則圖像細(xì)節(jié)特征越易獲取,但是無法獲得番茄葉片圖像全局信息。因此,為了獲取圖像準(zhǔn)確的特征信息,需要多卷積核。四通道卷積神經(jīng)網(wǎng)絡(luò)為每個通道設(shè)計不同的卷積核以便提取番茄葉片圖像特征[10]。四通道卷積神經(jīng)網(wǎng)絡(luò)算法是由4個不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)通道CNN1、CNN2、CNN3、CNN4組成,每個卷積神經(jīng)網(wǎng)絡(luò)具有3層卷積層、2層下采樣層、1層全連接層。CNN1、CNN2通道分別輸入水平梯度方向、垂直梯度方向的圖像,之后依次進(jìn)入3個卷積層進(jìn)行特征提取,其卷積核大小為7、5、3,個數(shù)分別為30、40、50,移動步長分別為3、2、1,第1層、第2層卷積層之后的池化層采用最大池采樣方法,池化窗口大小分別為5、5,池化步長分別為3、3,最后為3個全連接層,輸出節(jié)點為18。CNN3、CNN4通道分別輸入45°、135°對角方向的圖像,之后依次進(jìn)入3個卷積層進(jìn)行特征提取,由于45°、135°對角方向的卷積核大小為9、7、5,個數(shù)分別為40、50、60,移動步長分別為4、3、2,第1層、第2層卷積層之后的池化層采用最大池采樣方法,池化窗口大小分別為3、3,池化步長分別為2、2,最后為3個全連接層,輸出節(jié)點為18,各個通道的激活函數(shù)均選擇ReLU,采用 Softmax對番茄葉片病害進(jìn)行識別。
注意力可以使得卷積神經(jīng)網(wǎng)絡(luò)的計算資源較合理地分配到番茄葉片圖像特征的分析過程中,數(shù)據(jù)計算量在不增加的同時進(jìn)行網(wǎng)絡(luò)深度加深[11]。雙重注意力由空間注意力、通道注意力組成。空間注意力主要關(guān)注病害區(qū)域并對無關(guān)信息進(jìn)行降噪,同時使得卷積神經(jīng)網(wǎng)絡(luò)保持尺度不變性。空間注意力機制包括局部注意力機制、全局注意力機制,局部注意力機制主要注意圖像的局部特征,全局注意力機制主要注意圖像的整體特征;空間注意力使用局部-全局交替注意力機制,減少了數(shù)據(jù)計算量。通道注意力主要進(jìn)行加強番茄葉片圖像的有用特征并抑制無用特征。卷積神經(jīng)網(wǎng)絡(luò)使用番茄葉片圖像特征通道和空間維度進(jìn)行預(yù)測,特征圖的重點內(nèi)容、位置得到注意,把注意力特征圖與卷積神經(jīng)網(wǎng)絡(luò)的中間特征圖相乘可以更新已學(xué)到的特征,計算公式為
F1=Mc(F)?F;F2=Ms(F1)?F1;Mc(F)=σ{MLP[AvgPool(F)]+MLP[Max-Pool(F)]};Ms(F)=σ{fN×M[AvgPool(F),MaxPool(F1)]}。
(1)
式中:F為輸入特征圖;?為點乘;Mc(F)為注意力運算;F1為輸出特征圖;Ms(F1)為在空間注意力運算;F2為空間注意力輸出特征圖;AvgPool為全局平均池化;MaxPool為全局最大池化;MLP為卷積神經(jīng)網(wǎng)絡(luò)的共享網(wǎng)絡(luò);最大池化和平均池化共享一個神經(jīng)網(wǎng)絡(luò)提取特征;σ為ReLU激活;fN×M為N×M卷積。
經(jīng)過以上運算,最終可獲得通道注意力特征圖F1和空間注意力特征圖F2。
由于番茄葉片病害識別屬于單標(biāo)簽多分類算法[12],交叉熵函數(shù)計算分類損失:
(2)
式中:calss為樣本標(biāo)簽;C為待分類總數(shù);z=[z0,z1,…,zC-1]為神經(jīng)網(wǎng)絡(luò)輸出。
損失函數(shù)更新通過動量隨機梯度下降法:
(3)
式中:γ為動量因子;t為訓(xùn)練輪數(shù);mt為訓(xùn)練輪數(shù) 的動量;ωt為訓(xùn)練輪數(shù)t的學(xué)習(xí)率;θ為權(quán)重。
當(dāng)γ=0時沒有動量作用影響,當(dāng)γ=1時動量慣性影響最強,在訓(xùn)練初始階段,需要的γ值較小,以便加速卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化;在訓(xùn)練結(jié)束階段,較大的γ值能夠提高番茄葉片病害的識別精度。因此卷積神經(jīng)網(wǎng)絡(luò)控制γ值隨訓(xùn)練輪數(shù)的增加而線性變大,通過訓(xùn)練輪數(shù)對γ更新為
(4)
式中:γmax為0.95,γmin為0.05,tmax設(shè)置為300。
γ隨t變化如圖2所示。
從圖2可以看出,當(dāng)t為1時,γ為最小值0.05,隨著t的增加,γ隨t線性增加,最終γ達(dá)到最大值0.95,從而保證了動量因子的最優(yōu)化。
權(quán)重更新為
(5)
式中:τ為識別誤差率;θt初始值為0.000 1。
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中使用了歷史梯度信息,計算較接近真實梯度,增強了算法的穩(wěn)定性[13],通過非線性遞減方式將ωt逐漸縮小,其變化公式為:
(6)
式中:初始值ω1=0.001。
ωt隨t變化如圖3所示。
從圖3可以看出,當(dāng)損失函數(shù)變化非常小或不變化了,通過學(xué)習(xí)率使得損失函數(shù)進(jìn)一步下降,避免了損失函數(shù)被過度優(yōu)化,學(xué)習(xí)率越來越小,從而保證了算法的最終收斂。
以病害部分為前景,通過K-means聚類方法劃分出病害聚類區(qū),每個病害聚類區(qū)為單獨的封閉區(qū)域[14],由于番茄葉片有病害聚類區(qū),則該封閉區(qū)域的形心為采樣正方形的中心點,假設(shè)采樣為邊長100個像素單位的正方形,則:
(7)
式中:xi為病害聚類區(qū)橫坐標(biāo);yi為病害聚類區(qū)縱坐標(biāo);Ai為病害聚類區(qū)的像素數(shù)。
當(dāng)進(jìn)行病害聚類時,由于病害離各自聚類中心距離不同,導(dǎo)致出現(xiàn)多個聚類區(qū),一般取聚類中心最靠前的4個區(qū)域為當(dāng)前番茄葉片圖像的病害采樣區(qū)。
通過邊緣特征統(tǒng)計值避免圖像噪聲的影響[15],邊緣特征值公式為
(8)
(9)

圖4所示為識別算法流程。
計算機PC配置主要如下:CPU型號為Intel i510400F、內(nèi)存為16 GB,顯卡GTX 1650,Spyder3.0平臺實現(xiàn)仿真。圖像集利用Plant Village數(shù)據(jù)庫中的Tomatoes圖像,番茄葉片病害選擇的類型有黃葉卷曲病、花葉病、蜘蛛螨病、七星斑病、葉霉菌病、早疫病,其展示圖像如表1所示,每個類型各有300幅圖像,圖像大小為300×300像素,一共為1 800幅,其中訓(xùn)練集1 500幅圖像,測試集300幅圖像。

表1 番茄葉片病害圖像
在算法訓(xùn)練過程中,使用批量訓(xùn)練把訓(xùn)練集與驗證集劃分為若干批次,其中訓(xùn)練批次設(shè)置為20,驗證批次為10,共迭代60輪,為防止訓(xùn)練過程發(fā)生過擬合現(xiàn)象,將Dropout設(shè)置為0.5,訓(xùn)練與驗證算法主要有ALexNet、GoogLeNet、VGGNet、ResNet、CNN、ICNN,其對比試驗如圖5所示。
從圖5-a可以看出,隨著迭代次數(shù)的增加,ICNN算法逐漸上升趨于穩(wěn)定,并且上升速度高于其他算法,穩(wěn)定狀態(tài)早于其他算法的訓(xùn)練迭代次數(shù)。從圖5-b可以發(fā)現(xiàn),ICNN算法在訓(xùn)練過程中損失值最小,并且能夠快速進(jìn)行收斂,當(dāng)訓(xùn)練迭代超過30次以后,損失值逐漸趨于穩(wěn)定狀態(tài)。因此ICNN算法的損失函數(shù)值較小、識別準(zhǔn)確率較大,能夠較好地進(jìn)行番茄葉片病害識別。
在番茄葉片病害識別過程中,涉及算法有AlexNet、GoogLeNet、VGGNet、ResNet、CNN、ICNN,通過蒙特卡羅60次仿真試驗,對番茄葉片病害黃葉卷曲病、花葉病、蜘蛛螨病、七星斑病、葉霉菌病、早疫病的識別準(zhǔn)確率結(jié)果如圖6所示。

表2 識別檢測平均消耗時間
從圖6可以看出,本研究算法對番茄葉片的各種病害識別準(zhǔn)確率較高,對番茄葉片病害黃葉卷曲病、花葉病、蜘蛛螨病、七星斑病、葉霉菌病、早疫病識別準(zhǔn)確率平均值為98.51%、97.92%、96.71%、94.12%、94.63%、94.22%。其他算法對番茄葉片病害識別準(zhǔn)確率小于本研究算法,這是因為通過四通道輸入番茄葉片圖像,卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖像不同方向梯度的特征,雙重注意力機制提升了卷積神經(jīng)網(wǎng)絡(luò)算法的搜索能力,能夠使得識別準(zhǔn)確率提高。
各種算法對番茄病害黃葉卷曲病、花葉病、蜘蛛螨病、七星斑病、葉霉菌病、早疫病單張圖像識別檢測平均消耗時間如表2所示。
從表2結(jié)果可以看出,改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)算法對各種病害識別檢測平均消耗時間表現(xiàn)更優(yōu),算法消耗占用內(nèi)存較少,同時識別準(zhǔn)確率較高。
本研究算法對卷積神經(jīng)網(wǎng)絡(luò)算法進(jìn)行了改進(jìn),通過多通道多核提取圖像信息,同時加入雙重注意力機制關(guān)注圖像全局、局部特征,試驗仿真結(jié)果顯示,本研究算法對番茄葉片病害黃葉卷曲病、花葉病、蜘蛛螨病、七星斑病、葉霉菌病、早疫病識別的準(zhǔn)確率、消耗時間優(yōu)于其他算法,因此為番茄葉片病害識別提供了一種新方法。