楊 祥,段軍明,董明剛
(桂林理工大學信息科學與工程學院,廣西桂林 541000)
植物病害種類各種各樣,植物病害識別的傳統方法是基于植物研究專家進行直觀的觀察和監測,該方式需要專業人員在一個特定區域中持續進行監測,這需要消耗大量的人力資源且產生巨大的經濟開銷。現如今隨著智能信息化的進步,人工智能技術,特別是深度學習技術給人們的生活工作等多方面提供了巨大的便利,利用人工智能去替代傳統的人工鑒別方式,十分有利于提高識別速度,快速準確定位農業植物發病原因。孫云云等通過使用經典卷積神經網絡(CNN)AlexNet完成對茶葉病害的圖像識別[1];許景輝等通過遷移學習將VGG-16卷積神經網絡應用在玉米葉片病害中,平均識別率達到95.33%[2];宋晨勇等對GoogLeNet模型進行改進,在蘋果病害識別上的精準率達到98.4%[3];劉翱宇等利用ResNet50網絡通過引入Focal Loss損失函數在識別玉米病害上的準確率高達98.96%[4]。傳統的卷積神經網絡AlexNet[5]、VGG[6]、GoogleNet[7]、ResNet[8]等因參數多、計算復雜度高,運行時需要豐富的計算資源和較大的存儲空間,因此限制了在資源有限的移動端設備中應用。
在現實生活中,研究一種低計算成本、高性能的方法用于植物病害識別是目前最廣泛的需求。為了使卷積神經網絡在不降低識別率的條件下,降低參數量和模型復雜程度進而降低識別成本,本研究提出了一種輕量級CNN植物病害圖像識別方法,通過采用輕量級卷積神經網絡ShuffleNet V2 1.5×架構,在原網絡中通過引入跨階段局部網絡(Cross-Stage Partial Network,CSPNet)[9]結構和高效通道注意力(Efficient Channel Attention,ECA)[10]模塊來達到降低模型參數量和增強模型對病害圖像重要特征信息的效果,并通過將深度卷積層中的卷積核大小由3×3改成5×5來改善卷積操作的感受野,達到更多病害圖像細節信息特征的保留。
本研究使用了AI Challenger 2018平臺提供的官方農作物病害檢測數據集,該數據集旨在為人工智能領域的研究人才構建大規模、全面的研究數據集和世界水平的競爭平臺。該數據集中總共有10種農作物、61組病害類別,每張圖片包含1種植物的葉片病害圖,葉子占據圖片中間重要位置。從該數據集中選取4種農作物作為本研究的數據集,這4種分別為辣椒、蘋果、馬鈴薯、葡萄。試驗數據集總共9 518張葉片病害圖像,包含17組葉片病害類別,其中4組健康葉片、13組病害葉片(圖1)。

為減少圖像大小不規則造成的識別誤差,對圖片進行統一裁剪,并確保輸入網絡中的圖像尺寸為224像素×224像素。同時對圖片進行了長寬比裁剪、隨機水平和垂直翻轉、隨機30°旋轉、圖像仿射、圖像歸一化等操作實現數據增強效果,以避免訓練過程中出現過擬合現象。
1.3.1 深度可分離卷積模塊 輕量級卷積神經網絡主要采用深度可分離卷積結構[11]來減少網絡的參數量和計算量,其結構的核心包括深度卷積(depthwise convolution,DW)和逐點卷積(pointwise convolution,PW),其作用為濾波和線性組合。深度卷積和逐點卷積過程見圖2。


由此可見,深度可分離卷積能夠有效減少網絡參數量,降低計算資源消耗。實際網絡設計過程中,DW的卷積核大小通常采用3×3,而經過PW后輸出特征圖通道數N往往比較大。由深度可分離卷積的算力消耗可知,深度可分離卷積的計算量大部分在PW上,因此將DW的卷積核大小由3×3改為5×5,并不會增加較大的參數量,反而能夠擴大圖像感受野,提取更多圖像的細節特征信息。
1.3.2 通道注意力ECA模塊 植物葉片病害形狀、大小不固定,為了獲取充足的病害圖像特征信息,降低有效的圖像信息丟失,引入有效的通道注意力模塊,它是一種捕獲局部的跨通道信息互動的注意力機制,在通道注意力SENet[12]模塊的基礎上去掉維度降低操作,避免降維過程對學習通道注意的影響。圖3為ECA模塊的結構示意圖。ECA在對輸入的特征圖進行全局平均池化之后,利用核大小為k的一維卷積來為每個特征通道生成權重,每個特征通道乘以不同的權重系數,達到對各個通道特征信息的關注,最后與輸入特征圖進行乘法加權獲得最終通道特征信息的標定[13]。
ω=σ[CIDk(y)]
。
(4)
式中:ω表示最終通道權重;σ表示Sigmoid激活函數;y表示輸入通道特征;CID表示一維卷積;核大小k的取值決定跨通道信息交互的區域。
特征圖的通道數C與核大小k有一定的對應關系,如公式(5)所示,通道數C均為2的倍數。
C=2(γ×k-b)
。
(5)
因此,ECA模塊核大小k的自適應取值可表示為公式(6)。其中|t|odd表示取與t最近的奇數值,γ和b的值取為2和1。
(6)

