曹躍騰,朱學巖,趙燕東,陳鋒軍
(1.北京林業大學工學院,北京市,100083;2.城鄉生態環境北京實驗室,北京市,100083;3.林業裝備與自動化國家林業局重點實驗室,北京市,100083)
植物病蟲害的種類繁多,傳統依靠農林專家觀察識別植物病蟲害種類的方式速度慢、主觀性強且不易獲取,無法準確快速的識別病蟲害種類并給出具體應對措施,嚴重限制了農林業的發展[1]。快速、準確且高效的識別植物病蟲害種類并針對性的給出應對措施一直是農林業迫切需要實現的目標,設計移動端植物病蟲害識別算法更是重中之重[2-3]。植物葉片作為病蟲害的高發區域具有圖像獲取方便的特點,現已成為植物病蟲害識別的關鍵器官之一[4-5]。
為解決植物病蟲害種類自動識別的問題,國內外研究者嘗試采用傳統機器視覺和深度學習技術對植物病蟲害種類進行識別。基于傳統機器視覺[6]的植物病蟲害識別方法一般在提取顏色、形狀和紋理等淺層特征后,訓練支持向量機、BP神經網絡等實現病蟲害識別。張善文等[7]使用稀疏表示對紫薇等植物病害葉片進行識別,達到了92.41%的準確率;馬超等[8]使用灰度直方圖特征結合SVM對水稻病害葉片進行識別,取得了98.4%的準確率。然而,受環境和植物葉片病蟲害區域特征不穩定等因素影響,導致基于傳統機器視覺的植物病蟲害識別方法實際應用中效果不甚理想[9]。
基于深度學習的植物病蟲害識別方法一般是通過卷積神經網絡[10]提取植物葉片的深層特征進行病蟲害的識別,目前此類方法已經被充分應用于茶葉[11]、番茄[12]和棉花[13]等植物的病蟲害識別。Srdjan等[14]嘗試使用VGG16模型對桃白粉病、蘋果銹病和櫻桃白粉病等16種植物病蟲害葉片進行識別,準確率達到96.3%;Ferentinos等[15]通過對比AlexNet、GooLeNet、OverFeat和VGG模型對蘋果雪松銹病、玉米銹病、黃瓜霜霉病等58種植物病蟲害的識別結果,確定VGG模型最優,準確率達到99.53%。與傳統機器視覺方法相比,基于深度學習的植物病蟲害識別方法能夠抵抗環境因素的影響,魯棒性更強且具有更高的識別準確率。
基于深度學習的圖像分類模型ResNet具有分類穩定的特點,目前已被應用于葡萄、番茄、黃瓜和水稻的病蟲害識別。何欣等[16]使用ResNet對葡萄葉部病害圖像進行識別,準確率為90.83%;方晨晨等[17]使用ResNet對番茄葉部病害圖像進行識別,平均準確率為98.58%。先前的研究已經表明,在植物病蟲害識別研究中,ResNet模型準確率高且性能穩定[18],是本文植物病蟲害識別的理想算法。然而,ResNet[19]雖在植物病蟲害識別領域取得了可信賴的效果,但該模型參數量多且模型大,不適合部署到移動端。
為解決移動端植物病蟲害識別最重要的算法設計問題,本文以ResNet18模型為基礎,通過卷積核尺寸調整、殘差塊優化和模型剪枝[20-23]優化ResNet18模型,設計輕量化植物病蟲害識別模型Simplify-ResNet。
2020年4—7月使用榮耀7手機于河南鄢陵和山東棗莊的果蔬采摘園采集番茄、辣椒、馬鈴薯、蘋果的病蟲害圖像2 133幅,大小為5 344像素×4 016像素。采用隨機裁剪、翻轉、亮度調整、對比度調整和加入噪聲等方式擴充人工采集的2 133幅原始圖像數據至24 831幅,以提高模型對光照、遮擋和拍攝角度等的魯棒性[24-25]。為豐富植物葉片病蟲害圖像數據集,將人工采集圖像與PlantVillage數據集融合,融合后的數據集共包含圖像57 864幅,涉及10種植物,22類病蟲害和3種病蟲害程度。
按8∶1∶1的比例劃分植物葉片病蟲害程度識別數據集為訓練集、驗證集和測試集,分別包含圖像46 292 幅、5 786幅和5 786幅。植物葉片病蟲害圖像數據集的部分圖像如圖1所示。

