劉 裕,趙保平,張述嘉,林 潔
(1. 西京學院信息工程學院,西安 710123;2.寶雞市農業科學研究院,陜西 寶雞 721000)
【研究意義】田間害蟲識別是害蟲防治的重要步驟,對提高作物產量與農戶收入有著重要作用。【前人研究進展】目前已有較多基于模式識別與數字圖像技術的害蟲識別方法[1]。胡永強等[2]提出了一種基于多特征融合與稀疏表示的害蟲識別方法,該方法提取害蟲的顏色、形狀、紋理等特征并構造成特征矩陣,再求解特征矩陣的最優稀疏系數實現害蟲識別。Wang等[3]提出了一種基于數字圖像技術與模式識別的害蟲識別方法,該方法首先對害蟲圖像進行預處理以獲得純色背景圖像,再提取害蟲的軀干形狀、重心等特征并構造成特征向量,最后結合支持向量機和人工神經網絡進行害蟲識別。Xie等[4]提出了一種基于多核學習與多任務表示的害蟲識別方法,該方法采用稀疏編碼直方圖表示害蟲圖像,能更好地量化形狀、紋理等特征。張永玲等[5]提出了一種基于多特征融合和稀疏表示的害蟲識別方法,該方法首先提取害蟲的HSV、HOG、Gaobor等特征并構造成過完備字典,再利用過完備字典對害蟲圖像進行稀疏表示,最后求稀疏解進行害蟲識別。肖德琴等[6]提出了一種基于多算法結合的害蟲識別方法,該方法通過結合特征提取、干擾目標去除、背景去除、自動計數算法實現害蟲識別。上述方法的識別性能特別依賴于人工提取特征的效果,但害蟲在不同時期具有不同的形態,且害蟲的分布位置與姿勢變化多樣,導致上述方法的泛化能力不能滿足作物害蟲識別的要求。近年來,隨著深度學習的快速發展,涌現了較多基于卷積神經網絡(Convolutional Neural Network, CNN)的害蟲識別方法[7]。Cheng等[8]提出了一種基于改進AlexNet的害蟲識別方法,該方法在AlexNet的基礎上增加卷積層和殘差連接機制,取得了較好的識別效果。梁萬杰等[9]提出了一種基于10層CNN的水稻二化螟識別方法,該方法利用正負樣本對網絡進行交叉驗證,有效提高了識別性能。董偉等[10]提出了一種基于區域提議網絡(Region Proposal Network, RPN)和CNN的蔬菜害蟲識別方法,該方法利用RPN獲取蔬菜害蟲的位置區域,再輸入到CNN進行害蟲識別。張博等[11]提出了一種基于空間金字塔池化與多尺度深度卷積網絡的害蟲識別方法,該方法利用空間金字塔池化模塊提取害蟲的多尺度特征,并結合卷積與上采樣以實現反卷積,取得了較好的識別效果。魏楊等[12]提出了一種基于RPN與快速區域神經網絡的害蟲識別方法,該方法利用RPN獲取害蟲的位置區域,再利用快速區域神經網絡進行害蟲識別。Nanni等[13]提出了一種基于顯著性分析與CNN的害蟲識別方法,該方法利用三種顯著性方法對圖像進行預處理,突出顯示圖像中最重要的像素,有效提高了訓練速度。陳娟等[14]提出了一種改進殘差網絡的害蟲圖像識別方法,該方法首先采用數字圖像處理技術對害蟲圖像進行預處理,再利用殘差網絡進行害蟲識別。孔建磊等[15]提出了一種基于多流概率融合網絡的害蟲識別模型,該模型首先利用多流深度網絡提取特征,再利用高斯概率融合層對特征整合優化,取得了較高識別準確率。邵澤中等[16]開發了一個面向移動端的農業害蟲識別系統,該系統采用DenseNet121對66種常見害蟲進行識別。孫鵬等[17]提出了一種基于注意力機制與CNN的大豆害蟲識別方法,該方法引入注意力機制以更好地提取害蟲特征,極大提高了識別準確率。【本研究切入點】為了解決CNN易丟失特征之間關系等問題,Hinton等[18]提出了膠囊結構,并與Sabour等[19]提出了膠囊網絡,該網絡使用向量膠囊取代標量神經元,較CNN有更好的平移不變性。CapsNet在膠囊層之間使用動態路由算法代替池化層,能更好地提取特征信息。Shao等[20]提出了一種雙膠囊生成對抗網絡,在生成對抗網絡中引入2個CapsNet作為鑒別器,并將邊緣損失與原始對抗性損失相結合,能對復雜目標進行更好的特征描述。Gao等[21]提出了一種多尺度膠囊網絡,該網絡利用多尺度膠囊模塊提取特征之間的空間關系,并設計了自適應融合卷積模塊用于更好地提取小目標特征,取得了較好的識別效果。水稻害蟲圖像背景復雜且害蟲分布位置不均、害蟲姿態與尺度變化多樣為水稻害蟲準確識別帶來了一定挑戰。【擬解決的關鍵問題】針對水稻害蟲識別難題,本研究結合注意力機制[22]與CapsNet的優勢,提出一種多尺度雙路注意力膠囊網絡,并應用于水稻害蟲識別。
數據集IP102 (https://github.com/xpwu95/IP102)[23]共有75 222幅圖像,包括102種害蟲,選取其中14種水稻害蟲,每種害蟲選取300幅共4200幅圖像組成實驗數據集(圖1)。其中70%圖像選為訓練集,用于網絡權重參數的學習;20%圖像選為驗證集,用于優化網絡參數;剩余10%圖像選為測試集,用于對所提出方法進行驗證。為了驗證所提方法的魯棒性,均選用光照強烈、背景復雜等不同情況下的圖像且實驗數據集中同種害蟲均包含不同蟲態。為了提高識別精度,利用Photoshop將圖像統一調整為239×239像素。

圖1 數據集中部分圖像Fig.1 Examples of the dataset
1.2.1 膠囊網絡(CapsNet) CapsNet由編碼模塊和解碼模塊組成,CapsNet結構如圖2所示。編碼模塊由卷積層(Conv)、主膠囊層(Primary Caps)和數字膠囊層(Digital Caps)組成。其中卷積層由256個9×9且步長為2的卷積核組成,輸出20×20×256維的特征圖;主膠囊層共有32組卷積核,每組由8個9×9且步長為2的卷積核組成,該層對卷積層的輸出進行卷積計算,輸出1152個8維膠囊;數字膠囊層對主膠囊層的輸出進行路由計算,輸出16×10維特征向量。解碼模塊由3個全連接層組成,該模塊接收數字膠囊層的輸出,重構出原始圖像。

圖2 膠囊網絡結構Fig.2 Structure of capsule network
CapsNet使用動態路由算法代替池化層,對輸入特征進行分類,等同于特征選擇過程[24]。動態路由算法的中心思想為所有子膠囊對父膠囊的參數進行預測,當所有子膠囊預測結果一致時,父膠囊被激活并輸出特征向量。
(1)對輸入向量進行加權求和并壓縮:
(1)

(2)對路由參數cij進行更新:
(2)
式中,bij為子膠囊層中第i類膠囊連接到sj的概率。
CapsNet的損失函數采用邊緣損失函數:
(3)
式中,m+與m-為類別預測值,λ為平衡系數,Tk為數據類別標簽,CNum為數據集的類別數,k為類別序號,vk為數字膠囊層輸出的特征向量。
1.2.2 多尺度雙路注意力膠囊網絡(MDACapsNet) 如圖3所示, MDACapsNet由編碼模塊、重構模塊與分類模塊組成。其中編碼模塊用于提取圖像特征;重構模塊用于對編碼模塊的輸出特征進行采樣,輸出重構圖像;分類模塊輸出分類結果。編碼模塊由卷積層1(Conv1)、多尺度雙路注意力模塊、卷積層2(Conv2)、主膠囊層(Primary Caps)、次膠囊層(Secondary Caps)組成。其中主膠囊層對卷積層2的輸出特征圖用32個步長為2的5×5卷積核進行8次卷積計算,實現卷積層與膠囊層的轉換。重構模塊由卷積層3(Conv3)、反卷積層(Deconv)、卷積層4(Conv4)組成。其中卷積層3用于實現膠囊層與卷積層的轉化,反卷積層對卷積層3的輸出進行上采樣,再通過卷積層4下采樣后輸出重構圖像。

圖3 多尺度雙路注意力膠囊網絡結構Fig.3 Structure of the Capsule Multi-scale Dual-path Attention Capsule Network
分類模塊由數字膠囊層組成。在整體的MDACapsNet中,卷積層3與自注意力層的卷積核步長均為1,其他層的卷積核步長均為2。MDACapsNet的相關參數如表1所示。

表1 多尺度雙路注意力膠囊網絡的相關參數
卷積核大小固定使感受野大小受限,無法獲得全局信息。為了能獲取更豐富的上下文信息,在自注意力模塊[25]與通道空間注意力模塊[26]的基礎上,設計了一種多尺度雙路注意力模塊(Multi-scale Dual-path Attention Block,MDAB)并應用在MDACapsNet初端。MDAB由雙路徑組成,上路徑由通道注意力模塊(Channel Attention Blcok,CAB)和空間注意力模塊(Spatial Attention Block,SAB)組成,下路徑為多尺度自注意力模塊(Multi-scale Self-attention Block,MSB)。
自注意力模塊可以有效獲取對害蟲分類至關重要的全局信息,但與常規卷積操作比較,自注意力模塊存在計算量大等缺點。MDBA在自注意力模塊中使用金字塔池化[27]以減少特征圖的維度并提取多尺度信息,能夠大量減少計算量。MDBA通過取輸入特征圖中不同尺度特征的加權值以表示某局部位置特征,實現特征之間的全局依賴并提取豐富的多尺度上下文信息。
(1)對輸入數據進行卷積計算并進行金字塔池化操作:
f(x)=wθx,g(x)=ρ(wφx),h(x)=ρ(wgx)
(4)
式中,wθ、wφ、wg為卷積核權重矩陣,ρ為金字塔池化操作,x為輸入數據。
(2)對f(x)和g(x)進行全局相似度計算:
(5)
式中,xp為輸入數據上索引為p的特征值,N為輸入特征的總個數,c(p,q)為xp和xq的相似度值,G(xp)為xp的全局相似度值。
(3)對所有全局相似度值進行掩模計算:
(6)
式中,yp為xp的掩模特征值,Wz為權重系數,z為輸出特征圖。

Mc(F)=σ{FNL[AvgPool(F)]+FNL[MaxPool(F)]}
(7)
式中,σ為Sigmoid激活函數,F為輸入特征。

Ms(F)=σ{Mean[AvgPool(F)+MaxPool(F)]}
(8)
式中,σ為Sigmoid激活函數,F為輸入特征,Mean為平均值計算。SAB輸出的空間位置特征圖與SAB的輸入數據進行相乘,得到注意力特征數據。再與MSB的輸出特征圖相加,再經過Sigmoid函數進行歸一化后與輸入數據相乘,得到多尺度雙路注意力特征圖。
CapsNet中,動態路由算法相當于膠囊之間進行全連接映射,計算量會隨著輸入圖像尺度地提升而大幅增加。因此MDACapsNet使用局部共享動態路由算法[28]代替動態路由算法。局部共享動態路由算法規定子膠囊只能通過預設定的路徑路由到父膠囊,且同一類型膠囊設有共享轉移矩陣,能在確保性能的前提下,大幅減少網絡計算量。局部共享動態路由算法計算流程如下:

(9)

(10)

(11)

在神經網絡訓練過程中,當神經元輸入特征值小于零時,ReLU激活函數的輸出為零,導致神經元的一階導數也為零,神經元處于失活狀態。MDACapsNet使用Swish激活函數[29],其與ReLu激活函數不同,當輸入特征值小于零時,Swish將輸出其縮小值,能有效解決神經元失活問題。Swish激活函數計算公式如下:
(12)
為提高識別準確率與加速網絡訓練,MDACapsNet在邊緣損失函數基礎上增加重構圖像損失項。增加重構圖像損失項后的邊緣重構損失函數如下:
Loss=αMLoss+βRLoss
(13)
式中,α與β為重構系數,MLoss為邊緣損失函數,RLoss為均方根誤差函數,其計算如下:
(14)
式中,pr(x)為第r張經下采樣后得到的28×28像素圖像,Rr(x)為重構模塊輸出的第r張重構圖像,CNum為數據集類別數。
為了解決網絡訓練時間過長造成的過擬合問題,MDACapsNet使用二階段訓練方法。二階段訓練方法先通過較少的訓練數據獲得預訓練網絡參數,再進行全部數據的網絡訓練。二階段訓練方法描述如下。第一步:對網絡參數進行隨機初始化;第二步:在水稻害蟲圖像數據集中隨機選取500幅圖像,然后對網絡進行預訓練并獲得預訓練參數;第三步:網絡載入預訓練參數,然后對網絡進行全部數據的正式訓練。
為了評估MDACapsNet對害蟲圖像的識別效果,引入識別準確率、召回率作為評價指標,衡量真實標簽與識別結果之間的差異。識別準確率為被正確分類的樣本占總樣本的比例,召回率為被正確分類的正類占總正類的比例。識別準確率Accuracy、召回率Recall計算如下:
(15)
(16)
式中,TP為實例是正類,且被識別為正類的樣本;TN為實例為負類,且被識別為負類的樣本;FN為實例是正類,但被識別為負類的樣本;FP為實例為負類,但被識別為正類的樣本。
1.2.3 硬件環境及參數設定 硬件環境為Intel Xeon E5-2643v3 @3.40GHz CPU;GTX2080Ti 11GB GPU;64 GB內存。實驗軟件環境為Python 3.7;CUDA Toolkit10.0;CUDNN V7.6.5;Windows10 64bit操作系統;Pytorch深度學習框架。在實驗中將訓練集以批次的方式送入網絡進行訓練,對所有訓練集圖像完成一次訓練為一次迭代。綜合考慮硬件環境與訓練時間,將批次大小設置為32,最大迭代次數設置為500。在實驗中為了避免學習率過大導致網絡過擬合,MDACapsNet采用衰減學習率進行網絡訓練,學習率初始化為0.001,隨著迭代次數的增加,學習率依次減小原來的0.05倍。對網絡參數進行初始化,生成均值為0,方差為1,符合正態分布的權重參數。多尺度注意力模塊的降采樣率設置為{1,3,6,8},損失函數中α與β分別設置為0.9與0.1。
為了驗證MDACapsNet的有效性,在構建的水稻害蟲圖像數據集上進行實驗,并與CapsNet、MDACapsNet(28×28像素)、VGG16[30]和ResNet[31]進行比較。由圖4-a可知,CapsNet經過450次迭代時,其Loss值降到0.1881且Loss曲線已接近收斂,表明網絡的訓練效果較差。使用28×28像素圖像輸入MDACapsNet進行訓練并完成500次迭代后,其Loss值降到0.115,與CapsNet的訓練過程比較,表明提出的方法能有效優化網絡。MDACapsNet經過340次迭代時,其Loss曲線接近收斂且完成500次迭代后,Loss值降到0.0006,與28×28像素圖像輸入MDACapsNet的訓練過程相比,表明239×239像素圖像輸入能有效提高網絡的訓練效果。由圖4-b可知,MDACapsNet在訓練過程中收斂速度比VGG16與ResNet更快,且在相同的迭代次數下,MDACapsNet的Loss值更低,表明MDACapsNet具有更強的識別能力。

圖4 不同方法的訓練損失Fig.4 Training loss of different methods
為了更準確地掌握網絡訓練狀態,對卷積層1和多尺度雙路注意力模塊(Multi-scale Dual-path Attention Block,MDAB)的輸出特征圖與重構圖像進行可視化如圖5所示。由圖5-b可知,網絡經過迭代訓練后,卷積層1只能提取目標區域的部分紋理特征,無法充分獲取目標區域的特征信息。由圖5-c可知,MDAB已較完整地提取了害蟲的輪廓特征。圖5的特征圖可視化結果表明在MDACapsNet中引入MDAB,能極大提高網絡的特征提取能力。

圖5 特征圖與重構圖像可視化Fig.5 Visualization of feature maps and reconstructed image
MDACapsNet重構模塊輸出的重構圖像如圖5-d所示,網絡能否有效地提取特征直接體現在重構圖像質量的優劣上。重構模塊已較完整地重構出原始圖像,表明MDACapsNet能有效地提取害蟲圖像的特征。
由表2可知,MDACapsNet取得最高識別準確率與召回率,分別為95.31%、94.89%。MDACapsNet的識別準確率比MDACapsNet28(28×28像素圖像輸入)、VGG16、ResNet、CapsNet分別提高了14.82%、5.47%、2.83%、19.83%。CapsNet與MDACapsNet(28×28像素輸入)的輸入圖像尺度較小,輸入網絡的信息較少,導致網絡無法有效識別。VGG16與ResNet的卷積核尺度固定,無法獲得全局信息,所以這2種識別方法的識別準確率和召回率均低于MDACapsNet。根據上述分析能判斷MDACapsNet具有較好的識別效果,能夠滿足對水稻害蟲識別的高精度要求。

表2 不同方法的識別效果
田間環境復雜多變,且水稻害蟲處于不同生長階段時,其形態差異較大。為更進一步驗證所提出方法的魯棒性,分別使用不同方法對不同情況下水稻害蟲圖像進行識別,其中不同情況包括光照復雜、成蟲期、小蟲圖像、成長期、幼蟲期。篩選后魯棒性驗證數據集共計350幅圖像,部分圖像如圖6所示。

圖6 不同情況下的水稻害蟲圖像Fig.6 Images of rice pest in different conditions
由表3可知,在魯棒性對比實驗中,MDACapsNet28與CapsNet在所有情況下均取得較差識別效果。當處于成蟲期與成長期情況下,VGG16與ResNet均取得了較好效果,當小蟲圖像與光照復雜情況時,識別準確率均有較大幅度下降。MDACapsNet在所有情況下均取得較好識別結果,識別準確率最大值與最小值之差僅為8.57%,表明MDACapsNet具有較強魯棒性。

表3 不同情況下的識別方法性能對比
綜合來看,基于MDACapsNet的水稻害蟲識別方法在少量數據的訓練后,識別準確率達到95.31%,且在復雜情況下仍能取得較好識別效果,網絡識別準確率與網絡訓練收斂能力均優于其他方法。主要原因是引入了多尺度雙路注意力模塊與動態路由算法。在特征提取階段,多尺度雙路注意力模塊能提取害蟲多尺度信息,能有效降低害蟲尺度變化對識別準確率的影響,且注意力機制能有效抑制復雜背景對特征提取的影響,再利用動態路由算法提高膠囊間的計算效率,使得網絡能接受大分辨率圖像,極大提高網絡識別準確率。根據上述分析可知,MDACapsNet的識別能力能滿足復雜情況下對水稻害蟲識別的高精度要求。
準確檢測水稻害蟲是水稻害蟲防治的前提。針對卷積神經網絡(Convolutional Neural Network, CNN)對復雜背景下水稻害蟲識別準確率低等問題,筆者提出一種多尺度雙路注意力膠囊網絡(Multi-scale Dual-path Attention Capsule Network, MDACapsNet)用于水稻害蟲識別。MDACapsNet通過在膠囊層之間使用局部共享動態路由算法代替動態路由算法進行參數的更新,極大降低網絡計算量;然后在網絡初端引入多尺度雙路注意力模塊以實現特征之間的全局依賴并提供多尺度信息,提高網絡的特征描述與提取能力;最后在損失函數中增加重構圖像損失項,加速網絡訓練并提高識別準確率。在MDACapsNet的訓練過程中,采用衰減學習率與二階段訓練方法以解決網絡的過擬合問題。在復雜背景下水稻害蟲圖像數據集上進行實驗,并與CapsNet、VGG16、ResNet進行比較。結果表明,MDACapsNet在識別評價指標上均優于其他被比較的方法,且在害蟲圖像背景復雜與害蟲尺度、姿態多變條件下,MDACapsNet也能有效識別。在未來工作中,需擴展數據集以進一步提高網絡的魯棒性;需對同種水稻害蟲的周期進行細致地分類,由此采取更有針對性的害蟲防治措施。
本研究針對田間水稻害蟲識別難點,提出一種基于多尺度雙路注意力膠囊網絡的水稻害蟲識別方法。在水稻害蟲數據集上進行實驗,本方法識別準確率達到95.31%,且在多種復雜情況仍取得較高識別準確率,可應用于田間水稻害蟲自動檢測系統。