王美華 吳振鑫 周祖光
(1.華南農業大學數學與信息學院, 廣州 510642; 2.暨南大學信息科學技術學院, 廣州 510632)
農作物病蟲害是一種嚴重的自然災害,需要對其進行及時預測和監控,以保證農作物的產量[1]。病蟲害的發生與種植制度、作物布局和氣候趨勢等因素息息相關,而普通農戶的小規模種植使病蟲害預測難度較大[2-3]。
傳統的機器學習方法一般經過病斑提取、邊緣特征提取后進行分類[4]。魏超等[5]將農作物病斑分割分為背景移除和病斑分割兩個階段,并由此進一步提出了一種病斑袋模型,以提取出更高層抽象的特征。然而,這種傳統機器學習方法對圖像的預處理步驟較為復雜,并且只能應用于個別植物的少量病蟲害檢測,可遷移性差。隨著深度學習技術的發展,病蟲害圖像數據日益充足,成功解決了傳統機器學習需要顯式提取病蟲害特征和可遷移性差的問題。利用深度學習技術泛化性強的特點,能夠同時對種類繁多的病蟲害進行識別檢測,大大提高了防治效果。國內外已有許多研究利用卷積神經網絡對農作物病蟲害進行識別[6-8]。通常來說,數據質量的優劣往往決定了模型質量的優劣,一個大而全的數據集(例如ImageNet)往往能夠訓練出效果較好的模型。然而,在病蟲害識別領域常常面臨數據量不足的問題,遷移學習技術[9]能夠利用已經標注好的數據提升模型精度,從而解決數據量不足的問題。許多研究表明,采用遷移學習并對卷積神經網絡模型的所有層進行精調,能夠最大程度提升原模型的基礎識別率[10-12]。
在利用深度學習和遷移學習進行圖像識別時,一般會在神經網絡中通過添加注意力模塊來提高識別準確率。然而,傳統的混合注意力模塊在細粒度多分類識別任務中表現不穩定,因此較難應用于此類任務中。
本文針對蘋果、番茄、辣椒等10種植物的細粒度識別進行研究。首先,在卷積神經網絡中采用全網絡層微調的遷移學習方法,以保證病蟲害識別模型準確率;針對傳統注意力模塊在細粒度多分類的識別任務中表現不穩定的問題,在遷移學習的基礎上提出一種對卷積注意力模塊(Convolutional block attention module,CBAM)[13]進行改進的混合注意力模塊(Improved CBAM,I_CBAM),以期在不同的卷積神經網絡中具有良好的可移植性和泛化性。
本文所用數據集為上海新客科技和創新工場聯合制作的農作物病蟲害圖像。數據集包含草莓、櫻桃和蘋果等10種作物的10種健康狀態和27種病蟲害,其中24種病蟲害又分為“一般”和“嚴重”狀態(例如:“蘋果黑星病一般”和“蘋果黑星病嚴重”),共計61類。本文所用數據集農作物病蟲害圖像共36 258幅,數據集部分圖像如圖1所示,其具體標簽如表1所示。將數據集圖像劃分為訓練集與測試集。其中,訓練集包含31 718幅圖像,測試集包含4 540幅圖像。
本文數據集大部分圖像尺寸300像素×400像素。為了滿足卷積神經網絡輸入圖像尺寸要求,將圖像尺寸統一縮放為224像素×224像素,然后在此基本上進行數據增強操作。
在通常條件下,用于訓練的數據越多,模型的精度就越高,其魯棒性和泛化性也越強。數據增強是深度學習中常用的數據擴充方法。本文在模型訓練時使用雙線性插值法、最近鄰插值法、雙三次插值法和面積插值法對圖像進行縮放操作,又將圖像隨機進行水平和垂直翻轉,從而將訓練數據集擴充至507 488幅,最后將圖像進行歸一化以提高模型學習速度。模型測試時,為了保證測試結果的穩定,測試圖像僅進行雙線性插值法縮放和歸一化操作。
卷積神經網絡(Convolutional neural network,CNN)是深度學習在圖像領域應用范圍最廣的一種神經網絡結構。本文以CNN為基礎,搭建病蟲害識別模型。首先,從病蟲害數據集中批量選取訓練圖像,隨后經過CNN提取圖像特征。再經過全連接層(類似于多層感知機[14])與Softmax層,產生預測分類。最后計算損失值,利用反向傳播調整網絡參數。本文利用卷積神經網絡進行病蟲害分類模型的訓練流程如圖2所示。
近年來,我國經濟一直呈現出一種增長的趨勢,但在發展過程中仍舊面臨著多種難題。外部環境在不斷地更新變化,出現了經濟新常態的環境特征,銀行業卻沒有隨之得以更新與調整,使得銀行業的發展遭遇到瓶頸。基于此,銀行業需要順應時代的變化,通過改革創新等措施來提升自身的服務質量,實現供給側改革,加強服務實體經濟的能力。
由文獻[5]可知,“病害程度”分類的錯誤主要集中在“病害程度”的判斷上。因此,對卷積神經網絡模型添加注意力,以提升對“病蟲害程度”此類細粒度任務的識別效果,從而提高模型的整體識別準確率。
2.2.1卷積神經網絡中的注意力機制
卷積神經網絡中的注意力機制分為軟注意力和強注意力兩種。其中強注意力不可微,常常用于增強學習,不屬于本文討論的范疇。軟注意力可微分,即可以通過訓練中的反向傳播進行自主更新[15]。本文所關注和使用的是軟注意力,軟注意力又可以分為空間域、通道域和混合域。其中,空間域和通道域是軟注意力所關注的方面。
空間注意力(Spatial attention)[16]可使神經網絡更加關注圖像中對分類起決定作用的像素區域,而忽略無關區域。通道注意力(Channel attention)[17]是一種考慮特征圖通道之間關系的注意力機制。混合域則是將上述兩種不同注意力組合起來。CBAM就是將卷積模塊中的空間注意力和通道注意力進行混合,實現從通道到空間的順序注意力結構,能夠嵌入到卷積操作之后,容易移植。
2.2.2改進CBAM
CBAM[13]模塊是先輸入特征圖F,經過通道注意力加權結果為F1。再經過空間注意力加權得到輸出特征圖F2,這是一種“串行(cascade)連接”的結構,其過程公式為
(1)
式中MC(F)——F經過通道注意力的輸出權值
MS(F1)——F1經過空間注意力的輸出權值
?——特征圖加權乘法運算符號
實際上,無論是先啟用通道注意力后啟用空間注意力(channel→spatial,即CBAM),還是先啟用空間注意力后啟用通道注意力(spatial→channel,即reverse CBAM,簡稱R_CBAM),排在后面的權值都是由排在前面的特征圖產生。而在這個過程中,認為排在前面的注意力把原始輸入特征圖“修飾”了。即排在后面的注意力機制所學習到的是被“修飾”過的特征圖,在一定程度上影響排在后面的注意力模塊所學習到的特征。尤其在細粒度分類任務中,這種由于“串行連接”而產生的干擾,會使注意力模塊的效果變得不穩定,對于準確率的提升也難以保證。
因此,為了解決這個問題,本文對CBAM的串行注意力模塊進行改進,將原來的“串行(cascade)連接”改為“并行(parallel)連接”,使兩種注意力模塊都直接學習原始的輸入特征圖,從而無需關注空間注意力和通道注意力順序,由此得到改進CBAM(I_CBAM)。I_CBAM先由輸入特征圖F分別經過通道注意力和空間注意力得到相應權值,最后將權值直接與原始輸入特征圖F加權得到輸出特征圖F2,其過程公式為
F2=MC(F)?MS(F)?F
(2)
式中MS(F)——F經過空間注意力的輸出權值
I_CBAM的整體結構如圖3所示。
實驗使用軟件為Python 3.5和深度學習框架Keras 2.3.1,以Tensorflow-gpu 2.0.0為后端,操作系統為Ubuntu 18.04.3 LTS。CPU為Intel Xeon E5-2678 v3@2.50 GHz,GPU為NVIDIA RTX 2080Ti,顯存11 GB。
首先使用混合注意力模塊CBAM中的channel attention(壓縮比為2)、spatial attention、CBAM、R_CBAM和本文提出的I_CBAM,在農作物病蟲害數據集上利用不同的卷積神經網絡模型進行預測準確率對比,以證明I_CABM的有效性和泛化性。 在模型訓練環節,隨機選取一個批次的圖像進行訓練,批尺寸為32。
本文采用Top-1準確率、Top-5準確率、作物品種(10類)準確率(預測的品種是否正確)、病害種類(27類)準確率(預測的品種和病蟲害種類是否正確)、病害程度(健康/一般/嚴重)(3類)準確率(預測的品種、病蟲害種類和相對應的嚴重程度是否正確)、平均一幅圖像前向傳播時間、模型規模和參數數量作為模型的評判標準。
由文獻[5]可知,分類錯誤主要集中在對于“病害程度”的判斷上,因此提升對“病害程度”的識別效果是提升模型識別準確率的關鍵。本文主要以Top-1準確率和病害程度準確率作為判斷模型效果的標準。
首先在表現穩定的InRes-v2[18]遷移學習模型(在包含1 000個類別的120萬幅圖像的ImageNet數據集中預訓練)中加入各注意力模塊進行對比實驗。由于InRes-v2包含Inception[19]結構和Resnet殘差連接結構[20],因此參考HU等[17]的嵌入方式,將注意力模塊放在Inception結構的拼接操作之后,最后與殘差相加。其在Inception-Resnet結構的具體嵌入方式如圖4所示。實驗選用Adam優化器,初始學習率為0.000 1,訓練50次。最終Top-1準確率如圖5所示,詳細指標如表2所示。
從表2可以看出,無論是以作物品種還是病蟲害種類為劃分,各模型的Top-5準確率均超過了99%,并且數值相當接近。而Top-1分類的錯誤主要受到“病害程度”判斷的影響,因此添加注意力模塊的首要目的,就是提升對“病害程度”的識別準確率。另外,從模型規模和參數數量的角度進行分析,由于CBAM中的channel attention存在兩個全連接層,因此參數數量增長明顯,模型規模翻倍。而spatial attention由于只需要保存一個7×7的卷積核,因此模型規模和參數數量都較小。

