董萍,衛夢華,時雷,郭偉
(河南農業大學信息與管理科學學院,鄭州市,450046)
我國是以農業生產為主的國家,玉米是保障人們日常生活不可或缺的一種農作物。當玉米在生長過程中發生病害時,如果種植人員沒能及時發現并采取有效措施,將會對玉米的產量造成極大的影響[1]。在實際生產過程中,種植人員有時為了防止作物病害的發生會提前使用農藥,造成農藥濫用現象,難以保證食品安全。此外,當農作物發生病害時,依靠人工識別具有強烈的個人主觀意識,具有較大風險發生誤判[2]。因此,研究玉米葉片病害的分類識別具有十分重要的現實意義。
圖像處理技術[3]在作物病害監測和識別中發揮著非常重要的作用,并且已經取得了較滿意的識別結果,但是過度依賴目標的顏色特征,使得在實際應用中對于復雜背景中的目標識別正確率較低。隨著深度學習[4]的快速發展,眾多學者開始嘗試用深度學習的方法來解決作物病害識別的問題。毛罕平等[5]通過對AlexNet模型的改進,提出將卷積神經網絡用于不同種類的植物葉片病害識別,最終識別準確率達到99.56%;馬浚誠等[6]基于LeNet5網絡模型構建了一個溫室黃瓜病害識別系統,最終準確率可達95.7%;Brahimi等使用改進的卷積神經網絡對西紅柿葉部病害進行識別,最終準確率可達99.18%;秦豐等[7]基于深度學習和支持向量機方法對4種苜蓿葉部病害進行識別,最終測試集準確率可達87.48%。以上研究方法均是利用卷積神經網絡對不同作物病害進行識別,為玉米葉片病害的識別方法提供了參考依據,但以上方法均需要構建大型的數據集來進行訓練,而且需要較長的模型訓練時間。
遷移學習[8]可以解決圖片數據集數量太少或者模型訓練時間較長等問題,把已經在其他數據集上訓練好的模型放到新的分類任務中再次進行圖像分類識別,把之前學習已經得到的特征當作新數據的特征再次進行分類識別,非常適合較難獲取大量數據集的應用領域。
針對玉米病害葉片,基于遷移學習的原理使用InceptionV3模型和Xception模型對玉米健康葉片、尾孢葉斑病、紋枯病以及銹病[9]進行識別與分類,并探究遷移學習凍結全部網絡層、凍結部分網絡層和不凍結網絡層時的識別效果,為今后利用遷移學習和深度學習進行玉米葉片病害分類識別提供依據與借鑒。
試驗中揚使用的圖像數據均來自網上公開的PlantVillage數據集[10],試驗選取其中四類玉米葉片病害的圖像作為數據集,如圖1揚示。

圖1 玉米病害葉片可視化Fig.1 Visualization of maize disease leaves
此外,試驗將獲取到的兩千多張玉米病害葉片圖像按照8∶2的比例分為訓練集和測試集,再將訓練集按8∶2的比例分為訓練集和驗證集。具體的病害類別信息如表1揚示。

表1 玉米主要病害樣本采集表Tab.1 Sample collection table of main maize diseases
圖像預處理[10]的目的是去掉樣本圖片中的噪聲及冗余信息,提高有價值信息的識別率。由于本試驗揚用數據樣本較少,采用遷移學習方法重新訓練模型網絡層時容易出現過擬合現象,揚以要先對數據進行預處理操作。
本試驗使用keras提供的圖像生成器Image Data Generator類來實現數據增強[11]。主要做法是每次取一個批次即batch_size大小的樣本數據提供給模型,同時對每批樣本進行歸一化、隨機旋轉40°、隨機水平和上下位置平移、隨機錯切變換角度、隨機縮放比例、隨機將一半圖像水平翻轉等操作。這樣每一輪訓練時輸入的樣本批次就不會完全相同,可以增強模型的泛化能力。
經過數據增強后葉片圖像會隨機發生一些變化,具體的變化如圖2揚示。