圖1 植物葉片病蟲害圖像數據集Fig.1 Data set of plant leaf pests and disease images
ResNet18模型的輸入圖像大小為224像素×224像素,主通道共包含17個卷積層和1個全連接層,其基本結構如圖2所示。17個卷積層的卷積核大小為7×7和3×3,起到提取植物病蟲害圖像特征的作用。當植物病蟲害圖像輸入ResNet18模型后,大小為7×7卷積層會首先提取輸入圖像的底層特征;之后四組殘差塊會進行高層特征的提取,并采用捷徑通道來消除卷積層堆疊引起的梯度消失、爆炸和網絡退化的問題;最后通過Softmax層根據提取特征來對葉片圖像進行病蟲害程度識別。

圖2 ResNet網絡模型Fig.2 ResNet network model
準確識別植物病蟲害圖像類別,ResNet18模型優勢非常顯著,但在移動端部署中發現,ResNet18同時存在著不可避免的問題:(1)底層卷積層參數提取量龐大;(2)模型訓練緩慢;(3)訓練后的模型體積臃腫。為此,調整ResNet18模型底層卷積尺寸,改進模型殘差塊結構,對訓練完成后模型進行迭代剪枝,設計輕量化植物病蟲害程度識別模型Simplify-ResNet。
2.2.1 卷積核尺寸調整
在深度卷積神經網絡中,大尺寸卷積核雖能提取圖像中更復雜的特征,但存在參數量大的問題,不適合應用于移動端植物病蟲害識別研究。而小尺寸卷積核雖參數量較小,但存在所提取特征無法全面表達圖像信息的問題。為在盡量少的損失模型精度的前提下降低參數量,選用5×5卷積層來替換原有的7×7卷積,平衡模型參數和特征表達。
2.2.2 殘差塊結構優化
為減少ResNet18網絡模型參數量,對殘差塊的結構進行優化,采用1×1卷積、3×3卷積和1×1卷積串聯的瓶頸結構代替原有兩個3×3卷積串聯的結構。改進前的殘差塊結構和改進后的殘差塊結構如圖3所示。

(a)修改前結構
以輸入256維的數據為例,如果使用改進前的殘差塊結構進行特征提取,所需的參數量為1 179 648;而如果使用改進后的殘差結構進行特征提取,所需參數量僅為69 632。由數據對比結果可知,本文改進的殘差塊結構特征提取過程所需的參數量相比原有殘差結構降低了94%。改進后的殘差塊結構計算量顯著降低,有利于模型訓練速度的提高、模型大小的壓縮和泛化性能的提高。
2.2.3 模型剪枝
本文采用模型剪枝技術刪減掉模型中冗余的濾波器實現模型運行效率的提高、參數量的降低以及過擬合風險的降低。模型剪枝主要包含模型載入、濾波器重要性評分、剪枝閾值計算、模型裁剪及后處理五個步驟。當載入訓練好的模型后,首先計算模型中所有的濾波器的重要性評分,如式(1)所示。
(1)
式中:mi——第i個濾波器的重要性評分;
αi——第i個濾波器對應的BN層的縮放系數;
Ei——濾波器i的所有卷積核的L1范數之和;
|Wj|——濾波器i中第j個卷積核的L1范數大小;
k——濾波器i中卷積核的數量。
其次,計算模型剪枝的閾值,如式(2)所示。
θ=sortp(mi)
(2)
式中:θ——模型剪枝的閾值;
mi——第i個濾波器的重要性評分;
sort——對mi進行升序排序;
p——剪枝率,p=0.7。
然后,根據計算得到的模型剪枝閾值θ,刪除所有評分低于剪枝閾值θ的濾波器。模型剪枝的前后對比具體如圖4所示。

圖4 模型剪枝前后對比圖Fig.4 Comparison of model before and after pruning
最后,測試剪枝后模型的準確率和速度等性能指標。如果剪枝后模型準確率降低,可通過對剪枝之后的模型進行再訓練等操作進行準確率的提升。
經由以上卷積核尺寸調整、殘差塊優化和模型剪枝操作步驟優化后,所設計改進后的植物病蟲害識別模型Simplify-ResNet模型如圖5所示。

