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