于雪瑩,高繼勇,王首程,李慶盛,王志強
(山東理工大學計算機科學與技術學院,山東淄博,255049)
蘋果是我國栽培面積最廣、消費量最大的水果[1],其生長過程中常受到多種病害的侵襲,準確識別其病害種類并及時防治,對于提高蘋果的產量和質量至關重要[2]。當前植物病害識別已成為圖像識別以及智慧農業領域內的重要研究方向[3]。傳統的機器學習算法需要對圖像經提取特征后進行分類,其特征提取過程耗時耗力,分類模型泛化能力弱、識別效果差[4]。卷積神經網絡(Convolutional neural network, CNN)能夠自動提取圖像特征,實現端到端的分類識別,目前已在植物病害識別領域得到廣泛應用[5-10]。但隨著網絡深度的增加,CNN在訓練過程中易出現梯度消失、梯度爆炸,導致網絡收斂速度變慢、網絡退化等問題。He等提出殘差網絡(Residual Network, ResNet),在殘差塊中引入捷徑連接(shortcut)能有效防止特征提取過程中信息的丟失,解決深層網絡的退化問題。但由于植物病斑多存在于葉片局部范圍,模型在訓練時會受到葉脈、輪廓等無關因素的干擾,使識別難度加大[11]。在網絡中添加注意力機制能夠使其更關注與病害特征相關的細節信息,有效提高模型的辨識能力[12-13]。陸雅諾等[14]在ResNet上添加通道注意力模塊,實現對啤酒花的識別任務。但通道注意力機制只在圖像的通道維度提取特征,而忽略了同一通道不同位置的特征。混合注意力機制(Convolutional block attention module,CBAM)通過將通道注意力模塊和空間注意力模塊融合,使模型訓練時能同時兼顧特征圖的空間和位置因素,從而更全面地對病斑特征進行處理。王粉花等[15]提出將I3D網絡和CBAM融合用于識別動態手勢。李海豐等[16]在DetMSPNet中加入CBAM用于機場路面的識別。
深度學習網絡在病害識別過程中需要大量訓練樣本圖像,以防止模型在訓練過程中出現過擬合現象。將數據集通過隨機翻轉、提高對比度、添加噪聲等方法進行擴充,能減少過擬合現象的出現[17],但這些方法生成的樣本數據不夠豐富且圖像特征與原始數據集區分度較低[18]。Goodfellow等[19]提出生成對抗網絡(Generative Adversarial Networks, GAN),通過生成器和判別器相互對抗生成豐富的樣本圖像用于模型的訓練。熊方康等[20]將GAN生成的訓練集輸入改進后的VGG-16模型,對土豆、番茄等農作物病害進行識別。但傳統GAN在訓練過程中采用的損失函數會導致模型出現梯度消失,以及對多樣性和準確性懲罰不平衡造成的模型崩潰[21]。基于Wasserstein距離的生成對抗網絡(Wasserstein GAN, WGAN)采用Wasserstein距離來度量真實樣本分布和生成樣本分布之間的差異,使模型具有更好的穩定性和收斂速度,提高生成圖像的質量和多樣性[22]。
針對上述問題,本文提出一種基于生成對抗網絡和混合注意力機制殘差網絡的方法。采用WGAN對原始數據集進行數據增強,生成更多的樣本數據。對殘差網絡的原始殘差塊進行改進,并嵌入混合注意力機制,使模型在訓練過程中將注意力更集中于病斑區域,對病害細節的分辨力更高。
試驗以蘋果健康葉片以及黑腐病、雪松銹病、斑點落葉病和黑星病4種常見蘋果病害葉片圖像作為研究對象,圖像分辨率統一設置為100×100。樣本數據來自Plant Village公共數據集,原始圖像3 207張,包括健康葉片980張,黑腐病621張,雪松銹病275張,斑點落葉病701張,黑星病630張,典型樣本如圖1所示。



(a) 黑腐病葉片 (b) 雪松銹病葉片 (c) 斑點落葉病葉片