1.3.3 跨階段局部網絡結構 跨階段局部網絡的主要目的是增強CNN的學習能力,減少網絡在優化過程中出現重復梯度信息來降低計算量。CSPNet設計思路是通過對輸入特征圖的通道進行平均劃分,由一部分進入基礎網絡塊(比如殘差結構、深度可分離結構)進行特征提取,另一部分直接與第一部分特征提取得到的結果進行合并輸入到過渡層,實現梯度通過不同路徑進行傳播,使得梯度信息具有相關性和差異性。CSPNet結構圖見圖4。

1.3.4 輕量級網絡模型整體框架 卷積神經網絡模型結構包括但不限于輸入層、卷積層、池化層、全連接層以及輸出層等[14],例如VGG16、ResNet50[15]等。這些網絡的設計往往都傾向于網絡層次更深、結構更加復雜化,復雜模型帶來的高計算量、存儲和功耗的缺點限制了網絡在移動端上的應用與普及。為了讓模型運行在資源有限的移動端上,選取輕量級網絡ShuffleNet V2[16]作為試驗的基本網絡,ShuffleNet V2網絡卷積操作集中在3個stage部分,每個stage之間通過控制設置步距為2來縮小輸入特征圖尺寸,stage內部特征圖像大小是保持不變的,表1為ShuffleNet V2 1.5×網絡結構詳情。改進網絡模型在stage結構內部融入CSPNet,將空間下采樣單元作為CSPNet的基礎輸入層,通過通道劃分將輸入圖像的維數一分為二:一部分經ShuffleNet V2的基本單元模塊進行特征圖像提取操作,另一部分經過一個1×1的卷積操作之后接入批量標準化層(batch normalization,BN)[17]和ReLu激活函數,使得通過的特征信息分布有規律減少梯度爆炸現象,加快網絡收斂速度。為擴大提取病斑圖像特征視野,將網絡中DW卷積的卷積核大小使用5×5代替原來的3×3,在通過第1個PW卷積后增加通道注意力ECA模塊有利于網絡關注病害圖像的通道特征信息。最終將經過2條不同路徑輸出的結果進行合并相連,再進行通道混洗操作,減少模型參數量和計算量,構建成改進網絡CSP-ShuffleNet V2的CAP-stage基礎單元結構,如圖5所示。圖6為改進網絡CSP-ShuffleNet V2模型的框架結構。

表1 ShuffleNet V2 1.5×網絡結構詳情
1.4.1 訓練環境 試驗硬件環境為Intel? CoreTMi5-10400F CPU@2.90 GHz,24.00 GB RAM 和Nvidia GeForce GTX 1650 4G顯存。軟件環境為Windows 10版本64位系統,Python版本為Python 3.7,采用開源的人工智能框架Pytorch 1.7.1。
1.4.2 訓練方法 數據集按照8 ∶1 ∶1的比例劃分為訓練集、驗證集和測試集。在每一次迭代前訓練集都會被隨機打亂,確保每次學習的數據分布不會固定。學習率優化上使用隨機梯度下降算法(stochastic gradient descent,SGD),學習速率初始值設為0.05。由于SGD在學習過程中會出現學習過慢的情況,所以引入動量方法,加速學習能力。其中動量設置為0.9,每一階學習率衰減值為 4×10-5。批量大小設置為16,訓練迭代次數為50。試驗損失函數使用交叉熵損失函數,使用checkpoint方法,保存訓練過程中性能最好的模型。此外,當訓練過程中連續5次模型的性能指標沒有提升時,學習率降為原來的0.2倍。為防止網絡訓練過程出現過擬合現象,在網絡的全連接層之前加入Dropout技術[18],設置失效神經元的概率值為0.2。網絡訓練和測試的整體流程見圖7。


為驗證本研究改進的網絡模型對病害識別效果的有效性,采用ResNet50、MobileNet V2、GoogleNet、DenseNet121、ShuffleNet V2 1.5×、CSP-ShuffleNet V2 1.5×共6個網絡模型進行病害識別對比驗證。試驗結果如表2所示,改進后的網絡CSP-ShuffleNet V2 1.5×比其他網絡模型的識別準確率高,在參數數量上最小,權重大小僅有13.5 MB。
由圖8可知,迭代50次損失曲線中改進的網絡CSP-ShuffleNet V2比其他5個網絡模型的損失率都要低,并且收斂速度比其他網絡要快,在第16次迭代后損失就趨于穩定狀態,因此改進的網絡模型在植物病害數據集上具有較強的抗干擾能力和魯棒性。
從圖9可以看出,在驗證集上改進的網絡CSP-ShuffleNet V2對植物葉片病害識別的準確率上升速度快,優于其他5個網絡模型,其中ResNet50網絡的準確率最低且曲線波動較大。改進的網絡CSP-ShuffleNet V2通過利用CSPNet和ECA等網絡優化策略的結合達到了降低網絡參數量的目標,使網絡的泛化能力增強,加快了準確率的上升速度,減少了網絡達到穩定所需的時間。


