史亞平 汪宗光
(黃河科技學院工學部,河南 鄭州 450062)
農作物的疾病大多顯現在葉片上,對葉片的觀察和識別對農作物的增產具有重要作用。玉米是我國主要種植作物之一,在我國農業戰略發展中有著不可替代的作用。傳統提高玉米產量的方法就是依靠專業人士根據玉米的長勢及外部環境進行提前預判,然后做出相應措施進行事先防治。但是這種方法存在一定的要求,要求從業者具有大量的專業知識和豐富的種植經驗;要求各個產地都要配置一定數量的技術人員,因此投入人力成本較高。
隨著計算機視覺領域的研究與發展,圖像處理、圖像檢測與分類任務在農作物葉片疾病識別領域的實際應用已經成為現實。在國外,Priyadharshini等[1]認為,農作物病害的準確識別是加快農業信息化領域快速發展的必然路徑,其基于卷積神經網絡(CNN)的架構進行改進了LeNet模型,其在PlantVillage的玉米葉圖像數據集上進行了實驗,其準確率高到96.2%。Rocha等[2]評估了3種最先進的卷積神經網絡架構對玉米葉片病害進行分類的性能,其在實驗中應用了一些模型優化方法,如超參數優化方法、數據增強和參數微調策略等,其所實現的模型在玉米葉病分類上的準確率均高達97%。Sibiya等[3]設計實現的CNN模型能夠從玉米葉子中識別出3種不同類型的玉米葉疾病,如玉米葉枯病、常見銹病和灰葉斑病。Baldota等[4]針對玉米葉的疾病識別問題探索了遷移學習在DenseNet-121模型上的應用性能,實驗表明,基于遷移學習的DenseNet-121模型在具有噪聲的數據集上具有良好的表現性能。Singh等[5]探索了用于快速準確檢測玉米葉片病害的AlexNet模型性能,其實現的模型在兩類玉米疾病的識別過程中取得了99.16%的準確率。在國內,張開興等[6]基于圖像處理技術探索了基于BP的玉米葉疾病問題。劉永波等[7]基于U-Net模型研究了玉米葉疾病的層級劃分和病斑區域檢測問題,經測試圖像分割試驗中病斑分割MIoU值達到93.63%,其設計實現的模型運算速度為1s左右,具有較強的應用性。王美娟等[8]提出,多尺度卷積神經網絡模型來解決傳統模型訓練時間冗長,泛化性能不足等問題,其在玉米病害圖像數據上的實驗結果顯示,識別準確率達98.44%,單張圖片測試平均僅需0.25s。鮑文霞等[9]研究了識別玉米葉片疾病的新模型:改進卷積神經網絡模型。運用卷積堆棧和Inception、ResNet組成特征融合網絡,從而使得模型的識別率大大提升,達到了98.73%。李靈芳等[10]研究一種基于SVDResNet50神經網絡的農作物葉片病癥識別方法,該方法可以克服人工方式的種種問題,提高了農作物葉片的識別效率與識別準確率,具有實際應用性。王超等[11]采用ResNet50模型在Plant Village數據集上進行數據增強后訓練,獲得最高的分類準確率為92.82%。張建華等[12]自建數據集進行模型構建和開發APP進行玉米葉部病害識別。
數據集在人工智能、機器學習領域占有重要地位[13],是機器具有“智能”的重要前提條件。目前在玉米葉片疾病研究領域,調研到3種玉米葉數據集。
Wiesner-Hanks等[14]于2015年建立了田間玉米圖像數據集,是玉米北方葉枯病的單一數據集。Plant Village數據集是一個公開的植物病蟲害數據集,該數據集有收錄玉米葉片銹跡病和健康的圖片,據統計銹跡病葉片有1192張,健康玉米葉片1162張。陳雷等[15]建立了大田作物病害識別研究圖像數據集,該數據集包括我國主要3種農作物的15種病蟲害樣本,樣本數量有17624張。
本文采用Plant Village數據集中的玉米葉片,同時采用數據爬蟲技術利用requests庫以“健康玉米葉”“患銹跡病玉米葉”為關鍵詞進行檢索百度圖像,檢索的玉米葉片疾病分類數據集,其為三通道的RGB彩色圖像,其數據展示如圖1所示。

圖1 數據集三通道的RGB彩色圖像展示
對抓取的數據集進行統計,其中健康的玉米葉927個,患有銹跡病的玉米葉953個,融合Plant Village數據集中病變葉片1192張,健康玉米葉片1162張,共得到2145張銹跡病,健康玉米葉片2089張。
為了能夠進行合理的實驗,采用數據增強的方法對原始數據進行擴充,擴充后的正樣本健康玉米葉2089×2個、負樣本繡疾病玉米葉2145×2個。在進行模型訓練和測試階段,將數據集分為訓練集和測試集,其中訓練集占80%,測試集占20%。
圖像處理領域的數據增強主要就是通過對原始樣本進行裁剪、翻轉、扭曲、高斯噪聲等操作對原始圖像進行變換,從而提高模型的泛化性能。具體來說采用Keras中的ImageDataGenerator函數對參數設置實現隨機對圖片執行水平翻轉操作和高斯噪聲等方法實現數據的擴充。
隨機對圖片執行水平翻轉操作,其實現結果如圖2所示。
圖片翻轉操作不涉及改變圖像的內容,使用高斯噪聲、顏色增強等方法可以改變圖像內容,加上高斯噪聲會扭曲圖像的高頻特征,如圖3所示,通過學習和訓練,可以提高模型的泛化能力。
高斯噪聲實現效果如圖3所示。

圖3 高斯噪聲實現效果圖
卷積神經網絡模型是由Lecun等[16]于1989年提出,該結構在圖像處理領域取得了巨大的成功。卷積神經網絡主要有多個卷積層、池化層堆疊和全連接層等部分組成,其結構如圖4所示。