(d) 黑星病葉片 (e) 健康葉片
其中,圖1(a)為黑腐病葉片,病斑中部凹陷呈深褐色;圖1(b)為雪松銹病葉片,表面接近枯萎,有大量淺褐色斑點;圖1(c)為斑點落葉病葉片,病斑為橘紅色小圓點;圖1(d)為黑星病葉片,表面有大量黑色斑點;圖1(e)為健康葉片。
GAN由生成器G和判別器D兩個部分構成,其結構如圖2所示。生成器根據輸入的隨機噪聲z得到生成樣本G(z),然后由判別器負責判斷接受的數據是真實樣本還是生成樣本。二者不斷進行迭代優化,在相互對抗訓練中使模型最終達到納什平衡。

圖2 生成對抗網絡結構
GAN的目標函數用于保證判別器能夠判斷樣本的真假,生成器能夠不斷優化網絡從而生成更多真實樣本,使圖像越來越逼真。目標函數如式(1)所示。

Ez~Pg[log(1-D(G(z)))]
(1)
式中:V(D,G)——損失函數;
Pd——真實樣本分布;
Pg——生成樣本分布。
當GAN的真實樣本分布和生成樣本分布之間不重疊時或重疊部分較少時,其等價于JS散度的目標函數會轉化為固定常數,此時生成樣本分布無法向真實樣本分布靠攏[23],導致訓練過程中出現模式崩塌、梯度消失等問題。采用Wasserstein距離代替JS散度對GAN進行優化,將目標函數約束到一個二次函數的范圍內,可以有效緩解梯度消失問題,其優化公式如式(2)所示。
(2)
其中,判別器在訓練過程中需要符合1-Lipschitz函數給定的約束范圍。
Wasserstein距離定義如式(3)所示。
(3)
其中,γ~∏(Pd,Pg)表示Pd和Pg任意組合的集合,從(x,y)~γ中采樣分別得到一個真實樣本x和生成樣本y,通過分布γ對樣本距離‖x-y‖的期望值E(x,y)~γ[‖x-y‖]取下界得到的即為Wasserstein距離。
WGAN模型及參數設置如圖3所示。其中,生成器由5個反卷積層(Conv2DTranspose)和4個批歸一化層(BatchNormalization,BN)構成,激活函數采用Leaky Relu;判別器由5個卷積層(Conv2D)和4個批歸一化層構成,激活函數采用Leaky Relu,由Flatten層將數據進行一維化,最后由Dense層輸出判別結果。

(a) 生成器

(b) 判別器
ResNet通過恒等映射結構,采用shortcut將多個淺層網絡連接起來,有效解決了深層網絡在訓練過程中出現的模型退化問題[24]。通過對ResNet的原始殘差塊進行改進,設計殘差塊結構如圖4所示。該殘差塊由卷積核大小分別為1×1、3×3、1×1的卷積層交替構成,并在卷積層之間分別插入3個批歸一化層。

圖4 殘差塊結構
殘差塊的目標函數H(x)定義如式(4)所示。
H(x)=F(x)+x
(4)
式中:x——輸入;
F(x)——殘差函數。
ResNet通過shortcut將擬合恒等映射函數轉化為學習一個殘差函數,即當F(x)趨向為0時,就構成了恒等映射H(x)=x。shortcut不僅解決了模型訓練的梯度消失、梯度爆炸問題,而且可以在不增加運算量的同時加快訓練速度。
CBAM由通道注意力模塊(Channel Attention Module, CAM)和空間注意力模塊(Spartial Attention Module, SAM)組成,二者通過串聯的方式從通道維度和空間維度依次推斷注意力權重,再分別與殘差網絡的卷積結果相乘實現對特征的調整,突出特征圖中的目標特征,提高模型的識別性能和準確率。
1.4.1 通道注意力模塊
CAM根據特征圖中不同通道對識別目標的響應程度的依賴關系進行建模,根據響應程度的不同對特征圖進行調整,并采用多層感知器計算各通道權重[25]。響應程度高的通道表示與識別目標相似,分配給較高權重;響應程度低的通道表示與識別目標差距較大,則分配給較低權重。CAM結構如圖5所示,實現步驟如下:(1)將輸入特征圖分別進行最大池化和平均池化,平均池化實現對通道特征的壓縮,最大池化可以收集到目標的特征信息;(2)池化后的特征圖送入由全連接層、平均池化層和最大池化層構成的多層感知器中進行參數共享;(3)對多層感知器輸出結果進行對位相乘并求和,然后通過sigmoid激活函數輸出通道注意力特征圖。

