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