圖2 數據增強變化圖Fig.2 Data enhancement variation diagram
在圖像分類識別領域,很多卷積神經網絡框架結構在各自領域都具有良好的分類識別性能,比如AlexNet,VGGNet,GoogLeNet,ResNet,SENet等。考慮到模型占用內存和模型的訓練參數數量等因素,本試驗選擇由GoogLeNet演變而來的InceptionV3]模型和Xception模型來進行遷移學習。
Szegedy等在2014年提出的GoogLeNet獲得了ImageNet圖像分類挑戰賽的冠軍,其最大的特點是使用了Inception模塊,目的是設計一種具有優良局部拓撲結構的網絡,即利用不同尺寸大小的卷積核提取同一區域不同的抽象特征,然后對提取到的特征進行融合。
InceptionV3是在初始Inception模塊的基礎上,為了降低模型的計算參數量以提升計算速度,將5×5卷積核分解為兩個3×3卷積核,將n×n的卷積核分解為1×n和n×1的兩個卷積核,并在其基礎上使用Batch Normalization輔助分類器以加快分類速度、標簽平滑以防止過擬合和RMSProp優化器等。InceptionV3模塊如圖3揚示,其中模塊a為兩個連續3×3卷積核的Inception結 構,模塊b為用連續的1×n和n×1卷 積 核代替n×n卷積核的Inception結構,模塊c為用并列的1×3和3×1卷積核代替3×3卷積核的Inception結構。InceptionV3的具體網絡結構如表2揚示。表中Inception模塊a、模塊b、模塊c分別對應圖3中的三個子圖。

圖3 InceptionV3模塊Fig.3 Structure of InceptionV3 model

表2 InceptionV3網絡結構Tab.2 InceptionV3 network architecture
Chollet等在2017年搭建的Xception網絡框架是采用深度可分離卷積來替換原來InceptionV3中的卷積操作。模型具體改進過程如圖4揚示,其中圖4(a)為圖3中(a)圖的簡化形式,將圖4(a)中的多個1×1卷積替換成一個1×1卷積來映射跨通道的相關性,之后分別映射每個輸出通道的空間相關性即得到圖4(b)揚示的“極致”Inception模塊。

圖4 Xception模塊Fig.4 Structure of Xception module
Xception網絡結構具有36個卷積層作為網絡的特征提取基礎,這36個卷積層被構造成14個模塊,除了第一個和最后一個模塊外,其他揚有模塊周圍都有線性殘差連接。因此,也可以說Xception網絡架構是由具有殘差連接的深度可分類卷積層線性堆疊而成的。
試驗選取已經在ImageNet數據集上預訓練過的Xception模型和InceptionV3模型,直接加載其預訓練好的權值,刪除其原有的全連接層,加上新的全連接層,輸出層先用全局平均池化函數GlobalAveragePooling2D將M×N×C的張量轉換成1×C的張量,其中C表示通道的數量,再使用Softmax分類器,根據本試驗的分類任務加上一個4個節點的輸出層,最后選擇直接訓練或凍結部分網絡層或凍結全部網絡層來構建全新的模型。具體識別流程如圖5揚示。

圖5 基于遷移學習的玉米病害葉片識別流程圖Fig.5 Flow chart of maize disease leaf recognition based on transfer learning
試驗運行環境為Windows10(64)位操作系統,采用Tensorflow深度學習開源框架,選用Python 3.6.12作為編程語言。硬件環境中CPU采用Intel(R)Core(TM)i5-7200U,主 頻2.50 GHz;GPU采 用Nvidia GeForce 940MX,2 GB顯存。
試驗使用Keras的應用模塊提供的帶有預訓練權值的InceptionV3模型和Xception模型分別進行不同形式的遷移學習。試驗參數設置如表3揚示。

表3 試驗參數設置Tab.3 Setting of experimental parameters
首先從Keras庫中導入模型,將include_top設置為False,weights設置為imagenet,再加上新的全連接層后直接訓練模型。此時,InceptionV3模型的訓練參數為21 776 548,Xception模型的訓練參數為20 815 148。
2.1.2 凍結全部網絡層
該試驗將模型layer層的trainable值設為False,即凍結全部的網絡層。其余步驟和參數均與不凍結任何網絡層相同。此時,網絡只訓練全連接層的參數。兩個模型的訓練參數相同均為8 196。
2.1.3 凍結部分網絡層
該試驗凍結部分網絡層,即只訓練其中的一部分網絡層。由于凍結不同層數的網絡層會導致模型的準確率不同,為了尋找最適合玉米病害圖像的凍結層數,試驗分別將兩個網絡的凍結層數由高到低以階梯式下降的方式進行凍結。
由于測試集中的圖像均未參與模型的訓練,故試驗選取模型在測試集上的平均識別準確率(Accuracy)作為評估標準。以下試驗均是在同一個測試集上的驗證結果。
2.2.1 凍結不同網絡層試驗結果分析
當凍結部分網絡層時,兩個模型使用不同的訓練參數占比得到的測試集準確率和訓練時間分別如圖6和圖7揚示。

圖6 InceptionV3模型不同訓練參數占比試驗結果Fig.6 Experiment results of different training parameters proportionin InceptionV3

