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

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

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

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

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

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

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

圖8 實現(xiàn)的模型結(jié)構(gòu)圖
本次實驗基于tensorflow和keras實現(xiàn),開發(fā)環(huán)境配置如表1所示。

表1 開發(fā)環(huán)境表
模型的參數(shù)設置情況如表2所示。

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

圖9 CBAM-Inception準確率圖

圖10 CBAM-Inception模型損失圖

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

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

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

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