表2 InRes-v2嵌入各注意力模塊實驗結果Tab.2 Results of attention module experiments in InRes-v2
CBAM注意力的Top-1準確率并不理想,排序靠后的空間注意力學習到的是排序在前的通道注意力“修飾”過的特征圖,因此效果并不好。R_CBAM的Top-1準確率略高一些,考慮到排序在前的空間注意力沒有全連接層,因此對于原始輸入特征圖的“修飾”程度并不大,因此準確率有少許提升。但均未超過直接使用channel attention或spatial attention的模型,驗證了串行連接注意力會導致學習效果不好的結論。而本文提出的并行混合注意力模塊I_CBAM表現較優,其Top-1準確率和病害程度準確率達到了86.98%和89.15%,比CBAM提升了0.57、0.81個百分點。
雖然在大型自動化場景下使用基于InRes-v2嵌入I_CBAM模型效果出色,但是在日常使用的移動端應用中,卻難以部署InRes-v2這樣較大體量的模型。因此在輕量級移動端神經網絡MobileNet-v2[21]中嵌入I_CBAM模塊,進行對比實驗,以驗證I_CBAM在小型網絡上的效果。
MobileNet-v2是一個輕量級的模型,然而在實驗中使用ImageNet預訓練模型時,若在MobileNet-v2的每個inverted_res_block中都加入attention block,則會導致預訓練模型中的初始參數在訓練時被嚴重破壞,且模型的規模也變為原來的數倍,失去了MobileNet_v2在移動端的意義。因此,在MobileNet_v2的最后一個卷積后嵌入注意力模塊同時刪去此卷積后的批歸一化層(BN)層進行對比實驗,以減少參數的擾動,保證訓練時的魯棒性。對比實驗選用Adam優化器,初始學習率為0.000 01,訓練40次。實驗最終的Top-1準確率如圖6所示,其它部分指標如表3所示。
從表3可以看到,MobileNet-v2模型的參數數量僅為2.34×106,比InRes-v2模型的5.443×107縮減了5.209×107,并且準確率僅比InRes-v2低0.59個百分點,是移動端病蟲害識別的理想模型。在MobileNet-v2中添加各類注意力模塊后準確率有提升。其中,無論是Top-1準確率還是病害嚴重程度的識別準確率,添加了I_CBAM的模型均為最高,對于準確率的提升十分穩定,分別比MobileNet-v2模型提高了0.62、0.76個百分點,再次證明了I_CBAM的有效性和魯棒性。