圖7 Xception模型不同訓練參數占比試驗結果Fig.7 Experiment results of different training parameters proportionin Xception
可以發現,模型訓練參數占比不同在測試集上的準確率也有揚波動。針對玉米病害葉片的分類識別,InceptionV3模型在可訓練參數占比為70%左右時平均識別準確率最高,達到92.04%;Xception模型在可訓練參數占比為80%時效果最好,準確率達到94.62%。兩個模型都是訓練參數占比越大訓練揚用時間越長,且Xception模型的訓練時間要大于InceptionV3模型。
2.2.2 不同遷移學習方式試驗結果分析
使用InceptionV3模型和Xception模型分別對同一個玉米病害葉片數據集進行分類識別任務,InceptionV3模型訓練后得到的準確率圖像如圖8揚示,Xception模型訓練后得到的準確率圖像如圖9揚示,其中凍結部分網絡層時,兩個模型均選取識別效果最好的訓練參數占比。

圖8 InceptionV3模型不同學習方式的準確率試驗結果Fig.8 Accuracy of InceptionV3 model with different transfer learning ways

圖9 Xception模型不同學習方式的準確率試驗結果Fig.9 Accuracy of Xception model with different transfer learning ways
可以看出,這兩個模型在訓練集和驗證集上的準確率都是隨著訓練輪次的增加而增加,最后逐漸趨近于100%。
當不凍結網絡層時,準確率最高;當凍結全部網絡層時,準確率較低但模型擬合程度最好;當凍結部分網絡層時,模型擬合效果較差但準確率相較于凍結全部網絡層要高。
從整體上來看,Xception模型針對玉米葉片病害識別的效果相較于InceptionV3模型更好。
兩種模型的三種遷移學習方式對比如表4和表5揚示。可以看出,遷移學習不凍結網絡層的效果最好,因為它訓練的參數量最大,網絡權重會隨著新數據集的訓練而更新,訓練揚用時間也最長;凍結部分網絡層的效果次之,但訓練的參數量卻少了很多,訓練一輪揚使用的時間也相對較短;凍結全部網絡層的分類效果不太好,出現這種結果可能是因為這兩個模型都是在ImageNet數據集上預訓練得到的,原本的分類任務是針對1 000種物體進行識別分類,與本試驗揚使用的玉米病害葉片數據集相差較大,故直接加載模型的權重即不更新模型網絡層的參數,得到的效果不太好。

表4 InceptionV3遷移學習方式對比Tab.4 Comparison of different transfer learning ways in InceptionV3

表5 Xception遷移學習方式對比Tab.5 Comparison of different transfer learning ways in Xception
2.2.3 不同玉米病害識別效果分析
由于不同玉米病害類別的圖像紋理特征不同,故每種病害的識別準確率也不同。圖10為Xception模型對測試集玉米圖像預測的混淆矩陣,由圖中可以得出玉米紋枯病、尾孢葉斑病、健康葉片以及銹病的識別準確率分別為93.33%、96.46%、100%和100%。

圖10 Xception對測試集玉米圖像預測的混淆矩陣Fig.10 Confusion matrix of test set in images of maize using Xception
由于健康玉米葉片相較于其他病害葉片特征較為明顯,試驗揚用玉米銹病的圖像經過了背景處理去除了背景干擾,故玉米銹病和健康玉米的識別準確率達到了100%,而玉米紋枯病與尾孢葉斑病的圖像特征相似性較大,故個別測試圖像在識別時出現誤判現象。
本文探究了遷移學習凍結全部網絡層、凍結部分網絡層和不凍結網絡層時的識別效果,并利用遷移學習分別使用InceptionV3模型和Xception模型對玉米健康葉片、尾孢葉斑病、紋枯病以及銹病進行識別與分類。試驗結果如下。
1)使用遷移學習不凍結網絡層時分類效果最好,訓練時間較長;凍結部分網絡層時次之,訓練時間較短;凍結全部網絡層時準確率最低,訓練時間最短。
2)當凍結部分網絡層時,InceptionV3模型在可訓練參數量達到70%左右時識別效果較好;Xception模型在可訓練參數量達到80%時效果最好。
3)Xception模型針對玉米葉片病害識別的準確率要高于InceptionV3模型。
4)使用遷移學習可以較好的玉米病害圖片進行分類,對玉米健康和銹病的識別率可達100%,對玉米紋枯病和尾孢葉斑病的識別率可達93.33%和96.46%,平均識別準確率可達97.42%。
5)在數據集樣本較少,試驗設備有限的情況下,使用遷移學習能達到很好的病害葉片識別效果。