宋余慶 謝 熹 劉 哲 鄒小波
(1.江蘇大學計算機科學與通信工程學院, 鎮江 212013; 2.江蘇大學食品與生物工程學院, 鎮江 212013)
我國是農業大國,農業是國民經濟的基礎。我國農作物種類較多、種植范圍較廣,僅依靠人工方式對病蟲害進行管理消耗大量人力[1]。只有對各種農作物病蟲害進行及時診斷和預防,才能確保農業生產的豐收[2]。
近年來,隨著科學技術的迅速發展,計算機視覺研究取得了極大的進步,國內逐漸將其應用到農業生產上。謝春燕等[3]利用光譜和圖像之間的關系設計了圖像和光譜信息融合的病蟲害葉片檢測系統,基本做到了無損檢測與識別。隨著深度學習的快速發展,圖像分類任務的精度得到了較大提升[4-5]。最早提出的LeNet-5[6]用于MNIST數據集分類,取得了較高的準確率,隨后又提出了AlexNet[7]、GoogleNet[8]、VGG[9]、ResNet[10]、DenseNet[11]、CSPNet[12]等模型,在圖像分類[7]上準確率得到進一步提升。深度學習方法也逐漸應用于農作物病蟲害檢測研究中,ZHANG等[13]利用VGG-16模型對不同時期病菌感染的蘋果葉片進行分類,準確率達到90.4%。YANG等[14]提出基于深度卷積神經網絡的模型,對水稻病葉進行識別,精度達到了95.48%。由此看出,深度學習方法能夠快速從大規模數據集中學習到需要進行分類任務的特征,使計算機視覺任務能夠獲得更高的效率和精度。本文提出通過多層次網絡模型深度學習方法來提高農作物病蟲害的識別率。
空洞卷積(Dilated/atrous convolution),也叫膨脹卷積,是在標準的卷積核里面注入空洞,以此來增加感受野[15]。相比一般的卷積操作,空洞卷積多了一個超參數稱為空洞率,指卷積核中每個元素之間的間隔數量,傳統的空洞卷積操作如圖1所示。

圖1 空洞卷積Fig.1 Dilated convolution
圖1a為空洞率為1的3×3卷積。圖1b為空洞率為2的3×3卷積,實際的卷積核還是3×3,但是空洞數為1,也就是對于一個7×7的圖像,只有其中9個紅色的點和3×3的卷積核進行卷積操作,其余點忽略。可以看到雖然卷積核為3×3,但感受野已經增大到了7×7。圖1c是空洞率為4的卷積操作,在空洞率為1和空洞率為2的卷積后面,能達到15×15的感受野。對比傳統的卷積操作,3個步長為1的3×3卷積操作疊加起來只能達到7×7的感受野,隨著卷積數量的線性增長,空洞卷積的感受野呈指數級增長。
傳統卷積是同時考慮區域和通道的,而在可分離卷積中,可將區域和通道分開計算,先進行卷積計算,再進行通道數轉換[16],如圖2所示。比如,假設一個n×n的濾波器,其輸入通道數為c,輸出通道數為c′。傳統卷積的參數量為n2cc′,而采用可分離卷積,參數量僅需n2c+cc′=(n2+c′)c,隨著輸出通道數增多,參數量增長趨勢變慢。

圖2 深度可分離卷積計算過程Fig.2 Computation of depth separable convolution
本研究基于深度學習方法對農作物病蟲害圖像進行分類識別,首先加載數據集,對數據進行預處理,然后將圖像送入構建的多層EESP網絡進行訓練,進行多層次特征提取,最后通過Softmax函數對獲取到的特征進行病蟲害種類識別。基本流程如圖3所示,其中,Pn表示預測為第n種病蟲害的概率。

圖3 本文方法流程圖Fig.3 Flow chart of the proposed method
目前,大多數分類數據集包含較多的類別,且每個類別包含的樣本數量各不相同,少則幾乎沒有,多則幾千幅圖像,如圖4所示。

圖4 數據集各類別樣本分布Fig.4 Sample distribution for each category of dataset
樣本不平衡會帶來過擬合等一系列問題[17],另外訓練集和驗證集不同類別樣本分布幾乎一致,因此進行重采樣非常有必要。
為了解決樣本不平衡問題,可剔除樣本數量過少的類別。對于剩余類別,進行樣本重采樣處理,具體算法如下:
輸入:D: 病蟲害數據集;
c: 類別數
輸出:L: 列表
計算類別i的樣本數量,取平均數下界Savg;
fori=1:cdo:
ifi<=Savg:
為類別i生成一個長度為Savg的隨機排列的列表Li;
用列表Li中的id值對對應類別的數量Si取余,獲得對應的索引值;
根據索引值找到對應的圖像;
將第i類的列表添加到總列表L中.
end if
end for
對L做一個隨機排序,得到最后的圖像列表.
returnL
圖5為重采樣算法的一個案例。通過重采樣算法的預處理,解決了不同類別之間樣本不均衡的問題,同時保證了數據集不會過大,處理后的數據集分布如圖6所示。

