旦真旺姆,全淼兒*,錢婷婷,石稱華,劉哲輝,常麗英**
(1 上海交通大學農業與生物學院,上海 200240;2 上海市農業科學院,上海 201403;3 上海勁牛信息技術有限公司,上海 200333)
黃瓜白粉病是一種發生較為普遍的瓜類蔬菜病害,發生時間為苗期到結瓜期,當發生在黃瓜生長的中后期及植株生長衰弱時,易產生流行性危害。 露地栽培的黃瓜較多在夏季發生白粉病,而溫室栽培的黃瓜在四季均能可發生。 發生白粉病時,黃瓜一般減產10%左右,而在流行年份則可減產20%—40%。在高溫干旱年份,黃瓜白粉病極易大面積發生。 在病害發生極嚴重時,植株中下部葉片大量枯死。 在溫室大棚中,一旦發生白粉病,則發展迅速,嚴重時可造成葉片干枯甚至提早拉秧。 因此,加強瓜類作物白粉病的監測及防治工作對瓜類蔬菜種植至關重要[1]。
卷積神經網絡(Convolutional neural networks,CNN)是對復雜過程進行建模并在含有大量數據的應用程序中執行模式識別的強大算法之一。 CNN 是最流行的圖像識別分類網絡模型,適用于大、小型問題,在圖像處理、識別與分類方面有出色的能力,故其迅速成為了克服各種圖像識別技術難題的首選方法[2]。利用卷積神經網絡智能識別農作物病害已經成為農業研究的熱點,如李凱雨[3]使用3 種CNN 模型對小麥、花生、煙草3 種作物的多種病害進行分類識別,探究了不同模型、算法和不同迭代次數對病害識別的效果;龍滿生等[4]利用深度CNN 模型對大規模數據集進行訓練并采用微調方法進行油茶病害圖像識別;張建華等[5]改進了VGG16 模型,改進后的VGG16 模型可以識別棉花患病葉和正常葉,其分類效果優于AlexNet、GoogLeNet 等模型;孫云云等[6]用AlexNet 模型對茶樹的不同病害進行分類識別;Liu 等[7]構建不同深度CNN 架構和新的CNN 網絡用于蘋果病害不同發病階段和不同病害的分類識別;Ma 等[8]基于CNN系統改進VGG16 模型,對不同黃瓜病害進行分類識別;Mohanty 等[9]運用兩種CNN 體系結構和改進的AlexNet 模型對多種植物病害進行識別。
以上研究大多通過對傳統卷積神經網絡進行改進,以實現對農作物病害較為準確的識別,但對于黃瓜白粉病識別算法的研究相對較少。 本試驗以黃瓜白粉病為研究對象,通過分析4 種卷積神經網絡模型的性能,以期選擇出能夠準確識別黃瓜白粉病的最佳模型,為黃瓜白粉病快速識別、實時監測和預防提供依據。
挑選溫室中患有不同程度白粉病的黃瓜,人工對其葉片逐一拍照,獲取黃瓜白粉病葉片圖像,并采用4 種CNN 模型對4 個病害級別的圖像進行識別與分類。
黃瓜白粉病葉片按病斑占葉面積的百分率進行為害程度的分級[10]。 1 級:病斑面積占整葉面積小于等于10%;2 級:病斑面積占整葉面積大于10%小于等于25%;3 級:病斑面積占整葉面積大于25%小于等于50%;4 級:病斑面積占整葉面積50%以上(葉片變為黃色,葉表大部分布滿白粉)。
按不同發病級別進行圖像獲取,經過篩選,最終獲得1 級病害圖像2 474 張,2 級病害圖像3 468 張,3級病害圖像3 069 張,4 級病害圖像2 616 張,共11 627 張原始圖像(圖1)。
圖1 不同為害程度級別的黃瓜白粉病葉片Fig.1 Cucumber powdery mildew leaves of different damage levels
自然條件下拍攝的黃瓜葉片白粉病病害圖像容易受光照、背景、角度等多個因素的影響,導致圖像質量不佳,干擾卷積神經網絡訓練與測試的信息,為了研究結果的準確性,需要進行圖像的預處理。 圖像預處理過程見圖2。
圖2 圖像預處理過程Fig.2 Image preprocessing process
將預處理好的圖像數據按照9∶1的比例分為訓練集和測試集,即訓練集10 441 張,測試集1 159 張;然后將所有jpg 格式的圖像導入計算機即完成了病害圖像數據庫的構建。 此數據庫中的所有圖像都將作為卷積神經網絡輸入數據集,訓練集和測試集中的圖像均由計算機隨機抽取。
1.4.1 卷積神經網絡
卷積神經網絡(CNN)是一種常見的深度學習模型,其通過多層網絡互聯并相互傳遞數據信息,其中每一層都具有獨特的特征來處理輸入數據并將數據再發送到下一層。 CNN 從輸入待處理圖像到輸出分類識別結果的過程包括用于獲取數據并進行預處理的輸入層、提取圖像高級特征的卷積層、降采樣的池化層、提高模型非線性的ReLu 激活層、整合卷積層提取的高級圖像特征的全連接層以及在模型最后部分輸出各類別預測概率的Softmax 層。 CNN 的基本架構可參考文獻[11]。 當前比較成功的CNN 模型有AlexNet、GoogLeNet 和VGG16 等模型,都能夠對廣義物體進行精確識別。
1.4.2 AlexNet 模型
AlexNet 模型由Alex Krizhevsky 提出,使用ReLu 處理非線性的部分,是第一批采用比傳統方法更大的步幅來提升ImageNet 分類準確率的深層網絡之一,在圖像分類領域上獲得了很好的成果。 卷積網路是由5 個卷積層、3 個全連接層共同組成。 AlexNet 網絡模型結構如圖3 所示,模型參數和網絡結構具體設計可參考文獻[12]。
圖3 AlexNet 模型結構Fig.3 AlexNet model structure
1.4.3 VGG16 模型
VGGNet 基于AlexNet 模型,為堆疊體系結構,是一種可以應用于圖像識別分類的網絡模型。 VGG16模型是VGGNet 的一個變體,有16 層網絡,包含13 個卷積層和3 個全連接層。 VGG16 模型結構如圖4 所示,模型參數和網絡結構具體設計可參考文獻[13-14]。
圖4 VGG16 模型結構Fig.4 VGG16 model structure
1.4.4 GoogLeNet 模型
GoogLeNet 模型設計了一個inception 模塊,該模塊的一個重要特點是擁有一個所謂的瓶頸層,它可以大幅減少計算開銷。 另一個改變是,使用一個簡單的全局平均池化層(Global average pooling,對2D 特征圖的通道值取平均)取代位于網絡末端的全連接層(在卷積層之后),大大減少了參數的總數。 GoogLeNet inception 模塊結構如圖5 所示,模型參數和網絡具體設計可參考文獻[15]。
圖5 GoogLeNet inception 模塊Fig.5 GoogLeNet inception module
1.4.5 ResNet50 模型
該模型的架構和VGGNet 模型類似,分為5 個stage(階段),其中Stage 0 可視為對INPUT 的預處理,結構比較簡單;后4 個Stage 均由Bottleneck 組成,有相似結構。 Stage 1—4 分別包含3 個、4 個、3 個和6個Bottleneck。
本試驗訓練系統采用pytorch 學習框架和Ubuntu 16.04.7 64 位操作系統,CPU 為Intel i7-6850K-3.60 GHz,內存為64 G,優化器使用SGD,試驗采用的4 個模型的主要訓練參數如表1 所示。
表1 4 個模型的訓練參數Table 1 Training parameters for the 4 models
學習率每過10 個epoch 下調到前值的10%,調3 次不再變化,迭代次數為100 次。
在每個卷積層,數據都是以三維形式存在的,可以把數據看成許多個二維圖片疊在一起,其中每一個稱為一個特征圖。 在輸入層,如果是灰度圖片,說明僅有一個特征圖;如果是彩色圖片,則一般為3 個特征圖(紅綠藍)。 層與層之間有數個卷積核(Kernel),上一層每個特征圖和每個卷積核做卷積,均會產生下一層的一個特征圖。
從特征圖中可以更直觀地看到每層的特征。 圖6 給出了黃瓜白粉病特征圖,為方便可視化,只列出64 個通道特征圖。
圖6 黃瓜白粉病害葉片特征圖提取結果Fig.6 Extraction results of leaf feature map of cucumber powder disease
卷積神經網絡含有多個模型參數,如BATCH_SIZE、迭代次數Epoch、卷積核尺寸等,不同的網絡模型適用的模型參數不同[16]。 本研究以模型的測試集識別準確率和模型訓練用時作為評估指標,探究黃瓜白粉病識別的最佳卷積神經網絡模型。
2.3.1 迭代次數Epoch
迭代次數Epoch 是一個用于定義訓練卷積神經網絡模型時通過完整訓練集的一次傳遞的超參數。在不同卷積神經網絡模型中,適用的迭代次數不同,本研究將模型的迭代次數設置為20 次、40 次、60 次、80 次、100 次,此時固定模型中的BATCH_SIZE 為最優值,觀察不同迭代次數訓練下測試集識別準確率變化曲線(圖7)及各模型的訓練集損失函數變化曲線(圖8)。
圖7 4 種模型的測試集識別準確率變化曲線Fig.7 Test set identification accuracy change curves of the 4 models
從訓練次數角度看,在一定范圍內,模型的識別準確率隨迭代次數增加而提高,而超過一定范圍時,網絡模型的識別正確率不會再繼續提高,甚至有可能出現一定幅度的降低。 因此,為獲得更優異的網絡模型參數,選擇合適的迭代次數至關重要。 從黃瓜白粉病識別模型的訓練結果看,迭代次數為20 次左右時,識別準確率變化小;迭代次數為40 次左右時,識別準確率高且波動小,可以獲得較好的訓練效果。
由圖8 可知,在初始階段4 種模型的損失率均較高。 迭代次數為10 次左右的模型損失函數下降速度最快,但測試集識別的準確率僅為83.30%,未能達到預期效果。 在迭代次數為40 次和60 次時,損失函數波動較小,測試集的識別準確率高,但由于迭代次數與訓練時間呈正相關關系,60 次迭代用時比40 次多。 綜合來看,在保證較高識別準確率的情況下,迭代次數為40 次時,損失函數波動較小,訓練用時最短,即模型的訓練結果最優。
圖8 4 種模型的訓練集損失函數變化曲線Fig.8 Change curve of training set loss function for the 4 models
2.3.2 BATCH_SIZE
在CNN 模型中,訓練集就是分批次輸入模型中進行訓練的數據,每批次輸入模型中的圖像數量即為BATCH_SIZE(批次數),即BATCH_SIZE 是訓練數據集的子集。 不同的BATCH_SIZE 適用于不同的CNN模型,AlexNet、VGG16、GoogLeNet 和ResNet50 模型的BATCH_SIZE 分別設置為50、128、128、90,此時模型損失函數下降速度最快,波動最少,達到最優值。
本試驗選擇相同的數據集對4 種模型進行識別準確率和訓練時間的對比。 試驗數據集選取拍攝的黃瓜白粉病各個時期共11 627 張原始圖片,且均隨機選取每類圖像的90%作為訓練集,10%作為測試集來進行試驗。 設置4 種模型的迭代次數為100 次,此時各自最優值為固定模型中的BATCH_SIZE,對比結果如表2 所示。
表2 4 種模型的識別準確率和訓練時間Table 2 Recognition accuracy and training time of the 4 models
由表2 可知,不同CNN 模型的識別準確率、訓練時間存在較大差異。
①相比于AlexNet 和GoogLeNet 模型,從識別準確率來看,ResNet50 模型在相同數據集上的識別準確率最高,比AlexNet 模型識別準確率高出33.84%,比GoogLeNet 模型識別準確率高出6.79%。
②相比于VGG16 模型,雖然ResNet50 模型和VGG16 模型在識別準確率上沒有明顯差異,但ResNet50 模型僅需24 min,而VGG16 模型需要72 min 來達到同樣的準確率,說明Resnet50 模型不僅識別準確率高,而且速度快、效率高。
基于圖像識別的卷積神經網絡比人工診斷更容易實現病害的實時監測,且隨著深度學習和圖像技術的不斷發展,使得卷積神經網絡在目標檢測和圖像識別分類方面取得了很大的進步,改進了傳統的圖像識別分類方法中存在的提取圖像特征能力差等問題。
本研究通過不同模型性能對比,探究迭代次數、BATCH_SIZE 參數對4 種模型分類識別效果的影響。結果表明:VGG16 模型的識別準確率較高為89.74%,但訓練用時多,與劉寶洋[17]研究結果相似。 通過4種不同CNN 模型性能對比,發現ResNet50 模型的識別準確率最高,對黃瓜白粉病不同級別病害具有更好的識別和分類性能,與龍吟[18]以及楊明欣等[19]研究結果相一致。
本試驗通過黃瓜白粉病圖像獲取、預處理,并將處理好的圖像數據庫運用于AlexNet、VGG16、GoogLeNet 以及ResNet50 等4 種不同的卷積神經網絡構架模型中,探究迭代次數、BATCH_SIZE 參數對4種模型分類識別效果的影響,通過4 種不同CNN 模型性能對比,選擇出應用于黃瓜白粉病不同病害級別智能識別算法研究中的最佳識別模型。 試驗表明:當迭代次數為40 次,BATCH_SIZE 為90 時,ResNet50模型結果為最優,訓練用時為24 min,模型識別準確率為91.30%,對黃瓜白粉病不同級別的病害具有更好的識別和分類性能。