王美華 吳振鑫 周祖光
(1.華南農(nóng)業(yè)大學數(shù)學與信息學院, 廣州 510642; 2.暨南大學信息科學技術(shù)學院, 廣州 510632)
農(nóng)作物病蟲害是一種嚴重的自然災(zāi)害,需要對其進行及時預(yù)測和監(jiān)控,以保證農(nóng)作物的產(chǎn)量[1]。病蟲害的發(fā)生與種植制度、作物布局和氣候趨勢等因素息息相關(guān),而普通農(nóng)戶的小規(guī)模種植使病蟲害預(yù)測難度較大[2-3]。
傳統(tǒng)的機器學習方法一般經(jīng)過病斑提取、邊緣特征提取后進行分類[4]。魏超等[5]將農(nóng)作物病斑分割分為背景移除和病斑分割兩個階段,并由此進一步提出了一種病斑袋模型,以提取出更高層抽象的特征。然而,這種傳統(tǒng)機器學習方法對圖像的預(yù)處理步驟較為復(fù)雜,并且只能應(yīng)用于個別植物的少量病蟲害檢測,可遷移性差。隨著深度學習技術(shù)的發(fā)展,病蟲害圖像數(shù)據(jù)日益充足,成功解決了傳統(tǒng)機器學習需要顯式提取病蟲害特征和可遷移性差的問題。利用深度學習技術(shù)泛化性強的特點,能夠同時對種類繁多的病蟲害進行識別檢測,大大提高了防治效果。國內(nèi)外已有許多研究利用卷積神經(jīng)網(wǎng)絡(luò)對農(nóng)作物病蟲害進行識別[6-8]。通常來說,數(shù)據(jù)質(zhì)量的優(yōu)劣往往決定了模型質(zhì)量的優(yōu)劣,一個大而全的數(shù)據(jù)集(例如ImageNet)往往能夠訓練出效果較好的模型。然而,在病蟲害識別領(lǐng)域常常面臨數(shù)據(jù)量不足的問題,遷移學習技術(shù)[9]能夠利用已經(jīng)標注好的數(shù)據(jù)提升模型精度,從而解決數(shù)據(jù)量不足的問題。許多研究表明,采用遷移學習并對卷積神經(jīng)網(wǎng)絡(luò)模型的所有層進行精調(diào),能夠最大程度提升原模型的基礎(chǔ)識別率[10-12]。
在利用深度學習和遷移學習進行圖像識別時,一般會在神經(jīng)網(wǎng)絡(luò)中通過添加注意力模塊來提高識別準確率。然而,傳統(tǒng)的混合注意力模塊在細粒度多分類識別任務(wù)中表現(xiàn)不穩(wěn)定,因此較難應(yīng)用于此類任務(wù)中。
本文針對蘋果、番茄、辣椒等10種植物的細粒度識別進行研究。首先,在卷積神經(jīng)網(wǎng)絡(luò)中采用全網(wǎng)絡(luò)層微調(diào)的遷移學習方法,以保證病蟲害識別模型準確率;針對傳統(tǒng)注意力模塊在細粒度多分類的識別任務(wù)中表現(xiàn)不穩(wěn)定的問題,在遷移學習的基礎(chǔ)上提出一種對卷積注意力模塊(Convolutional block attention module,CBAM)[13]進行改進的混合注意力模塊(Improved CBAM,I_CBAM),以期在不同的卷積神經(jīng)網(wǎng)絡(luò)中具有良好的可移植性和泛化性。
本文所用數(shù)據(jù)集為上海新客科技和創(chuàng)新工場聯(lián)合制作的農(nóng)作物病蟲害圖像。數(shù)據(jù)集包含草莓、櫻桃和蘋果等10種作物的10種健康狀態(tài)和27種病蟲害,其中24種病蟲害又分為“一般”和“嚴重”狀態(tài)(例如:“蘋果黑星病一般”和“蘋果黑星病嚴重”),共計61類。本文所用數(shù)據(jù)集農(nóng)作物病蟲害圖像共36 258幅,數(shù)據(jù)集部分圖像如圖1所示,其具體標簽如表1所示。將數(shù)據(jù)集圖像劃分為訓練集與測試集。其中,訓練集包含31 718幅圖像,測試集包含4 540幅圖像。
本文數(shù)據(jù)集大部分圖像尺寸300像素×400像素。為了滿足卷積神經(jīng)網(wǎng)絡(luò)輸入圖像尺寸要求,將圖像尺寸統(tǒng)一縮放為224像素×224像素,然后在此基本上進行數(shù)據(jù)增強操作。
在通常條件下,用于訓練的數(shù)據(jù)越多,模型的精度就越高,其魯棒性和泛化性也越強。數(shù)據(jù)增強是深度學習中常用的數(shù)據(jù)擴充方法。本文在模型訓練時使用雙線性插值法、最近鄰插值法、雙三次插值法和面積插值法對圖像進行縮放操作,又將圖像隨機進行水平和垂直翻轉(zhuǎn),從而將訓練數(shù)據(jù)集擴充至507 488幅,最后將圖像進行歸一化以提高模型學習速度。模型測試時,為了保證測試結(jié)果的穩(wěn)定,測試圖像僅進行雙線性插值法縮放和歸一化操作。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network,CNN)是深度學習在圖像領(lǐng)域應(yīng)用范圍最廣的一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。本文以CNN為基礎(chǔ),搭建病蟲害識別模型。首先,從病蟲害數(shù)據(jù)集中批量選取訓練圖像,隨后經(jīng)過CNN提取圖像特征。再經(jīng)過全連接層(類似于多層感知機[14])與Softmax層,產(chǎn)生預(yù)測分類。最后計算損失值,利用反向傳播調(diào)整網(wǎng)絡(luò)參數(shù)。本文利用卷積神經(jīng)網(wǎng)絡(luò)進行病蟲害分類模型的訓練流程如圖2所示。
近年來,我國經(jīng)濟一直呈現(xiàn)出一種增長的趨勢,但在發(fā)展過程中仍舊面臨著多種難題。外部環(huán)境在不斷地更新變化,出現(xiàn)了經(jīng)濟新常態(tài)的環(huán)境特征,銀行業(yè)卻沒有隨之得以更新與調(diào)整,使得銀行業(yè)的發(fā)展遭遇到瓶頸。基于此,銀行業(yè)需要順應(yīng)時代的變化,通過改革創(chuàng)新等措施來提升自身的服務(wù)質(zhì)量,實現(xiàn)供給側(cè)改革,加強服務(wù)實體經(jīng)濟的能力。
由文獻[5]可知,“病害程度”分類的錯誤主要集中在“病害程度”的判斷上。因此,對卷積神經(jīng)網(wǎng)絡(luò)模型添加注意力,以提升對“病蟲害程度”此類細粒度任務(wù)的識別效果,從而提高模型的整體識別準確率。
2.2.1卷積神經(jīng)網(wǎng)絡(luò)中的注意力機制
卷積神經(jīng)網(wǎng)絡(luò)中的注意力機制分為軟注意力和強注意力兩種。其中強注意力不可微,常常用于增強學習,不屬于本文討論的范疇。軟注意力可微分,即可以通過訓練中的反向傳播進行自主更新[15]。本文所關(guān)注和使用的是軟注意力,軟注意力又可以分為空間域、通道域和混合域。其中,空間域和通道域是軟注意力所關(guān)注的方面。
空間注意力(Spatial attention)[16]可使神經(jīng)網(wǎng)絡(luò)更加關(guān)注圖像中對分類起決定作用的像素區(qū)域,而忽略無關(guān)區(qū)域。通道注意力(Channel attention)[17]是一種考慮特征圖通道之間關(guān)系的注意力機制。混合域則是將上述兩種不同注意力組合起來。CBAM就是將卷積模塊中的空間注意力和通道注意力進行混合,實現(xiàn)從通道到空間的順序注意力結(jié)構(gòu),能夠嵌入到卷積操作之后,容易移植。
2.2.2改進CBAM
CBAM[13]模塊是先輸入特征圖F,經(jīng)過通道注意力加權(quán)結(jié)果為F1。再經(jīng)過空間注意力加權(quán)得到輸出特征圖F2,這是一種“串行(cascade)連接”的結(jié)構(gòu),其過程公式為
(1)
式中MC(F)——F經(jīng)過通道注意力的輸出權(quán)值
MS(F1)——F1經(jīng)過空間注意力的輸出權(quán)值
?——特征圖加權(quán)乘法運算符號
實際上,無論是先啟用通道注意力后啟用空間注意力(channel→spatial,即CBAM),還是先啟用空間注意力后啟用通道注意力(spatial→channel,即reverse CBAM,簡稱R_CBAM),排在后面的權(quán)值都是由排在前面的特征圖產(chǎn)生。而在這個過程中,認為排在前面的注意力把原始輸入特征圖“修飾”了。即排在后面的注意力機制所學習到的是被“修飾”過的特征圖,在一定程度上影響排在后面的注意力模塊所學習到的特征。尤其在細粒度分類任務(wù)中,這種由于“串行連接”而產(chǎn)生的干擾,會使注意力模塊的效果變得不穩(wěn)定,對于準確率的提升也難以保證。
因此,為了解決這個問題,本文對CBAM的串行注意力模塊進行改進,將原來的“串行(cascade)連接”改為“并行(parallel)連接”,使兩種注意力模塊都直接學習原始的輸入特征圖,從而無需關(guān)注空間注意力和通道注意力順序,由此得到改進CBAM(I_CBAM)。I_CBAM先由輸入特征圖F分別經(jīng)過通道注意力和空間注意力得到相應(yīng)權(quán)值,最后將權(quán)值直接與原始輸入特征圖F加權(quán)得到輸出特征圖F2,其過程公式為
F2=MC(F)?MS(F)?F
(2)
式中MS(F)——F經(jīng)過空間注意力的輸出權(quán)值
I_CBAM的整體結(jié)構(gòu)如圖3所示。
實驗使用軟件為Python 3.5和深度學習框架Keras 2.3.1,以Tensorflow-gpu 2.0.0為后端,操作系統(tǒng)為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,在農(nóng)作物病蟲害數(shù)據(jù)集上利用不同的卷積神經(jīng)網(wǎng)絡(luò)模型進行預(yù)測準確率對比,以證明I_CABM的有效性和泛化性。 在模型訓練環(huán)節(jié),隨機選取一個批次的圖像進行訓練,批尺寸為32。
本文采用Top-1準確率、Top-5準確率、作物品種(10類)準確率(預(yù)測的品種是否正確)、病害種類(27類)準確率(預(yù)測的品種和病蟲害種類是否正確)、病害程度(健康/一般/嚴重)(3類)準確率(預(yù)測的品種、病蟲害種類和相對應(yīng)的嚴重程度是否正確)、平均一幅圖像前向傳播時間、模型規(guī)模和參數(shù)數(shù)量作為模型的評判標準。
由文獻[5]可知,分類錯誤主要集中在對于“病害程度”的判斷上,因此提升對“病害程度”的識別效果是提升模型識別準確率的關(guān)鍵。本文主要以Top-1準確率和病害程度準確率作為判斷模型效果的標準。
首先在表現(xiàn)穩(wěn)定的InRes-v2[18]遷移學習模型(在包含1 000個類別的120萬幅圖像的ImageNet數(shù)據(jù)集中預(yù)訓練)中加入各注意力模塊進行對比實驗。由于InRes-v2包含Inception[19]結(jié)構(gòu)和Resnet殘差連接結(jié)構(gòu)[20],因此參考HU等[17]的嵌入方式,將注意力模塊放在Inception結(jié)構(gòu)的拼接操作之后,最后與殘差相加。其在Inception-Resnet結(jié)構(gòu)的具體嵌入方式如圖4所示。實驗選用Adam優(yōu)化器,初始學習率為0.000 1,訓練50次。最終Top-1準確率如圖5所示,詳細指標如表2所示。
從表2可以看出,無論是以作物品種還是病蟲害種類為劃分,各模型的Top-5準確率均超過了99%,并且數(shù)值相當接近。而Top-1分類的錯誤主要受到“病害程度”判斷的影響,因此添加注意力模塊的首要目的,就是提升對“病害程度”的識別準確率。另外,從模型規(guī)模和參數(shù)數(shù)量的角度進行分析,由于CBAM中的channel attention存在兩個全連接層,因此參數(shù)數(shù)量增長明顯,模型規(guī)模翻倍。而spatial attention由于只需要保存一個7×7的卷積核,因此模型規(guī)模和參數(shù)數(shù)量都較小。
表2 InRes-v2嵌入各注意力模塊實驗結(jié)果Tab.2 Results of attention module experiments in InRes-v2
CBAM注意力的Top-1準確率并不理想,排序靠后的空間注意力學習到的是排序在前的通道注意力“修飾”過的特征圖,因此效果并不好。R_CBAM的Top-1準確率略高一些,考慮到排序在前的空間注意力沒有全連接層,因此對于原始輸入特征圖的“修飾”程度并不大,因此準確率有少許提升。但均未超過直接使用channel attention或spatial attention的模型,驗證了串行連接注意力會導致學習效果不好的結(jié)論。而本文提出的并行混合注意力模塊I_CBAM表現(xiàn)較優(yōu),其Top-1準確率和病害程度準確率達到了86.98%和89.15%,比CBAM提升了0.57、0.81個百分點。
雖然在大型自動化場景下使用基于InRes-v2嵌入I_CBAM模型效果出色,但是在日常使用的移動端應(yīng)用中,卻難以部署InRes-v2這樣較大體量的模型。因此在輕量級移動端神經(jīng)網(wǎng)絡(luò)MobileNet-v2[21]中嵌入I_CBAM模塊,進行對比實驗,以驗證I_CBAM在小型網(wǎng)絡(luò)上的效果。
MobileNet-v2是一個輕量級的模型,然而在實驗中使用ImageNet預(yù)訓練模型時,若在MobileNet-v2的每個inverted_res_block中都加入attention block,則會導致預(yù)訓練模型中的初始參數(shù)在訓練時被嚴重破壞,且模型的規(guī)模也變?yōu)樵瓉淼臄?shù)倍,失去了MobileNet_v2在移動端的意義。因此,在MobileNet_v2的最后一個卷積后嵌入注意力模塊同時刪去此卷積后的批歸一化層(BN)層進行對比實驗,以減少參數(shù)的擾動,保證訓練時的魯棒性。對比實驗選用Adam優(yōu)化器,初始學習率為0.000 01,訓練40次。實驗最終的Top-1準確率如圖6所示,其它部分指標如表3所示。
從表3可以看到,MobileNet-v2模型的參數(shù)數(shù)量僅為2.34×106,比InRes-v2模型的5.443×107縮減了5.209×107,并且準確率僅比InRes-v2低0.59個百分點,是移動端病蟲害識別的理想模型。在MobileNet-v2中添加各類注意力模塊后準確率有提升。其中,無論是Top-1準確率還是病害嚴重程度的識別準確率,添加了I_CBAM的模型均為最高,對于準確率的提升十分穩(wěn)定,分別比MobileNet-v2模型提高了0.62、0.76個百分點,再次證明了I_CBAM的有效性和魯棒性。
表3 MobileNet-v2嵌入各注意力模塊實驗結(jié)果Tab.3 Results of attention module experiments in MobileNet-v2
激活熱力圖[22](Grad-CAM)能夠?qū)δP偷姆诸惤Y(jié)果提供很好的可視化依據(jù)。因此,為進一步分析識別準確率差異的原因,本文提取了部分測試圖像在MobileNet-v2各注意力模塊對比實驗中的激活熱力圖,如圖7所示。其中,P表示經(jīng)過Softmax函數(shù)分類后模型對于類別yi的判斷概率??梢杂^察到,添加I_CBAM的模型比起其它模型能夠更準確地定位和選中葉片的病蟲害區(qū)域,對于正確分類的判斷效果也更好。
從InRes-v2和MobileNet-v2的對比實驗中可以觀察到,注意力模塊I_CBAM的參數(shù)主要來源于其中的Channel attention部分。例如InRes-v2模型參數(shù)數(shù)量為5.443×107,而添加Channel attention(壓縮比為2)后則達到了1.224 6×108,說明Channel attention 是參數(shù)數(shù)量增長的主要來源。在添加了Channel attention的注意力模塊(Channel attention/CBAM/R_CBAM/I_CBAM)中,本文在實驗中設(shè)置Channel attention全連接層的壓縮比為2,以突出學習效果。為了進一步縮減添加注意力模塊后的參數(shù)數(shù)量和模型規(guī)模,使模型更加輕量,在MobileNet-v2上對I_CBAM的Channel attention的壓縮比(2、4、8、16、32、64)進行了調(diào)參實驗,在盡可能地縮減模型規(guī)模的情況下保證識別準確率,其實驗結(jié)果如表4所示。
從表4中可以看到,當壓縮比為32時,模型的準確率與壓縮比為2時并沒有明顯的變化,且模型規(guī)模已縮減至28.3 MB,使得模型規(guī)模和準確率之間達到了較好的平衡。因此,使用32作為I_CBAM中Channel attention全連接層的壓縮比是一個極佳的選擇。此外,對比添加了I_CBAM的InRes-v2模型,調(diào)整壓縮比為32,不僅模型規(guī)模大大縮減,且前向傳播(預(yù)測)時間從13.4 ms減少至7.19 ms,大大提高了預(yù)測的響應(yīng)速度。
表4 MobileNet-v2嵌入I_CBAM使用不同壓縮比的 實驗結(jié)果Tab.4 Results of using different reduction ratios for MobileNet-v2 embedded I_CBAM
除此之外,為了進一步驗證I_CBAM的泛化性和魯棒性,本文還在LeNet[23]、AlexNet[24]和改進AlexNet[25]3類卷積神經(jīng)網(wǎng)絡(luò)上,采用模型隨機初始化參數(shù)的訓練模式,在每個卷積層后嵌入注意力模塊,再次進行了各注意力模塊的對比實驗。其中,LeNet對比實驗選用SGD優(yōu)化器(初始學習率為0.01,衰減率為0.94);AlexNet對比實驗選用Adam優(yōu)化器(初始學習率為0.000 1);改進AlexNet對比實驗選用Adam優(yōu)化器(初始學習率為0.000 5);訓練次數(shù)均為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在不同模型中的表現(xiàn)并不一致。例如在改進AlexNet上添加CBAM與R_CBAM的模型準確率高于不添加注意力模塊的改進AlexNet,但在AlexNet添加注意力模塊后卻均低于不添加注意力模塊的AlexNet,而在LeNet上則呈現(xiàn)一高一低的情況。I_CBAM的模型表現(xiàn)則較穩(wěn)定,在3種淺層卷積神經(jīng)網(wǎng)絡(luò)上均取得了最高的準確率,在LeNet、AlexNet、改進AlexNet上添加I_CBAM后分別比不添加時的Top-1準確率分別提高了1.74、0.53、0.55個百分點,病害程度準確率分別提高了0.78、0.51、0.41個百分點。通過對3種淺層卷積神經(jīng)網(wǎng)絡(luò)的再次對比,證明了I_CBAM具有泛化性和魯棒性。
為了便于用戶更好地使用,采用小程序搭建了用戶圖形界面。如圖8a所示,圖中選用的模型為添加了I_CBAM(壓縮比為32)的MobileNet-v2模型。通過拍攝或相冊上傳一幅圖像,然后選擇模型提交到小程序進行識別。小程序?qū)⑾嚓P(guān)信息發(fā)送給Python的Django框架搭建的系統(tǒng)后臺,系統(tǒng)后臺根據(jù)相關(guān)信息調(diào)用模型進行識別,并將識別的結(jié)果返回給小程序。小程序收到系統(tǒng)后臺的識別結(jié)果后,展示系統(tǒng)后臺的識別信息。
識別結(jié)果如圖8b所示,對于健康玉米圖像識別,準確率達到了99.99%。小程序?qū)㈩A(yù)測前5項概率的結(jié)果返回給用戶。如圖8c、8d所示,對于番茄斑枯病嚴重和馬鈴薯早疫病嚴重的識別準確率分別達到了99.65%和99.86%,而對于番茄斑枯病一般和馬鈴薯早疫病一般的預(yù)測概率則僅有0.32%和0.07%,在病害程度的判斷上非常精確。結(jié)果表明添加了I_CBAM的模型在細粒度分類任務(wù)上具有較好的應(yīng)用效果。
(1)針對細粒度多分類病蟲害識別準確率低的問題,對串行連接混合注意力模塊CBAM進行改進,提出了一種并行連接的I_CBAM注意力模塊,解決了串行連接兩種注意力產(chǎn)生干擾的問題。
(2)為了驗證I_CBAM模塊的有效性和魯棒性,設(shè)計并對比了channel attention、spatial attention、CBAM、R_CBAM和I_CBAM在5種不同卷積神經(jīng)網(wǎng)絡(luò)中的識別效果。結(jié)果表明,添加了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在病蟲害細粒度分類上具有較優(yōu)的識別效果,且在不同卷積神經(jīng)網(wǎng)絡(luò)模型之間擁有良好的泛化性。
(3)對添加了I_CBAM的MobileNet-v2模型進行不同壓縮比的調(diào)參比對實驗,進一步縮減模型規(guī)模至28.3 MB,且預(yù)測一幅圖像的平均用時僅為7.19 ms。將該模型部署到移動端小程序上,具有良好的可視化應(yīng)用效果。