表3 MobileNet-v2嵌入各注意力模塊實驗結果Tab.3 Results of attention module experiments in MobileNet-v2
激活熱力圖[22](Grad-CAM)能夠對模型的分類結果提供很好的可視化依據。因此,為進一步分析識別準確率差異的原因,本文提取了部分測試圖像在MobileNet-v2各注意力模塊對比實驗中的激活熱力圖,如圖7所示。其中,P表示經過Softmax函數分類后模型對于類別yi的判斷概率。可以觀察到,添加I_CBAM的模型比起其它模型能夠更準確地定位和選中葉片的病蟲害區域,對于正確分類的判斷效果也更好。
從InRes-v2和MobileNet-v2的對比實驗中可以觀察到,注意力模塊I_CBAM的參數主要來源于其中的Channel attention部分。例如InRes-v2模型參數數量為5.443×107,而添加Channel attention(壓縮比為2)后則達到了1.224 6×108,說明Channel attention 是參數數量增長的主要來源。在添加了Channel attention的注意力模塊(Channel attention/CBAM/R_CBAM/I_CBAM)中,本文在實驗中設置Channel attention全連接層的壓縮比為2,以突出學習效果。為了進一步縮減添加注意力模塊后的參數數量和模型規模,使模型更加輕量,在MobileNet-v2上對I_CBAM的Channel attention的壓縮比(2、4、8、16、32、64)進行了調參實驗,在盡可能地縮減模型規模的情況下保證識別準確率,其實驗結果如表4所示。
從表4中可以看到,當壓縮比為32時,模型的準確率與壓縮比為2時并沒有明顯的變化,且模型規模已縮減至28.3 MB,使得模型規模和準確率之間達到了較好的平衡。因此,使用32作為I_CBAM中Channel attention全連接層的壓縮比是一個極佳的選擇。此外,對比添加了I_CBAM的InRes-v2模型,調整壓縮比為32,不僅模型規模大大縮減,且前向傳播(預測)時間從13.4 ms減少至7.19 ms,大大提高了預測的響應速度。