圖5 重采樣算法Fig.5 Resampling algorithm

圖6 重采樣算法處理之后的數據集樣本分布Fig.6 Sample distribution of dataset after resampling
2.2.1ESP和EESP模塊
高效空間金字塔(Efficient spatial pyramid, ESP)卷積模塊最早由MEHTA等[18]在2018年提出,最開始用于圖像的語義分割。不過由于它具備很好的拓展性和魯棒性,經過改進之后在計算機視覺的其它任務中也獲得很多應用,具體結構如圖7a所示。ESP模塊基本步驟如下:①對M維的輸入特征使用d個M×1×1的卷積核,將特征降至d維。②使用k個不同膨脹率的卷積核對步驟①輸出的特征進行卷積,得到k個大小相同的特征圖。③對上一層輸出的k個特征圖按一定規則進行拼接和融合,得到最終的輸出。
為了使計算更加高效,MEHTA等[19]又提出了增強高效空間金字塔(EESP)卷積模塊,如圖7b所示,對ESP模塊做了如下改進:①將ESP的point-wise卷積層替換為group point-wise 卷積層。②將ESP的傳統空洞卷積層替換為depth-wise空洞卷積層。③在ESP步驟③之后使用一個group point-wise卷積層來學習輸入層之間的線性組合。
與ESP相比,EESP可以減少許多參數,從而很大程度上提高效率。
圖7中,Conv表示傳統的可分離卷積操作,DConv-k表示空洞率為k的空洞卷積,DDConv-k表示空洞率為k的depth-wise空洞卷積。(n×n×d,d)表示d個通道數為d的n×n卷積核。

圖7 ESP、EESP模塊結構Fig.7 Structure of ESP and EESP
2.2.2多層次EESP模型的結構
EESP模塊顯著提升了視覺任務的效率,但是由于各種植物的病蟲害區域及尺寸各不相同,單一的EESP模塊在農業病蟲害數據集上并不能很好地進行分類,所以考慮使用多層EESP模塊,將它們的輸出堆疊到一起進行分類,能顯著提升分類的準確率。
為了解決圖像的尺度不平衡問題,本文采用多層EESP模型進行分類,如圖8所示,其中pi(i=1,2,…,5)為對應層特征圖的尺寸。
原圖經過預處理后通過一個步長為2的卷積,先進入第1層EESP組合模塊(EESP-1),它由5個EESP模塊串聯構成,EESP-1中每個EESP模塊的空洞卷積的空洞率依次設為1、2、3、…,可以保證在一個塊內提取比較細小的病蟲害特征。第5個EESP模塊處理完成后,進行一次下采樣操作,執行步長為2的平均池化操作。為了增強圖像病蟲害區域的原始特征信息,將它的輸出和經過3×3平均池化操作(步長為2)的原圖進行疊加操作,再將疊加的結果作為輸入進入第2層EESP組合模塊(EESP-2),以此類推,直到第5層EESP組合模塊(EESP-5)處理完成。模型各層的參數設定如表1所示(輸入圖像為224像素×224像素)。
5層EESP組合模塊都處理完成之后,將每層疊加的結果進行全局平均池化,進行層級拼接操作。層級之間的拼接原則如下:一階EESP:選取最后一層處理之后特征。二階EESP:選取第4層和第5層處理之后特征。三階EESP:選取第3、4、5層處理之后特征。四階EESP:選取第2、3、4、5層處理之后特征。五階EESP:選取5個層處理之后特征。

圖8 多層EESP模型結構Fig.8 Multi-level EESP model structure
每層特征提取出來之后,各自進行一次池化操作,池化層的卷積核根據對應層特征圖的尺寸進行選擇,確保池化之后得到的特征圖尺寸為1×1。然后把各層的特征進行拼接(Concat)操作,之后再進行分類。這樣能夠保證不同尺寸的病蟲害區域被識別并正確分類,從而顯著提高分類精度。
多層EESP模型的訓練算法如下:
輸入:I: 病蟲害圖像
n: 輸出層數
輸出:θ: 網絡參數
θ: 初始化參數