表2 不同網絡模型的訓練結果

表3為6種網絡模型在17種病害測試集上的分類準確率,其中改進的網絡CSP-ShuffleNet V2在辣椒健康(C0)、辣椒瘡痂病一般(C1)、蘋果健康(C3)、蘋果灰斑病(C6)、馬鈴薯健康(C7)、馬鈴薯早疫病一般(C8)、馬鈴薯早疫病嚴重(C9)、葡萄健康(C12)、葡萄輪斑病一般(C15)這9類葉片上的識別準確率均在90%以上,分別是100.00%、90.00%、98.73%、100.00%、99.17%、93.10%、96.30%、100.00%、96.75%,在辣椒瘡痂病嚴重(C2)、蘋果黑星病一般(C4)、馬鈴薯晚疫病一般(C10)、馬鈴薯晚疫病嚴重(C11)這4類葉片中的識別準確率均在80%以上,分別為87.04%、80.00%、88.89%、89.06%;而對剩余4類葉片的識別率均低于80%,分別是蘋果黑星病嚴重(C5)、葡萄黑腐病一般(C13)、葡萄黑腐病嚴重(C14)、葡萄輪斑病嚴重(C16),識別準確率為68.18%、77.78%、69.70%、71.19%。

對改進網絡CSP-ShuffleNetV2識別率低于80%的病害類別進行錯誤識別分析,如圖10所示,圖中柱子總高度表示當前類別總的錯誤識別率,不同顏色表示當前類別被錯誤識別成其他類別。可以看出,識別率較低的葡萄輪斑病嚴重(C16)被全部誤識別成了葡萄輪斑病一般(C15)葉片,葡萄黑腐病嚴重(C14)葉片被誤識別成葡萄黑腐病一般(C13)葉片占據整體錯誤識別率的95.02%,而葡萄黑腐病一般(C13)葉片被識別成葡萄黑腐病嚴重(C14)葉片占總體錯誤識別率的91.67%,蘋果黑星病嚴重(C5)葉片被誤識別成蘋果黑星病一般(C4)葉片占總體錯誤識別率的85.70%。由此可知,改進的網絡CSP-ShuffleNet V2模型在病害類別分類中,能夠準確識別葉片病害種類,但在區分病害的患病嚴重程度上表現欠缺。圖11展示了模型最容易誤判的幾種病害類型圖像,從圖像上可以看出病斑的大部分是局部零散分布在葉片上,造成誤判原因可能由于在同病不同嚴重程度的病害劃分時,沒有在病害患病程度上制定標準性的劃分規則。通常在人為制作數據集劃定時,出現在數據集中同種病害不同患病程度的圖片出現混淆,造成模型對同種病害不同患病程度的分類出現混淆誤判情況。

表3 不同網絡模型測試集的準確率
利用訓練好的模型權重導入到移動設備中,通過Android Studio開發工具完成植物病害識別應用開發,實現手機端對植物葉片病害進行檢測。APP測試機型是榮耀10,如圖12所示,安裝到手機后進入到登錄頁面,用戶可自行注冊賬號進行登錄,病害識別界面包含相冊選擇病害圖片、相機拍攝病害圖、葉片病害檢測這3個按鈕。通過相冊選擇或相機拍攝葉片后,點擊葉片病害檢測,照片下方會顯示模型分類概率最高的3種,一般概率值最高就可以判定為本張病害圖像的識別結果。圖12中顯示了該葉片病害圖被分類為辣椒瘡痂病嚴重(C2)的概率是0.848。

本研究針對降低卷積神經網絡的高計算量和高存儲空間的需求,提出在輕量級卷積神經網絡ShuffleNet V2中引入CSPNet和注意力機制ECA構建本研究CSP-ShuffleNet V2網絡模型,用來解決在降低網絡模型復雜程度的同時,提高植物葉片病害圖像的有效特征提取能力。通過在AI Challenger競賽平臺上選出的4類17種病害數據集進行網絡模型對比試驗,結果表明,提出的網絡模型CSP-ShuffleNet V2在減少網絡參數量和計算量的同時,植物病害識別準確率也達到了90.34%,權重大小為 13.5 MB。這不僅降低了計算成本而且減少了存儲空間的占用,有利于部署在對存儲空間和計算資源有限的移動端設備中。未來計劃擴充更多病害樣本圖像數據集,提升模型在同種類不同患病程度上的識別精度,并且進一步研究在自然復雜場景下的植物病害移動端識別,實際應用于農業生產上,以滿足農業種植戶對植物病害的準確判定和防治。