圖5 通道注意力模塊結構圖
通道注意力特征圖MC(F)的計算公式如式(5)所示。
MC(F)=σ{MLP[AvgPool(F)]+
MLP[MaxPool(F)]}
(5)
式中:F——輸入特征圖;
σ——sigmoid激活函數;
MLP()——多層感知器;
AvgPool()——平均池化;
MaxPool()——最大池化。
1.4.2 空間注意力模塊
SAM通過對特征圖的空間維度信息進行特征提取,加強網絡對特征圖像細節部分的關注和學習,從而實現對CAM的補充,其結構如圖6所示。實現步驟如下:(1)首先對輸入特征圖依次進行最大池化和平均池化,并將得到的兩個特征圖基于通道進行拼接;(2)將拼接后的特征圖送入卷積層中進行特征提取,再通過sigmoid激活函數最終輸出空間注意力特征圖。

圖6 空間注意力模塊結構圖
空間注意力特征圖MS(F′)的計算公式如式(6)所示。
MS(F′)=σ{f{[AvgPool(F′);MaxPool(F′)]}}
(6)
式中:F′——SAM的輸入特征圖;
f——卷積層運算。
CBAM-ResNet由1個卷積層、1個批歸一化層、3個conv block、1個全局平均池化層和1個全連接層構成,其結構如圖7所示。其中,每個conv block均由3個卷積層、3個批歸一化層組成的殘差塊和CBAM組成。輸入圖像首先經過卷積層進行特征提取,得到的特征圖依次經過三個conv block,然后經CAM操作后,與ResNet的卷積輸出相乘,并將得到的結果作為SAM的輸入,然后將輸入特征圖再與下一次ResNet的卷積輸出相乘得到輸出特征圖,最終經過全局平均池化和全連接層輸出病害分類結果。CBAM的輸出特征圖F″的計算公式如式(7)和式(8)所示。
F′=MC(F)?F
(7)
F″=MS(F′)?F′
(8)
式中:F″——CBAM的輸出特征圖;
?——元素乘法。

圖7 CBAM-ResNet網絡結構圖
試驗在64位的Windows10操作系統上進行,使用Python語言調用keras框架實現網絡的構建、訓練和測試。服務器配置16 GB ram AMD Ryzen 5 3600 6核處理器和16 GB ram Nvidia GeForce GTX 1660 Ti GPU。
殘差塊結構由多個不同尺寸卷積核的卷積層和批歸一化層組合構成,不同的組合結構會對殘差網絡的收斂能力、訓練速度和識別準確率產生影響。為確定最優結構,構建了如圖8所示四種不同的殘差塊結構。
采用上述四種不同的殘差塊并結合CBAM搭建模型,分別對病害圖像進行訓練,采用驗證集的平均準確率作為評價指標,結果如表1所示。殘差塊d相較于其他三種殘差塊對病害的準確率最高,因此采用殘差塊d。在殘差塊d后嵌入CBAM的模型準確率達到93.77%,效果較其他模型更好。因此,conv block在殘差塊d的基礎上嵌入CBAM。


(a) 1×1卷積層+ 3×3卷積層+2個批歸一化層 (b) 3個1×1卷積層+3個批歸一化層