表4 MobileNet-v2嵌入I_CBAM使用不同壓縮比的 實驗結果Tab.4 Results of using different reduction ratios for MobileNet-v2 embedded I_CBAM
除此之外,為了進一步驗證I_CBAM的泛化性和魯棒性,本文還在LeNet[23]、AlexNet[24]和改進AlexNet[25]3類卷積神經網絡上,采用模型隨機初始化參數的訓練模式,在每個卷積層后嵌入注意力模塊,再次進行了各注意力模塊的對比實驗。其中,LeNet對比實驗選用SGD優化器(初始學習率為0.01,衰減率為0.94);AlexNet對比實驗選用Adam優化器(初始學習率為0.000 1);改進AlexNet對比實驗選用Adam優化器(初始學習率為0.000 5);訓練次數均為40,最終Top-1準確率和病害程度準確率如表5、6所示。

表5 3種模型的Top-1準確率對比Tab.5 Top-1 accuracy comparison of three models %

表6 3種模型的病害程度準確率對比Tab.6 Disease severity accuracy comparison of three models %
從表5可以看出,CBAM和R_CBAM在不同模型中的表現并不一致。例如在改進AlexNet上添加CBAM與R_CBAM的模型準確率高于不添加注意力模塊的改進AlexNet,但在AlexNet添加注意力模塊后卻均低于不添加注意力模塊的AlexNet,而在LeNet上則呈現一高一低的情況。I_CBAM的模型表現則較穩定,在3種淺層卷積神經網絡上均取得了最高的準確率,在LeNet、AlexNet、改進AlexNet上添加I_CBAM后分別比不添加時的Top-1準確率分別提高了1.74、0.53、0.55個百分點,病害程度準確率分別提高了0.78、0.51、0.41個百分點。通過對3種淺層卷積神經網絡的再次對比,證明了I_CBAM具有泛化性和魯棒性。
為了便于用戶更好地使用,采用小程序搭建了用戶圖形界面。如圖8a所示,圖中選用的模型為添加了I_CBAM(壓縮比為32)的MobileNet-v2模型。通過拍攝或相冊上傳一幅圖像,然后選擇模型提交到小程序進行識別。小程序將相關信息發送給Python的Django框架搭建的系統后臺,系統后臺根據相關信息調用模型進行識別,并將識別的結果返回給小程序。小程序收到系統后臺的識別結果后,展示系統后臺的識別信息。
識別結果如圖8b所示,對于健康玉米圖像識別,準確率達到了99.99%。小程序將預測前5項概率的結果返回給用戶。如圖8c、8d所示,對于番茄斑枯病嚴重和馬鈴薯早疫病嚴重的識別準確率分別達到了99.65%和99.86%,而對于番茄斑枯病一般和馬鈴薯早疫病一般的預測概率則僅有0.32%和0.07%,在病害程度的判斷上非常精確。結果表明添加了I_CBAM的模型在細粒度分類任務上具有較好的應用效果。
(1)針對細粒度多分類病蟲害識別準確率低的問題,對串行連接混合注意力模塊CBAM進行改進,提出了一種并行連接的I_CBAM注意力模塊,解決了串行連接兩種注意力產生干擾的問題。
(2)為了驗證I_CBAM模塊的有效性和魯棒性,設計并對比了channel attention、spatial attention、CBAM、R_CBAM和I_CBAM在5種不同卷積神經網絡中的識別效果。結果表明,添加了I_CBAM的InRes-v2、MobileNet-v2、LeNet、AlexNet、改進AlexNet模型的Top-1(61類)識別準確率分別為86.98%、86.50%、80.97%、84.47%和84.96%,比未添加注意力模塊的原模型分別高0.51、0.62、1.74、0.53、0.55個百分點。說明I_CBAM在病蟲害細粒度分類上具有較優的識別效果,且在不同卷積神經網絡模型之間擁有良好的泛化性。
(3)對添加了I_CBAM的MobileNet-v2模型進行不同壓縮比的調參比對實驗,進一步縮減模型規模至28.3 MB,且預測一幅圖像的平均用時僅為7.19 ms。將該模型部署到移動端小程序上,具有良好的可視化應用效果。