梅 瑩 尹藝璐 石稱華 劉哲輝 常麗英
(1.上海交通大學農業(yè)與生物學院,上海 閔行200240;2.廣西壯族自治區(qū)柳州市柳城縣委辦公室,廣西柳州545000;3.山東省淄博市數(shù)字農業(yè)農村發(fā)展中心,山東 淄博255000;4.上海勁牛信息技術有限公司,上海 普陀200333)
霜霉病嚴重影響我國結球白菜、菠菜、萵筍等葉菜的生產。霜霉病危害嚴重時發(fā)病率近90%,蔬菜減產可達60%[1]。目前,目視觀察是檢測田間蔬菜霜霉病發(fā)生的主要方法,極易錯過防治的最佳時期?;趫D像識別的葉表深度學習比人工診斷更易實現(xiàn)病害的實時監(jiān)測,將其應用于病害預測的無人報警系統(tǒng),可降低勞動成本、實現(xiàn)病害的有效防控。
卷積神經網絡(Convolutional Neural Networks,CNN)是對復雜過程進行建模,并在具有大量數(shù)據(jù)的應用程序中執(zhí)行模式識別的強大技術之一。CNN是大、小型問題中最流行的圖像識別分類網絡模型,其圖像處理、識別與分類功能強大,為克服有關圖像識別技術難題的首選方法[2]。國內外研究表明,CNN已應用于諸多植物的病害識別,如小麥病害檢測[3]、玉米不同病害圖像的分類識別[4]、棉花病葉識別[5]、煙草病害識別分類[6]、番茄病害的識別分類[7-9]、黃瓜病害的識別分類[10-12]、茶葉病害的識別分類,并通過調整網絡參數(shù)提高茶葉病害的識別精度[13]、運用AlexNET模型識別茶樹不同病害[14]、蘋果病害不同發(fā)病階段[15]和不同病害的分類識別[16],運用兩種不同CNN體系結構和改進AlexNET模型識別多種植物病害[17-18],以Keras為學習框架進行卷積神經網絡的訓練提高模型的識別成功率[19]等。
可見,CNN模型的研究多集中應用于大田作物如小麥、玉米、棉花,及茄果類蔬菜作物如番茄、黃瓜等,應用于葉菜類蔬菜作物的研究較少。本研究針對傳統(tǒng)方法識別葉菜霜霉病難、識別精度低等問題,將CNN模型分別應用于結球白菜、菠菜、萵筍3種葉菜霜霉病的分類識別,通過構建VGG(visual geometry group,超分辨率測試序列)16網絡模型,對葉菜霜霉病進行快速診斷,為實現(xiàn)葉菜霜霉病的實時監(jiān)測奠定理論基礎。
結球白菜、菠菜和萵筍霜霉病葉圖像來自電子書籍圖譜、農林病蟲害防治網、農業(yè)病蟲草害圖文數(shù)據(jù)庫和百度網站,共收集原始圖片398張,其中結球白菜霜霉病圖像175張、菠菜霜霉病圖像110張、萵筍霜霉病圖像113張(如圖1所示),用于構建卷積神經網絡模型并對其進行識別與分類。
圖1 葉菜霜霉病的病葉圖像
部分圖像有文字水印等干擾,通過圖像預處理簡化圖像內容,排除無關信息干擾,提升訓練與測試的速度和效果。本研究首先通過圖像裁剪方法去除部分無效信息,保留病害的主要特征,然后經過隨機旋轉、平移等處理方式擴增原圖像數(shù)量,最終獲得3種葉菜霜霉病的圖像數(shù)據(jù)庫。
1.2.1 圖像裁剪
裁剪去除圖像中無關信息,保留帶有葉片病斑的區(qū)域,以提高圖像信息質量。裁剪前后的部分圖像對比如圖2所示。
圖2 葉菜霜霉病病葉裁剪前后圖像
1.2.2 圖像數(shù)據(jù)歸一化
圖像數(shù)據(jù)歸一化處理,有利于降低計算量、提升CNN模型的收斂速度和精度。目前歸一化方法種類較多,有特征標準化、min-max標準化、log函數(shù)轉換、atan函數(shù)轉換、模糊量化法等,其中最常用的是min-max標準化和特征標準化。
min-max標準化通過對原始圖像數(shù)據(jù)進行線性變換,使其結果值均能縮放在[0,1]范圍內,具有保留原始數(shù)據(jù)關系、消除量綱和數(shù)據(jù)取值范圍的影響等優(yōu)點。但是如果數(shù)據(jù)集中存在某個數(shù)值過大時,數(shù)據(jù)歸一化后的各個結果值將趨近于0并相差很小。min-max標準化的轉換公式為:
式中,max和min分別為樣本數(shù)據(jù)的最大值和最小值,x和x*分別為數(shù)據(jù)歸一化前后的值。
特征標準化又稱z-score標準化,是目前使用最多的樣本數(shù)據(jù)歸一化方法,經以上公式處理過的數(shù)據(jù)均值為0,方差為0,標準差為1。這種方法最突出的優(yōu)點就是計算簡單,可以消除量級給分析帶來的不便。其公式為:
式中μ為總體數(shù)據(jù)均值,σ為總體數(shù)據(jù)的標準差,x和x*分別為歸一化前后的值。
特征標準化計算簡單,建立的CNN模型效果較好,故本研究使用該方法進行圖像歸一化處理。
1.2.3 圖像數(shù)據(jù)擴增
如樣本數(shù)量少,CNN訓練過程中易出現(xiàn)過擬合現(xiàn)象。為避免過擬合現(xiàn)象的發(fā)生,可通過隨機旋轉和平移的方式擴增原始圖像數(shù)量,以提高CNN模型的泛化性。(1)圖像平移。在原始圖像平面上沿水平或豎直方向平移,改變葉菜霜霉病病斑的位置。結球白菜霜霉病病葉圖像向左平移10個像素點的效果如圖3所示。(2)圖像旋轉。以隨機的角度旋轉原始圖像,改變葉菜霜霉病病斑的朝向。菠菜霜霉病病葉圖像逆時針旋轉90°的效果如圖4所示。
圖3 結球白菜霜霉病病葉圖像向左平移10個像素點示意圖
圖4 菠菜霜霉病病葉圖像逆時針旋轉示意圖
將所有原始圖像進行編號分類并制作標簽(標簽1為結球白菜,標簽2為菠菜,標簽3為萵筍),隨后將原圖像分辨率調整為50×50。398張原圖像經過隨機旋轉4次、隨機平移3次(每次平移10個像素點)的操作后,原圖像數(shù)量擴增7倍,擴增后的總圖像數(shù)量為3 184張,其中結球白菜霜霉病病葉圖像1 400張、菠菜霜霉病病葉圖像880張、萵筍霜霉病病葉圖像904張。然后按3∶1的比例將擴增后的圖像分為訓練集和測試集,即訓練集2 388張、測試集796張。最后將所有的圖像以jpg格式導入計算機,即完成3種葉菜霜霉病圖像數(shù)據(jù)庫的構建。此數(shù)據(jù)庫的所有圖像都將作為卷積神經網絡的輸入數(shù)據(jù)集,訓練集和測試集中的圖像均由計算機隨機抽取。
1.4.1 卷積神經網絡基本結構
卷積神經網絡(CNN)是指一類至少在一層用卷積運算代替一般的矩陣乘法運算,且具有深度結構的前饋神經網絡。CNN包含輸入層、卷積層、池化層、全連接層和輸出層等基本結構,卷積層與池化層一般交互出現(xiàn)[19]。CNN架構可以擴展并適應復雜性,以匹配任何給定任務和數(shù)據(jù)可用性所需的表達能力。
1.4.2 VGG16
VGGNET是一種基于AlexNET的堆疊體系結構,可應用于圖像識別分類的網絡模型。VGG16是VGGNET的變體,是一個16層網絡,包含13個卷積層和3個全連接層。VGG16網絡構架及參數(shù)可參考《卷積神經網絡原理與視覺實踐》[20],VGG16模型結構可參考《Convolutional neural networks》[21]。
1.4.3 CNN模型構建硬件環(huán)境
處理器為是Intel Core i7,內存32G;軟件環(huán)境是Python 3.7編程語言和基于Python編寫的keras 2.1.2高級神經網絡API,選擇Tensorflow1.6作為運行后端。
結合3種葉菜霜霉病病害的特點,對卷積神經網絡中的VGG16模型進行修改,構建可識別3種葉菜霜霉病的CNN網絡識別模型,并將修改后的模型命名為VGG16-1。VGG16-1模型與VGG16一樣由卷積層、池化層和全連接層等卷積神經網絡的基本結構構成。VGG16-1模型將傳統(tǒng)的VGG16模型中的13個卷積層改為2個卷積層、5層池化層改為1層、3層全連接層數(shù)變?yōu)?層,并在其中加入2個Dropout層,以避免模型過擬合現(xiàn)象的發(fā)生。除此之外,VGG16-1模型雖未改變傳統(tǒng)VGG16模型使用的Softmax分類器,但傳統(tǒng)的VGG16網絡用于識別1 000類物體,而本研究涉及的葉菜霜霉病圖像識別分類僅有3類圖像,所以將Softmax的輸出分類標簽類編由1 000類改為3類。傳統(tǒng)VGG16模型使用的ReLU激活函數(shù)具有加快模型訓練速度、防止梯度彌散、增加模型非線性、使網絡更快收斂等優(yōu)點,故VGG16-1模型沿用了ReLU激活函數(shù)。VGG16-1模型構建流程如圖5所示。
圖5 VGG16-1模型構建流程圖
VGG16-1模型共有8層,設置輸入層1個、卷積層2個、池化層1個、Dropout層2個和全連接層2個。卷積層中,kernel_size=3,padding=′same′;池化層中,pool_size=(2,2),strides=(2,2);激活函數(shù)選擇ReLU,BATCH_SIZE=32。每層的具體處理過程為:(1)輸入尺寸為50×50×3的圖像至VGG16-1模型的第1層輸入層;(2)第2層是卷積層,此層里的圖像會經過32個3×3大小的卷積核,用于提取圖像特征,輸出的特征圖像尺寸為50×50×32;(3)第3層是Dropout層,輸出的特征圖像進入丟失率為0.2的Dropout層,可減少特征圖像的數(shù)量,從而減少冗余;(4)第4層是卷積層,使用的卷積核為3×3,用于提取圖像特征,此層里輸入和輸出的特征圖像的尺寸均為50×50×32;(5)第5層是池化層,此層采用Max?pooling,Pool尺寸是2×2,輸入和輸出的特征圖像分別為50×50×32和25×25×32,最大池化后的特征圖像尺寸縮小了1/2;(6)第6層是全連接層,該層里的特征圖像與一層網絡進行全連接,主要功能是對由一系列卷積層和池化層檢測和提取的特征進行分類;(7)第7層是丟失率為0.5的Dropout層,該層減少的特征圖像的數(shù)量更多,能有效降低模型過擬合現(xiàn)象的發(fā)生概率;(8)第8層是全連接層,該層使用Softmax分類器,將卷積層和池化層提取的特征圖像進行非線性組合后分類輸出。VGG16-1模型各層輸入與輸出的結果如圖6所示。
圖6 VGG16-1模型結構
一般卷積神經網絡模型中的淺層卷積層主要用于圖像低維特征的提取,深層的卷積層則用于提取圖像的高維特征。在卷積層中輸入圖像數(shù)據(jù),經過網絡中一系列的卷積、池化和激活操作后,不同的特征被檢測與學習。隨著卷積神經網絡模型深度的增加,各層提取的特征越來越抽象,無關信息被剔除,有用的信息得到放大和細化。但CNN模型的深度并非越深擬合效果越好,過深的卷積神經網絡反而可能降低精度,同時大大增加計算耗時,出現(xiàn)嚴重的過擬合。本研究中的VGG16-1模型中兩層卷積層輸出的特征圖像如圖7所示。由于兩層卷積層卷積核數(shù)量均為32個,故每個卷積層輸出的特征圖數(shù)量均為32張。
圖7 VGG16-1模型的特征圖
不同網絡模型適用的CNN模型參數(shù)(迭代次數(shù)Epoch、BATCH_SIZE、卷積核尺寸等)不同。本研究通過微調VGG16-1模型中的部分參數(shù),以模型的測試集識別準確率和模型訓練用時作為評估指標,探究不同參數(shù)對VGG16-1模型識別分類效果的影響。
2.2.1 迭代次數(shù)(Epoch)
迭代次數(shù)Epoch是一個超參數(shù),用于定義訓練卷積神經網絡模型時通過完整訓練集的一次傳遞。不同CNN模型所適用的迭代次數(shù)不同。本研究將模型的迭代次數(shù)分別設置為30、50和70,固定模型中的BATCH_SIZE=32,卷積核尺寸為3×3。此時VGG16-1模型的訓練集損失函數(shù)變化曲線如圖8所示。
圖8 不同迭代次數(shù)下VGG16-1模型的損失函數(shù)變化曲線
由圖8可以看出,初始VGG16-1模型的均損失率較高,70迭代次數(shù)的模型損失函數(shù)下降速度最快,且模型損失率最低點低于30和50迭代次數(shù)的模型。
不同迭代次數(shù)訓練用時和測試集識別準確率差異見表1。
表1 不同迭代次數(shù)訓練用時和測試集識別準確率
由表1可知,隨著迭代次數(shù)的增加,模型訓練用時也隨之增加,識別準確率也相應提升。模型迭代30次,訓練用時為10 min,但模型測試集識別準確率較低(77.00%),未達到預期效果;模型迭代50次和70次的測試集識別準確率差異不大,但70次迭代的訓練用時較50次增加了5 min。綜上所述,在保證較高識別準確率的情況下,迭代50次處理訓練用時最短。因此,迭代次數(shù)為50時,VGG16-1模型結果最優(yōu)。
2.2.2 BATCH_SIZE
在CNN模型中,訓練集是分批次輸入模型中進行訓練的,每批次輸入模型中的圖像數(shù)量即BATCH_SIZE(批次數(shù)),也就是說BATCH_SIZE是訓練數(shù)據(jù)集的子集。不同CNN模型所適用的BATCH_SIZE不同。本研究將模型的BATCH_SIZE分別設置為32、64、128和256,模型中迭代次數(shù)為50,卷積核尺寸為3×3。此時VGG16-1模型的訓練集損失函數(shù)變化曲線如圖9所示。
圖9 不同BATCH_SIZE下VGG16-1模型的損失函數(shù)變化曲線
由圖9可知,初始VGG16-1模型的損失率相對較高,隨著BATCH_SIZE值的增大,模型的損失函數(shù)下降速度減緩;當BATCH_SIZE=32時模型損失函數(shù)下降速度最快,波動最少,且模型損失率最低點明顯低于BATCH_SIZE值為128和256時的模型。
不同BATCH_SIZE訓練用時和測試集識別準確率差異見表2。
表2 不同BATCH_SIZE訓練用時和測試集識別準確率
由表2可知,隨著BATCH_SIZE的增大,訓練用時逐漸減少,VGG16-1模型識別準確率也下降;BATCH_SIZE為32時,模型訓練用時最長,測試集識別率最高。所以對于VGG16-1模型而言,BATCH_SIZE值越大,訓練用時短,泛化能力越弱,模型識別精度越低。由此可見,BATCH_SIZE為32時,模型識別效果較好。
2.2.3 卷積核尺寸
不同CNN模型所適用的卷積核尺寸不同,由于卷積核尺寸大于1×1時才能提升感受野,且卷積核尺寸為奇數(shù)時便于后續(xù)的池化操作。所以本研究將模型的卷積核尺寸分別設置為3×3、5×5、7×7和9×9,模型中BATCH_SIZE=32,迭代次數(shù)為50次。此時VGG16-1模型的訓練集損失函數(shù)變化曲線如圖10所示。
圖10 不同卷積核尺寸下VGG16-1模型的損失函數(shù)變化曲線
由圖10可知,初始VGG16-1模型的損失函數(shù)相對較大,隨著卷積核尺寸的增大,模型的損失函數(shù)下降的速度減緩;卷積核尺寸為3×3時模型損失函數(shù)下降速度最快,波動最小。
不同卷積核尺寸訓練用時和測試集識別準確率差異見表3。
表3 不同卷積核尺寸訓練用時和測試集識別準確率
由表3可知,尺寸為3×3的卷積核識別準確率較高(95.67%),訓練用時為20 min;隨著卷積核尺寸的增大,模型識別準確率下降,訓練用時先減少后不變。可見,對于VGG16-1模型而言,3×3的卷積核最適用。尺寸較小的卷積核對葉菜霜霉病局部病害的細小特征提取能力更強,當葉面上存在較多的霜霉病病斑時,較小尺寸的卷積核可提高模型識別的準確率。
本研究基于傳統(tǒng)VGG16網絡,構建了識別結球白菜、菠菜、萵筍霜霉病的卷積神經網絡VGG16-1模型。從模型的構建方法來看,VGG16-1模型相較于傳統(tǒng)的機器學習,省去了手動提取和篩選特征參數(shù)的步驟,模型構建更便捷,同時避免了因提取手段不同而導致的特征參數(shù)標準不同的問題[22]。VGG16-1模型直接輸入整張圖像,圖像信息損失量少,神經網絡能用于計算分析的信息更多,預測精度有更大的提升空間。
已有研究表明,通過改進卷積神經網絡結構可提高作物病害識別的精確率。張善文[23]基于改進深度卷積神經網絡識別蘋果病害,能克服模型過擬合問題,提高病害識別率;張建華[5]通過改進VGG16網絡模型,實現(xiàn)了棉花不同病害的分類識別,識別率達到89.51%;邱靖等[19]以keras為學習框架,通過設置不同的卷積核尺寸和池化函數(shù),實現(xiàn)了水稻3種常見病害的分類識別;鮑文霞[24]基于VGG16網絡模型,使用預訓練模型初始化瓶頸層參數(shù),采用SK卷積塊及全局平均池化,提高了識別微小病斑的能力,提升了蘋果葉部病害識別的準確率。本研究通過改進傳統(tǒng)VGG16網絡模型構建的VGG16-1模型可以有效識別3種葉菜霜霉病。
另外,本研究在借鑒丁瑞[25]的圖像搜集方法的基礎上,加入了電子書籍圖譜收集原圖像。與網絡檢索圖像相比,該方法獲取到的圖像無關信息少,圖像質量更高、數(shù)量更多。但本研究所獲得的樣本數(shù)據(jù)量依舊較小,后期的研究應增加霜霉病病菌侵染植株試驗,以盡量獲取更多的樣本數(shù)據(jù)。
本研究通過圖像搜集、圖像預處理和圖像擴增,構建了白菜、菠菜、萵筍霜霉病圖像數(shù)據(jù)庫,并將數(shù)據(jù)庫運用于構建的VGG16-1模型中。通過微調模型中的部分參數(shù),探究了迭代次數(shù)、BATCH_SIZE和卷積核尺寸3種模型參數(shù)對VGG16-1模型分類識別效果的影響。試驗結果表明,迭代次數(shù)為50次、BATCH_SIZE為32、卷積核尺寸為3×3時,VGG16-1模型效果較好,訓練用時為20 min,模型識別的準確率為95.67%。