孟亮 郭小燕 杜佳舉 沈航馳 胡彬



摘要:? 針對傳統CNN (Convolutional neural network)模型存在訓練參數量大而無法應用于硬件條件受限的場合這一問題,本研究提出一種輕量級CNN農作物病害識別模型,能夠在保證模型識別準確率情況下簡化模型結構,擴大模型的適用場景。設計1個深度卷積模塊作為基本卷積單元,2個深度卷積模塊和1個批歸一化層組成1個殘差塊作為殘差單元,以殘差單元作為基本元素設計一個輕量級CNN農作物病害識別模型。對辣椒、番茄和馬鈴薯的病害圖像進行分類識別,最終模型在訓練集上的總識別準確率為99.33%,測試集上的總識別準確率為98.32%。相對VGG16等傳統模型,在進行農作物病害識別時本模型有更高的識別準確率、更快的識別速度和更小的內存占用。
關鍵詞:? CNN; 輕量級; 農作物; 病害; 識別準確率
中圖分類號:? TP391.41??? 文獻標識碼: A??? 文章編號:? 1000-4440(2021)05-1143-08
A lightweight CNN model for image recognition of crop disease
MENG Liang, GUO Xiao-yan, DU Jia-ju, SHEN Hang-chi, HU Bin
(School of Information Science and Technology, Gansu Agricultural University, Lanzhou 730070, China)
Abstract:? The traditional convolutional neural network (CNN) model cannot be applied to occasions with limited hardware conditions due to the large amount of training parameters. This research proposed a lightweight CNN model for crop disease recognition, which could simplify the model structure and expand the applicable scenarios under the condition of ensuring the accuracy of model recognition. A deep convolution module was designed as the basic convolution unit, and two deep convolution modules and a batch normalization layer were used as the residual units. A lightweight CNN model for crop disease recognition was designed with the residual unit as the basic element. The total recognition accuracy of the model on the training set was 99.33%, and the total recognition accuracy on the test set was 98.32%. Compared with the traditional models such as VGG16, the lightweight CNN model has higher recognition accuracy, faster recognition speed and less memory occupation.
Key words:? convolutional neural network (CNN); lightweight; crops; diseases; recognition accuracy
中國是農業大國,農作物在很大程度上實現了自給自足,但是在農業自動化方面和許多發達國家還有很大差距。隨著計算機技術及人工智能的不斷發展,學者們開始探索專家系統或者圖像分割算法在農作物病蟲害識別上的應用。Singh等? [1] 使用SVM(Support vector machine)分類器使得對早期豌豆銹病的識別達到微觀層面。張建華等? [2] 基于最優二叉樹和SVM的方法對蜜柚病害圖像進行識別,準確率達到90%。Park等? [3] 在病蟲害識別領域提出模式識別和多光譜分析技術,有效提升了識別準確率。Umut等? [4] 使用機器學習對棉花常見病害進行識別,準確率達到90%以上。Maniyath等? [5] 提出一種基于特征提取的改進SVM算法,融合機器視覺和模糊識別,大大提升了識別效果。陳佳娟? [6] 使用特定算法計算出棉花病葉受損程度。王長斌? [7] 提出一種新的病害識別算法,但是計算速度較慢。Zhang等? [8] 提出從患病玉米中提取葉片特征,再將提取的特征輸入K近鄰分類器進行分類,對5種玉米病害識別率在90%以上。Singh等? [9] 提出使用遺傳算法對植物早期病害進行檢測。
以上方法在進行病蟲害的識別時需要提取大量的圖像特征且計算復雜,故識別準確率受到圖像特征矩陣提取結果與計算機計算能力的限制。隨著人工智能的發展,農業與深度學習的結合使得農作物病蟲害圖像識別的發展有了質的飛躍。Gassoumi? [10] 采用基于神經網絡和模糊邏輯的軟計算模型技術對棉花病害進行了有效識別。溫芝元等? [11] 開發了一種補償模糊神經網絡,用于臍橙的病蟲害識別。張建華等? [12] 通過粗糙集和誤差反向傳播神經網絡構建了棉花病害識別模型。黃雙萍等? [13] 提出基于GoogleNet模型的水稻穗瘟病檢測方法,模型識別性能有了較大提高。Mohanty等? [14] 提出多層卷積神經網絡,該模型在訓練后能夠快速提取植物病害特征,可以對多達14種病害進行分類。楊秀坤等? [15] 提出基于退火算法的神經網絡模型,該算法能夠對蘋果進行檢測,判斷其表皮是否有缺陷。王克如? [16] 將神經網絡與專家系統結合起來,可對玉米常見病害進行識別。龔丁禧等? [17] 建立了可遷移的卷積神經網絡,該模型在簡單訓練后可應用于其他植物病害識別中。
卷積神經網絡強大的特征提取能力和學習能力,使得自然條件下的病害圖像特征也能夠被準確地提取并使得模型具有良好的遷移性,這對于中國農作物病害的快速精準識別,提高糧食產量有著重要的意義,但是以卷積神經網絡為代表的傳統的深度學習網絡模型由于參數訓練量大,所以收斂速度較慢,同時對運算的軟硬件設備有極高的要求。因此將卷積神經網絡應用于農作物病蟲害的識別時,如果將應用場景擴展到嵌入式或者移動設備上面,有限的計算資源將面臨模型參數量巨大、訓練時間長,存儲空間不足等問題。本研究針對傳統卷積神經網絡受硬件限制,收斂速度慢,占用內存大,識別準確率較低的問題,設計開發了一種基于殘差思想的卷積神經網絡模型Light-CNN(Lightweight convolutional neural network),旨在保證識別準確率的前提下精簡模型結構,從而提升農作物病害類別的識別實時性,從而擴大其適用范圍與應用場景? [18] 。
1 試驗材料
本試驗采用PlantVillage植物病害圖像庫作為試驗數據來源。該數據集在實驗室條件下采集,包含蘋果黑星病、蘋果黑腐病、馬鈴薯早疫病等13種植物的26種病害的圖像,共計 54 306 張圖片。在本研究中,選取辣椒、馬鈴薯和番茄3種農作物,15種病害葉片圖像,共 22 787 張圖片作為數據集。表1給出了該數據集的15種病害樣本信息。圖1為數據集病害葉片圖像展示。為了提高模型的處理效率,將原始圖像尺寸調整為 64× 64,在數據集中隨機抽取80%圖像用于建立訓練集,剩余20%圖像用于測試集。
2 模型輕量化設計策略
2.1 全局平均池化
池化層又稱為下采樣層,針對原始圖像經過卷積層后參數量增大導致模型無法快速擬合的問題,利用池化操作對卷積操作后的圖像特征進行降維處理。傳統的最大值池化、平均池化在一定程度上可以減少訓練參數從而提高訓練的速度,節約硬件成本,但是當模型的訓練受到硬件條件限制時,仍會出現訓練、識別速度受限的問題。為了更近一步簡化模型結構,本研究采用全局平均池化,與平均池化將特征圖矩陣以窗口形式取均值不同,全局平均池化以整個特征圖為單位進行均值化,每一張特征圖最終可以獲得1個均值,從而大幅度減少了網絡的參數數量。
2.2 數據標準化
數據的標準化操作可以提升輸入數據的質量,從而大幅度提高模型收斂的速度與準確率,本模型采用Z-score(公式1)標準化方法使得輸入數據相對于原點對稱,輸入圖像像素從原來的(0,255)映射為(0,1),數據標準化后符合正態分布,輸入向量的正交性增強,有效加快了模型運行的速度和避免模型陷入梯度消失的問題。
μ B= 1 m ∑ m i=1 x i ; σ 2 B= 1 m ∑ m i=1 (x i-μ B) 2 ;? ?i= x i-u B σ 2 B+l ??(1)
式中, x i 為輸入的第 i 個數據, m 為輸入數據個數, μ B 為均值, σ 2 B 為方差, l 是一個微小值,用來防止出現除以0的情況。
2.3 隨機淘汰
在反向傳播過程中,權值的更新可能會過于依賴部分隱藏神經元,導致圖像中某些特征的提取出現盲區,因此在反向更新權值的過程中,每次迭代時隨機丟棄50%的神經元,被剔除的神經元不再參與本次迭代中信號的傳遞,使得神經網絡在學習時和權值在更新時對于所有的神經元都保持敏感,從而使得模型的魯棒性更強,有效抑制過擬合現象。
3? 農業病害圖像識別模型
3.1 深度卷積塊
卷積操作用于提取原始圖像信息,為了提升模型提取圖像信息的能力,本研究設計1個由卷積層、批歸一化層和非線性激活函數組成的深度卷積塊作為特征提取的基本單元,其中卷積層采用64個大小為 3× 3的卷積核, 大小為 64× 64的原始圖像經過第1次標準卷積初步提取特征后大小為 62× 62。本模型設置填充機制,即始終用0填充處理過的圖像使其保持大小為 64× 64。批歸一化層將經過標準卷積后的圖像數據從(0,255)映射到(0,1),避免出現梯度消失的情況。非線性激活采用ReLu函數,圖2為深度卷積塊結構圖。圖3為深度卷積塊對植物葉片病害特征的初步提取樣圖。
a1為辣椒細菌性斑點病葉片;b1、c1分別為馬鈴薯早疫病葉片和馬鈴薯晚疫病葉片;d1~l1分別為番茄輪斑病葉片、番茄花葉病葉片、番茄黃曲葉病葉片、番茄細菌性斑點病葉片、番茄早疫病葉片、番茄健康葉片、番茄晚疫病葉片、番茄葉霉病葉片、番茄斑枯病葉片和番茄二斑葉螨病葉片。a2~l2分別為a1~ l1經過深度卷積塊后的病害特征初步提取樣圖。
3.2 殘差塊
隨著網絡層數的增加,卷積神經網絡提取的信息越來越多,模型的參數也劇烈增長,采用梯度下降法更新權值時,當網絡到達一定深度后,會出現梯度為0或者梯度爆炸的現象,梯度為0將導致權值無法繼續得到有效更新,識別準確率反而下降;梯度爆炸將使得模型出現劇烈動蕩而無法收斂。He等? [19] 提出ResNet,采用一種恒等映射,即在網絡中直接將單元的輸入與單元的輸出相加再輸入到下一層,從而解決了傳統網絡訓練中隨著網絡層數的增加網絡性能反而退化的問題。本模型利用殘差思想,設計了1個殘差塊,使得在增加網絡深度時能夠繼續保持模型的精度。殘差塊由2層深度卷積塊和1個批歸一化層構成。深度卷積塊均使用64個大小為3×3的卷積核,為解決由于卷積操作導致的原圖像部分特征消失的問題,本研究所設計的殘差塊在通過2層深度卷積塊后與原輸入圖像相加,從而保證在網絡層數增加時保持模型原有的精度。為增強模型魯棒性,在每個殘差塊后面均使用批歸一化層,從而提高收斂的速度。殘差塊結構如圖4 所示。
3.3 植物病害識別模型
針對傳統CNN模型收斂速度慢,占用內存大,識別率較低的問題,本研究設計了1個輕量級植物病害識別模型(Light-CNN),該模型分為特征提取子模型和分類子模型。特征提取子模型由1個單層卷積層,5個殘差塊,1個全局平均池化層組成,在分類子模型中又分為植物類別分類與病害類別分類2個子模型。分類子模型由3個全連接層、1個Droput層和1個SoftMax層組成。在本模型中,首先將待識別圖片大小統一為 64× 64,通過一層卷積核大小為 3× 3,數量為64的標準卷積層提取圖像初級特征,再經過5個殘差塊提取圖像高級特征以及減少特征損失,當進行卷積與池化操作使得圖像尺寸變小時,均采用填充0的方式,以保證模型中所有的特征圖大小始終為 64× 64,經過5個殘差塊后再經過全局平均池化、全連接層、Dropout層和全連接層,最后通過SoftMax進行分類輸出,具體模型結構見圖5。
4 模型訓練與試驗結果分析
本模型的數據集為PlantVillage部分數據集,在本研究預訓練模型中采用Adam Optimizer作為網絡參數優化器,損失函數采用稀疏交叉熵(Sparse_categorical_crossentropy)損失函數,使用衰減學習率方法進行學習訓練,梯度下降過程中,訓練集設置批處理樣本數為8,測試集設置批處理樣本數為1。
4.1 模型的訓練
4.1.1 稀疏交叉熵損失函數? 在進行模型損失值計算時,由于本數據集中均使用數據原始標簽,分別用 0~ 14來表示待分類的15種類別。本研究選用稀疏交叉熵損失函數,以計算真實標簽數值與預測標簽數值的交叉熵誤差為依據進行權值的修正[公式(2)]。
E=- 1 N? ?n? ?k t ?nk? ln ?y ?nk?? (2)
其中, N 表示 N 個數據; y ?nk? 表示神經網絡第 n 個元素第 k 個元素的輸出; t ?nk? 表示神經網絡第 n 個元素第 k 個元素的標簽。
4.1.2 衰減法學習率? 在模型運行中,恒定的學習率容易導致模型訓練時陷入局部極值,因此本模型采用衰減法設置學習率,隨著迭代次數的不斷增加,學習率不斷下降,最終趨于穩定。衰減法學習率公式如下:
r=r 0×p?? ?I θ? ???(3)
其中 r 0 為基礎學習率; p 為衰減系數; I 為迭代次數; θ 為衰減速度;? ?I θ? ?是對取得的值向下取整。本模型中基礎學習率設定為0.001,學習率下限為 0.000 000 01 ,衰減系數設置為0.9,衰減速度為 12 000 。即每經過 12 000 次迭代,如果損失函數的損失值沒有明顯的降低,則將學習率降低為原來的90%,直到達到最終的學習率下限。
4.1.3 歷史值保留機制? 本研究中為保證結果的嚴謹性,需要多次重復試驗。在進行權值的更新過程中,為了避免在訓練后期初始權值重復訓練以及有可能出現隨著迭代次數的增加,識別率反而下降的情況,在訓練過程中保存權值歷史值,以期在只關注全連接權值參數時,可以直接導入權值歷史最優值,以峰值識別率所對應的參數作為下一次試驗迭代次數設定的依據,從而加快模型識別的速度。
4.2 試驗結果分析
本模型均在TensorFlow框架下進行試驗。硬件環境:Inter(R) Xeon(R) W-2123 CPU @3.6 GHz,16 GB RAM,NVIDIA GeForce GTX 1 080 GPU,8 GB Video Memory。軟件環境:CUDA toolkit 10.0,cuDNN 10.0,Windows 10 64bit,Python 3.7,TensorFlow 2.0.0。
本研究中使用分類準確率作為最終結果的評價指標之一,分類準確率越高,則意味著本模型的識別和分類性能越好。
單個類別識別準確率計算公式:
Acc= n ?c ?n ?t? (4)
其中 n ?c是單個類別的準確預測數, n ?t是單個類別樣本總數。
模型識別的平均準確率公式:
AA= Acc n ??(5)
其中 n 為樣本的總類別數。
本模型考慮到低檔終端中運行時的存儲和計算能力的限制,將模型所占內存大小、單張圖片所使用的識別時間、識別準確率作為模型評價的標準。在模型識別率高且所占內存較小的情況下,單位時間識別圖片越多,則該模型能夠在實際農作物病害檢測中具有更廣泛的應用。
4.2.1 試驗結果? 本模型的輸出為15個類別,分別代表辣椒、馬鈴薯、番茄3種農作物的15種病害,識別結果見表2。其中植物的平均識別準確率為99.35%,病害的平均識別準確率為99.28%。
由圖6可以看出,當迭代次數較低時,模型的學習次數不夠,準確率不理想。但是隨著迭代次數的不斷提升,訓練集中植物樣本和病害樣本的識別準確率在不斷提升。第1次迭代之后植物分類識別準確率為82.59%,病害識別準確率為76.12%,之后識別率便快速提升,迭代到第45次時準確率趨于平穩。當迭代次數達到第50次時,植物識別準確率稍有下降,而病害識別準確率達到最高,訓練集植物識別準確率達到99.35%,訓練集病害識別準確率達到99.28%,總識別準確率達到99.33%。
從圖7可以看出,測試集在第1次到第3次迭代過程中植物和病害的識別準確率由63.98%和29.87%升至84.54%和70.98%。但當迭代次數從第3次到第4次時,測試集中出現過擬合現象,導致識別準確率急速下降。當迭代次數從第4次到第5次時,模型準確率又開始大幅提升,而當迭代次數從第5次到第9次時準確率又大幅度下降。迭代次數從第9次至第12次時準確率大幅度提升,之后除迭代次數從第15次到第16次和第24次到第25次時發生過擬合導致準確率發生急速下降外,其余迭代期間準確率均穩步增長。在迭代次數達到28次時,準確率趨于穩定,最終當迭代次數達到第50次時,準確率達到最大。測試集植物分類準確率為99.44%,測試集病害分類準確率為98.28%,測試集總準確率為98.32%。
從迭代次數角度看,在訓練的初期隨著迭代次數的增多,模型的識別準確率也越來越高,但當迭代次數超過一定程度時,模型的識別準確率不僅不再提高,可能還會出現一定幅度的降低。因此,選擇合適的迭代次數可以獲得更優的網絡參數,可以最大化地發揮模型的性能。在本模型中,50次的迭代次數可以獲得最優識別效果。
4.2.2 不同模型對比試驗? 為進一步研究本模型的性能,分別選擇AlexNet? [20] 、VGG16? [21] 、GoogleNet ?[22] 、ResNet50? [23] ?4種深層網絡模型與本模型進行對比,這4種模型均采用標準網絡結構。AlexNet、GoogleNet為5層卷積層,3層全連接層;VGG16為13層卷積層和3個全連接層;ResNet50為4個殘差塊,每個殘差塊均使用 3× 3卷積核,共50個標準卷積層,1個全連接層。表3描述了不同網絡模型占用內存的大小和針對本數據集的平均識別準確率。由表3可知,AlexNet、VGG16? [24] 的識別準確率為86.12%和88.75%。相比這2個模型,GoogleNet的識別準確率較高,達到92.00%,本模型在識別準確率方面達到99.33%。雖然ResNet50在訓練集識別準確率方面稍微高于本模型,達到99.76%,但是其測試集識別準確率為92.31%,發生了明顯的過擬合。因此在農作物病害識別率方面,本模型和VGG16、AlexNet、GoogleNet相比有較大的優勢,相比ResNet50也有一定優勢。在模型占用內存大小方面,VGG16占用內存最大,為552.0 MB,GoogleNet占用內存大小為87.5 MB,AlexNet占用內存大小為227.6 MB,ResNet50 占用內存大小為90.3 MB。而本模型經過訓練后所占內存大小僅為4.6 MB。因此在模型占用內存大小方面,本模型相對VGG16、AlexNet、GoogleNet和ResNet50有較大優勢。
表3還給出了本模型與其他深度模型的單張圖片訓練所需時間的對比。每一張圖片的訓練所需時間都是經過多次試驗取平均值所得。從結果來看,本模型的單張圖片訓練所需時間為0.220 s,遠遠小于VGG16等其他模型的用時。試驗結果表明,本試驗模型在占用內存大小、識別時間、識別準確率方面均有一定的優勢。
5 結 論
本研究針對當前大部分植物病害識別模型的識別準確率低,模型占用內存大的問題,設計了一種輕量級植物病害識別模型(Light-CNN),使用PlantVillage部分圖片,建立了辣椒、馬鈴薯和番茄的多種病害數據集,模型訓練結果表明,在一定范圍內,模型的迭代次數越多,模型的識別準確率越高,但是超過一定范圍,模型的識別準確率可能不再增長,甚至可能降低。在識別植物病害時,本模型在內存占用大小,識別時間方面遠優于VGG16、AlexNet、GoogleNet和ResNet50;在識別準確率方面遠優于VGG16、AlexNet、GoogleNet。因此輕量級植物病害識別模型為手機等移動設備進行植物病害的檢測提供技術支撐。本研究模型數據集均是在無干擾、無遮擋、圖像清晰、背景固定的實驗室條件下的圖片,因此后期進一步的研究方向是在自然復雜背景下的植物病害圖像識別。
參考文獻:
[1]? SINGH K, KUMAR S, KAUR P. Support vector machine classifier based detection of fungal rust disease in pea plant (pisam sativam) [J]. International Journal of Information Technology,2019,11(3):485-492.
[2] 張建華,孔繁濤,李哲敏,等. 基于最優二叉樹支持向量機的蜜柚葉部病害識別[J].農業工程學報,2014,30(19):222-231.
[3] PARK H, EUN J S, KIM S H. Image-based disease diagnosing and predicting of the crops through the deep learning mechanism[C] //DOMAN T M. The 8th International Conference on Information and Communication Technology Convergence (ICTC). Jeju Island South Korea : IEEE Press,2017: 129-131.
[4] UMUT B K, OMER B G, OKTAY Y. Detection of plant diseases by machine learning[C] // HUSSEIN A. The 26th Signal Processing and Communications Applications Conference.Izmir Turkey:IEEE Press, 2018: 1-4.
[5] MANIYATH S R, VINOD P V, NIVEDITHA M, et al. Plant disease detection using machine learning[C] // HUSSEIN A. 26th Signal Processing and Communications Applications Conference.Izmir Turkey:IEEE Press,2018: 41-45.
[6] 陳佳娟. 基于圖像處理和人工智能的植物病害自動診斷技術的研究[D].長春:吉林大學,2001.
[7] 王長斌.基于云計算的農作物病蟲害多源遙感數據挖掘[J].電子技術,2016,45(3):15-17.
[8] ZHANG S W, SHANG Y J, WANG L . Plant disease recognition based on plant leaf image[J]. Journal of Animal and Plant Sciences, 2015, 25(3):42-45.
[9] SINGH V, VARSHA, MISRA A K . Detection of unhealthy region of plant leaves using image processing and genetic algorithm[C]//TORSTEN M. International Conference on Advances in Computer Engineering and Applications (ICACEA). Ghaziabad, India : IEEE Press, 2015 : 1028-1032
[10] GASSOUMI H. A soft computing approach for classification of insects in agricultural ecosystems[D].New Mexico: New Mexico State University, 2000.
[11] 溫芝元,曹樂平. 基于補償模糊神經網絡的臍橙不同病蟲害圖像識別[J].農業工程學報,2012,28(11):152-157.
[12] 張建華,祁力鈞,冀榮華,等. 基于粗糙集和BP神經網絡的棉花病害識別[J].農業工程學報,2012,28(7):161-167.
[13] 黃雙萍,孫 超,齊 龍,等. 基于深度卷積神經網絡的水稻穗瘟病檢測方法[J].農業工程學報,2017,33(20):169-176.
[14] MOHANTY S P, HUGHES D P, SALATHE M . Using deep learning for image-based plant disease detection[J]. Frontiers in Plant Science, 2016, 7:1419.
[15] 楊秀坤,陳曉光. 用遺傳神經網絡方法進行蘋果顏色自動檢測的研究[J]. 農業工程學報, 1997, 13(2): 173-176.
[16] 王克如. 基于圖像識別的作物病蟲草害診斷研究[D].北京:中國農業科學院,2005.
[17] 龔丁禧,曹長榮. 基于卷積神經網絡的植物葉片分類[J].計算機與現代化,2014(4):12-15,19.
[18] 王春山,周 冀,吳華瑞,等. 改進Multi-scale ResNet的蔬菜葉部病害識別[J].農業工程學報,2020,36(20):209-217.
[19] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C] // NIKOS K. The 15th? ??Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Boston American :IEEE Press,2016:770-778.
[20] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C] //? PEREIRA F, BURGES C J C. The 25th International Conference on Neural Information Processing Systems. Nevada American :MIT Press,2012: 1097-1105.
[21] GOMEZ-OJEDA R, LOPEZ-ANTEQUERA M, PETKOV N, et al. Training a convolutional neural network for appearance-invariant place recognition[J]. Computer Ence,2017, 92(1):89-95.
[22] SZEGEDY C, WEI L, JIA Y, et al. Going deeper with convolutions[C] //CONNELLY B, JUNHWA H. The 33th IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Boston American :IEEE Press, 2015 : 1-9.
[23] 方晨晨,石繁槐. 基于改進深度殘差網絡的番茄病害圖像識別[J].計算機應用,2020,40(S1):203-208.
[24] 張建華,孔繁濤,吳建寨,等. 基于改進VGG卷積神經網絡的棉花病害識別模型[J].中國農業大學學報,2018,23(11):161-171.
(責任編輯:陳海霞)