圖5 Simpilfy-ResNet模型結構示意圖Fig.5 Schematic diagram of Simplify-ResNet model structure
所設計Simplify-ResNet模型訓練硬件平臺為AMD(R)2600X @3.60 GHz CPU,16GB內存,NVIDIA GeForce 1070Ti顯卡,軟件平臺為Windows 10,TensorFlow 1.10.1和Keras 2.2.4。模型訓練過程設置學習率為0.001,批處理量為16,采用AdamOptimizer優化器更新模型參數。
本研究Simplify-ResNet模型識別植物病蟲害需同時考慮識別精度和訓練后的模型大小,故選用精確率P、召回率R、F1分數和訓練模型大小M定量評價本文算法,如式(3)~式(6)所示。
(3)
(4)
(5)
(6)
式中:TP——被正確識別為正例圖像個數,即正確識別數;
FP——錯誤的識別為正例圖像的個數,即錯誤識別數;
FN——錯誤的識別為負例圖像的個數,即正例丟失數;
C0——輸出通道數;
Ci——輸入通道數;
kw——卷積核寬;
kh——卷積核高。
為確定本文模型改進中所采用的卷積核尺寸調整、殘差塊優化和模型剪枝操作對ResNet模型植物病蟲害識別能力的具體提升效果,設計測試試驗如表1所示,其中方案5為本文Simplify-ResNet模型。

表1 測試設計方案Tab.1 Experimental design
由表2測試試驗結果可知,方案5本文Simplify-ResNet模型的病蟲害識別結果最佳,準確率達到94.34%,且模型占用內存大小僅為36.14 Mb,有效的實現了在保證模型準確率的前提下進行輕量化設計的目標。

表2 各試驗方案表現效果Tab.2 Performance effect of each experimental scheme
如方案1和方案2,在采用瓶頸結構替代捷徑結構后,模型的準確率P、召回率R、F1分數分別提升6.31%、2.86%和4.49,內存大小M增加5.3 Mb。如方案1和方案3,在使用5×5卷積核替代原有底層 7×7卷積核后,模型的準確率P、召回率R、F1分數分別下降1.61%、1.91%和1.76,內存大小M減小26 Mb。如方案3和方案4,采用5×5卷積核替代原有底層7×7卷積核,采用瓶頸結構替代捷徑結構使模型能夠兼顧準確率和模型大小。
如方案5,經過剪枝后,模型準確率P、召回率R、F1分數和模型大小分別為94.79%、94.75%、94.54和36.14 Mb。與方案4相比,剪枝后模型大小減少21.66 Mb,壓縮率為62.53%,表明模型剪枝可以有效降低模型的內存占用。與方案4相比,剪枝后模型準確率P、召回率R和F1分數分別提升了4.36%、5.52%和4.71,表明模型剪枝可在一定程度上提升模型的性能。
以測試集5 786幅植物病蟲害圖像為實驗數據,將本文Simplify-ResNet模型與LeNet、AlexNet和MobileNet模型進行對比分析。不同方法對測試集植物病蟲害圖像的識別結果如表3所示。

表3 Simplify-ResNet與其他方法對比Tab.3 Simplify-ResNet compared with other methods
由表3不同方法的實驗結果可知,本文Simplify-ResNet模型的植物病蟲害識別性能更加均衡,平均識別時間為48 ms,平均內存大小為36.14 Mb,平均識別準確率為92.45%。與LeNet模型相比,Simplify-ResNet模型所占內存大小雖遠高于LeNet模型,但36.14 Mb的內存大小已可滿足移動端部署的實際需求;Simplify-ResNet模型的準確率比LeNet模型高18.3%。與Multi-Scale AlexNet模型相比,Simplify-ResNet模型的識別時間減少27 ms,準確率高出7.45%,模型內存大小大6.24 Mb。與MobileNet模型相比,Simplify-ResNet模型的識別時間減少14 ms,準確率高出1.2%,模型內存大小減小1.76 Mb。對比實驗結果表明,本文設計的Simplify-ResNet模型在移動端植物病蟲害識別中具有更加均衡的性能,特別是在識別準確率這一指標上,具有明顯優勢。
本文以設計移動端植物病蟲害識別算法為研究目標,根據ResNet網絡準確率高且性能穩定的特點,選取ResNet18為基礎網絡模型。針對ResNet18模型存在的參數量大和訓練后的模型體積較大問題,調整ResNet18模型底層卷積尺寸,改進模型殘差塊結構,對訓練后的模型進行剪枝操作,設計輕量化移動端病蟲害識別模型Simplify-ResNet。
設計試驗測試調整底層卷積尺寸、改進殘差塊結構和模型剪枝操作對模型性能的實際提高能力,證明了調整底層卷積尺寸和模型剪枝可以有效減小模型參數量,改進殘差塊結構可有效提升模型性能。本文算法對測試集植物病蟲害圖像的識別準確率為92.45%,識別時間為48 ms,模型大小為36.14 Mb。與LeNet、AlexNet和MobileNet模型進行對比,本文Simplify-ResNet模型的整體性能更優。本文為移動端植物病蟲害識別解決了最重要的算法設計問題,接下來將進行移動端植物病蟲害識別儀的開發。