圖4 卷積神經網絡結構圖
2.2.1 Dropout層
Dropout[17]方法簡單的說就是隨機丟棄隱藏層中的神經元。當網絡較為復雜時,采用Dropout方法可以在前向和后向傳遞過程中不再考慮這些被丟棄的神經元,從而通過減小隱層單元之間的依賴關系來使網絡減小模型的過擬合問題。Dropout的形象化表示如圖5所示。

圖5 Dropout的形象化表示
2.2.2 Adam優化算法
2015年,Jimmy在其論文《Adam:A Method for Stochastic Optimization》[18]中提出了Adam優化算法,Adam的廣泛應用是因為使用了一階矩來估計梯度,并且為了減少優化誤差還用到加權平均的手段,這樣在訓練過程中即可以保證收斂,充分學習訓練樣本的特征。
2.2.3 Batch Normalization方法
批處理(Batch Normalization,BN)[19]是Inception、ResNet50等深度網絡模型常用的操作,通常是在將數據傳遞到輸入層之前對輸入數據進行規范化,其目的是為了使每一層神經網絡的輸入保持相同分布,即把每層神經網絡輸入值的分布強行拉回到均值為0方差為1的標準正態分布,以確保訓練的模型具有泛化性。
3.1.1 傳統Inception模型
在傳統的Inception中,其堆疊結構借鑒了VGGnet的模型結果,由多個小的卷積組成Inception Module模塊,該模塊的結構如圖6所示。

圖6 Inception Module模塊結構圖
其中5×5、3×3和1×1代表了卷積核的大小,在平行結構中采用不同大小的卷積核可以降低整個模型的計算量,可以提取復雜的空間特征的同時能夠保留盡可能多的特征,將這3個平行的特征圖張量進行拼接變可以輸入到下一層神經網絡中去。將該Inception Module模塊的輸出輸入到一個5×5的平均池化層中,設計完成的傳統Inception結構如圖7所示。

圖7 傳統Inception結構
3.1.2 改進的Inception模型
2018年,Woo等[20]在論文《CBAM:Convolutional Block Attention Module》中提出卷積注意力機制,CBAM可更為精準的關注特征圖中包含的有效信息,并對重要特征張量賦予較大權重。CBAM包含2個順序子模塊,稱為通道注意模塊和空間注意模塊,其按特定順序進行組合,CBAM應用于深度卷積神經網絡中的每個卷積塊,以從“輸入特征圖”中獲得利于后續的精準分類的“重要特征圖”。本節在傳統的Inception Module之后引入CBAM模塊,然后使用平均池化操作,將此模型命名為CBAM-Inception,其結構如圖8所示。

圖8 實現的模型結構圖
本次實驗基于tensorflow和keras實現,開發環境配置如表1所示。

表1 開發環境表
模型的參數設置情況如表2所示。

表2 模型的參數設置情況表
針對玉米葉的疾病識別分類問題,這里將主要對比包含5層卷積池化操作的VGG16模型和基線Inception模型,為了避免模型集體過擬合,這里統一縮小卷積、池化的神經元個數,在經過15次迭代后,模型基本訓練完成,其CBAM-Inception模型的訓練準確率如圖9、損失結果如圖10所示、傳統的Inception模型準確率如圖11所示。

圖9 CBAM-Inception準確率圖

圖10 CBAM-Inception模型損失圖

圖11 Inception模型準確率趨勢圖
通過對比發現,CBAM-Inception模型能夠快速達到較高的準確率,且其損失函數值很快就趨于穩定,為了更為方便地比較不同模型在該玉米葉疾病數據集上的分類識別性能,將結果展示到表3中。

表3 模型性能結果展示表
實驗表明,提出的CBAM-Inception模型在玉米葉片疾病識別準確率達到了96.88%,相比于傳統Inception模型,其在玉米葉疾病分類上的準確率提高了6%,提升效果顯著。
Qt庫本身是用C++開發的,使用Python接口進行調用PyQt5可以更快的構建應用程序。在PyQt5中的Qt Designer來創建GUI主界面,將ui轉成py文件,在對應的按鈕編寫代碼。
在本次實現的玉米葉疾病自動分類識別GUI中,一共包含2個需求,能夠根據一張上傳的玉米葉圖像完成分類識別工作;針對打包上傳的文件下的圖像也能實現集中的分類識別工作?;谝陨?個功能需求進行代碼開發應用實現。
加載保存的訓練模型;通過PyQt5構建應用界面,實現上傳單個圖像和上傳整個文件夾下面的圖像。界面實現如圖12所示。

圖12 構建的應用界面
點擊Image實現圖像的上傳,后端進行識別,圖13為健康玉米葉識別圖、圖14為銹跡病玉米葉識別圖。

圖13 健康葉片識別結果圖
準確判斷農作物的病害是保證農作物高產的重要環節,本文以玉米葉疾病的識別與分類工作為切入點,深入研究Inception模型在該領域的應用與實現。針對現有的玉米葉數據集,研究了數據增強的方法,并以此來擴充數據集大小,以解決訓練模型帶來的泛化性能差等問題,實驗表明,通過旋轉、翻折、高斯噪聲等數據增強對提升網絡訓練效果有積極作用。針對傳統Inception模型存在的識別準確率低的問題,引入了卷積注意力機制CBAM,在玉米葉數據集中的實驗結果顯示,改進后的CBAM-Inception模型相比于基線模型及VGG模型都大有提高,其準確為96.88%。基于訓練的模型參數、結合PyQt5應用程序開發框架完成了自動識別玉米葉疾病的應用程序,可以實現對玉米葉圖像的檢測。