(c) 4個3×3卷積層+4個批歸一化層 (d) 1×1卷積層+3×3卷積層+1×1卷積層+3個批歸一化層
不同超參數的設置會對模型的訓練速度和泛化能力產生影響,采用單一因素法對CBAM-ResNet學習率、迭代次數和批量大小分別進行優化,并采用驗證集準確率作為評價指標,結果如圖9所示。
學習率表示模型權重更新的速率,設置學習率在0.000 1~0.000 001的范圍內,得到模型準確率如圖9(a)所示。結果表明,當學習率設置過大時,代價函數波動太大,試驗結果不夠準確,設置過小則網絡模型收斂效果不理想,導致訓練時間增加。當選取學習率為0.000 05時,準確率達到最高值為93.94%。迭代次數指模型進行完整訓練的次數,模型的權重隨著迭代次數的增加而逐次更新迭代,設置迭代次數分別為5、10、15、20、25,得到模型準確率如圖9(b)所示。當選取迭代次數為15時,模型訓練已逐漸穩定且此時準確率達到93.1%。批量大小影響模型的優化程度和速度,試驗分別設置批量大小為5、10、15、20、25,得到模型準確率如圖9(c)所示。當選取批量大小為10時,模型在內存效率和容量之間尋找到最佳平衡點,此時準確率達到最高為94.3%。通過試驗證明,CBAM-ResNet的學習率、迭代次數和批量大小分別設置為0.000 05、15和10時,模型性能最優。

表1 不同殘差塊結構對模型的準確率對比Tab. 1 Comparison of the accuracy of different residual block structure models



(a) 學習率的設置對試驗結果的影響 (b) 迭代次數的設置對試驗結果的影響 (c) 批量大小的設置對試驗結果的影響
生成的圖像效果及訓練的loss曲線如圖10所示。


(a) 黑腐葉片WGAN后的loss曲線


(b) 雪松葉片WGAN后的loss曲線


(c) 班點落葉病葉片WGAN后的loss曲線

(d) 黑星葉片WGAN后的loss曲線


(e) 健康葉片WGAN后的loss曲線
采用WGAN對模型訓練樣本進行擴充,進行50 000次迭代訓練,將每類蘋果病害圖像均擴充到2 000張,將生成圖像與原始數據集混合得到模型數據集,共10 000張樣本圖像。從圖中可以看出,生成的蘋果葉片圖像病斑特征明顯,且不同病害之間有明顯區別。由loss曲線的變化趨勢可以看出,WGAN訓練前期生成圖像較不穩定,存在噪聲。當訓練次數達到50 000次左右,loss曲線已趨于穩定,生成的樣本圖像接近真實葉片圖像。
為驗證數據增強對模型性能的影響,分別采用原始數據集和經過WGAN增強后的數據集對CBAM-ResNet進行訓練,采用測試集的準確率作為評價指標,結果如圖11所示。圖11(a)表示采用原始數據集對模型進行訓練,隨著迭代次數的增多,訓練集和測試集準確率逐漸上升,在8次迭代之后曲線趨于平穩,最終測試集準確率穩定在92%左右;圖11(b)表示采用WGAN增強后的數據集對模型進行訓練,隨著迭代次數的增多,模型的訓練集和測試集準確率迅速上升,3次迭代之后曲線已趨于穩定,最終測試集準確率達到95.50%。試驗表明,采用WGAN進行數據增強能夠提高CBAM-ResNet的泛化能力和魯棒性,使模型更快地學習到病害特征,提高識別準確率。

(a) 采用原始數據集對模型訓練影響的準確率曲線