表1 多層EESP模型各層參數Tab.1 Parameters for each layer of multi-level EESP model
fori=1∶5 do:
分配EESP模塊空洞卷積的空洞率:i,i+1,i+2, …;
ifi>5-n:
進行池化及特征拼接操作;
計算每幅圖像的類別得分;
和真實類別對比,計算損失函數L(θ);
end for
returnθ
采用的數據集來自AI Challenger 2018 (https:∥challenger.ai/competition/pdr2018),按照物種-病害-程度分類,包含10個物種,共61個病蟲害。帶標簽的數據包含32 768幅訓練集圖像和4 992幅驗證集圖像。表2展示了部分植物不同程度的病蟲害圖像。
使用該數據集59個類別(去除第44、45類),共計32 766幅圖像進行訓練。采用Pytorch框架進行實現,在2塊NVIDIA GTX 2080Ti顯卡上進行實驗,并使用CUDA9.0和cuDNN作為支持。
3.2.1模型參數設置
目前訓練網絡模型的方式有多種,包括所有網絡的權重隨機初始化生成,也可以使用在其他網絡上預訓練的網絡權重參數。本文選擇在ImageNet[20]上訓練好的權重參數進行初始化,采用和ESPNetv2[19]相同的訓練方式,每次迭代的學習率ηt計算公式為
表2 部分植物不同程度病蟲害圖像
Tab.2 Images of different crop diseases in several plants

ηt=ηmax-(t mod T)ηmin
(1)
式中t——迭代次數
ηmin——學習率的下界
ηmax——學習率的上界
T——循環周期 mod——求余操作函數
取ηmin=0.1,ηmax=0.5,T=5。網絡的Batch size設置為256,迭代次數設置為300,每50次迭代后學習率減半。例如,第128次迭代的學習率為0.05。通過優化交叉熵損失函數來訓練得到最優模型。
(2)
其中
式中fni(x)——經過Softmax函數處理后的分類向量中的第i項
xi——預測分類向量中的第i項元素
xj——預測分類向量中的第j項元素
yni——指示標量,指示第i個樣本預測的類別,將該類對應的值標識為1,其余標識為0
N——樣本數量
wj——第j個預測分類向量的權重向量
R(wn)——L2正則項C——類別數量
λ——自定義常量,設為4×10-5
3.2.2評價指標
該模型在4 992幅驗證集圖像上進行測試(同樣去除對應的第44、45類)。采用圖像分類任務里面常用的Top1和Top5評價指標進行模型評價。Top1指取最后輸出的概率向量中概率最大的類別作為預測類別,如果和真實類別一致則預測正確,否則預測錯誤;Top5指取最后概率向量中最大的前5個概率的類別,其中只要包含了真實類別即為預測正確。
對一階和三階EESP結構模型進行比較,訓練損失如圖9所示。從圖中可以看出,三階EESP模型損失下降得更快,因為三階EESP模型從3個不同的EESP進行輸出,融合了不同尺度下的特征,使得不同農作物病蟲害特征更加豐富,分類更加準確。另外,在經過200次迭代后,由于加入了L2正則項,損失變得逐漸平緩,模型趨于穩定,所以訓練后期的曲線會出現一定的波動。

圖9 訓練損失值的變化曲線Fig.9 Change curves of train loss
各模型的測試準確率見表3。從表3中可以發現,三階EESP的模型分類效果最佳,即把第3、4、5層處理之后的特征疊加起來能獲得最佳的特征。主要原因是不同層能夠提取不同分辨率的病蟲害圖像特征,小的特征在前面的層得以保留,大的特征在后面的層更加明顯,不同層的特征拼接之后能夠進行準確分類。不過并不是層數越多就越好,可以看到四階和五階EESP模型得到的準確率和三階模型非常接近,原因是從低層EESP模塊提取到的病蟲害區域特征不明顯,將特征拼接之后對分類的幫助并不大,準確率提升并不顯著,反而增加了模型的復雜度。

表3 各模型測試準確率Tab.3 Testing accuracy of models of different levels %
另外,比較各階模型在不同迭代次數下的準確率,如圖10所示。可以看出,針對任意階EESP模型,隨著訓練迭代次數的增加準確率不斷提高,在300次后趨于平穩,因此選擇迭代次數為300。

圖10 不同模型的Top1準確率Fig.10 Top1 accuracy of different models
表4為傳統分類網絡[24]結果比較,發現使用多層EESP結構之后Top1準確率明顯提升,Top5依然穩定在較高水平,這說明使用不同分辨率的空洞卷積對特征提取有較大的幫助。

表4 傳統分類網絡測試準確率Tab.4 Testing accuracy of classical models %
(1)基于多層特征融合,結合空洞卷積理論構建多層EESP模型,提出了基于多層特征融合的農作物病蟲害識別方法,實現了對農作物病蟲害圖像的精確分類,Top1分類準確率最高達到88.4%。
(2)通過與傳統網絡模型進行比較,結果表明,本文方法對農作物病蟲害圖像的分類效果提升較為明顯。