(b) 采用WGAN增強后的數據集對模型訓練影響的準確率曲線
為驗證CBAM-ResNet的有效性,將其與4種傳統深度學習模型CNN、VGG-16、ResNet-50、Inception-V3進行對比,采用隨機梯度下降法,使用WGAN數據增強后的樣本圖像作為數據集分別進行15次迭代的訓練,建立測試集混淆矩陣如圖12所示,其中顏色較深的對角線值代表模型對每類病害的正確分類數量。CBAM-ResNet對各類病害的平均正確分類樣本數高于其他四種模型。以雪松銹病為例,CBAM-ResNet對雪松銹病的誤分個數為4,誤分率為2%,而其他四種傳統模型誤分率分別為5%、7.5%、24%、3.5%,均高于CBAM-ResNet的誤分率。試驗結果表明,相較于其它深度學習模型,CBAM-ResNet對蘋果葉片各類病害的分類效果更好。
為進一步驗證CBAM-ResNet的識別性能,采用準確率(Accuracy)、精準率(Precision)、召回率(Recall)和F1-Score參數作為評價標準對五種模型進行性能對比,公式如下。
(9)
(10)
(11)
(12)
式中:ncorrect——測試集中預測正確的樣本數量;
ntotal——測試集總樣本數量;
TP——真實的正樣本數量;
FP——真實的負樣本數量;
FN——虛假的負樣本數量。
五種網絡模型對蘋果葉片病害的識別性能結果如表2所示。由表2可以看出,CBAM-ResNet相比于其他四種網絡模型,準確率分別提高了4.45%~7.78%,精確率分別提高了3.9%~7.37%,召回率分別提高了4.32%~7.3%,F1-Score參數分別提高了0.04~0.07,單次訓練識別時間分別加快了19~75 s。因此,CBAM-ResNet更適合對蘋果葉片病害的識別。

表2 不同網絡模型分類識別性能對比Tab. 2 Performance comparison of different network models

(a) CNN

(b) VGG-16

(c) ResNet-50

(d) Inception-V3

(e) CBAM-ResNet
為直觀地了解CBAM-ResNet對蘋果病害的識別機制,分別采用特征圖和熱力圖對模型進行可視化分析,結果如圖13所示。選取模型的第一層卷積層輸出特征圖,并采用Grad-CAM輸出熱力圖。由圖13可以看出,在特征圖中病斑區域呈現黑色或深綠色,未患病區域呈現黃色或淺綠色,熱力圖中病斑區域相較于未患病區域呈現高亮特征,說明CBAM-ResNet對葉片圖像中不相關的背景信息關注更少,模型更聚焦于葉片的病斑區域,能有效提取患病葉片中的病斑區域作為識別特征,從而獲得更高的識別準確率。健康葉片無病斑特征,模型識別時則以其輪廓作為分類依據。試驗結果表明,CBAM-ResNet可以更好地發現葉片圖像中的病斑區域,從而對蘋果葉片病害進行準確識別。

圖13 可視化分析結果
針對蘋果病害的識別問題,本文提出一種基于生成對抗網絡和混合注意力機制殘差網絡的方法,并通過試驗得出以下結論。
1) 對ResNet原始殘差塊進行改進,并依次嵌入CAM和SAM,提出一種基于混合注意力機制CBAM的改進模型CBAM-ResNet,使模型更關注葉片中的病斑區域,防止葉脈、輪廓等背景產生干擾,解決了傳統網絡對蘋果葉片病害識別時準確率不高的問題。
2) CBAM-ResNet相較于CNN、VGG-16、ResNet-50、Inception-V3四種傳統模型,準確率分別提高了4.45%~7.78%,精確率分別提高了3.9%~7.37%,召回率分別提高了4.32%~7.3%,F1-Score參數分別提高了0.04~0.07,單次訓練識別時間分別加快了19~75 s,因此更適合進行蘋果葉片病害的識別。
3) 采用WGAN進行數據增強有效地擴充了原始數據集,解決了訓練樣本數據量不足和不均衡的問題,使模型準確率從92.43%提升至95.50%。因此,采用WGAN進行數據增強能夠提高模型的泛化能力和魯棒性,從而提升模型的識別準確率。
4) 由于WGAN訓練過程有一定不穩定性,在生成的樣本圖像中存在少數不符合葉片特征的圖像。因此,如何進一步優化WGAN生成的樣本圖像,減少含有噪聲的葉片圖像數量成為接下來的研究方向。