王 超,王春圻,劉金明
(1.黑龍江八一農墾大學科技處 黑龍江,大慶 163319;2.黑龍江八一農墾大學食品學院 黑龍江,大慶 163319;3.黑龍江八一農墾大學國家雜糧工程技術研究中心 黑龍江,大慶 163319;4.黑龍江八一農墾大學信息與電氣工程學院 黑龍江,大慶 163319)
玉米是我國的重要農作物之一,近年來因氣候破壞、環境污染等問題導致玉米在種植階段面臨病害類型多、破壞性強,防治難度大等諸多隱患,使得玉米產量及質量均在嚴重下降。同時由于農村勞動力相對短缺,針對玉米病害的判斷不準確而導致病害防治更困難。
隨著計算機技術的發展,深度學習在語音識別和視覺識別等領域引起了人們的廣泛關注,相比于傳統算法,選用深度學習方法具有較強的識別率、更高的可靠性和降低錯誤率等優勢。因此,本文采用卷積神經網絡來對玉米葉片病害進行識別。通過深度學習對玉米葉片進行病害識別,將深度學習可以更熟練的應用于農業,加強對病害進行精確的識別,豐富病害防治技術,提升農作物的質量和產量。
本文以大斑病菌、銹病、灰斑病玉米葉片和健康玉米葉片為研究主體,使用預訓練網絡AlexNet、GoogLeNet 和ResNet 識別病害玉米葉片進行對比實驗,并與經典的機器學習算法做比較;同時通過對ResNet 模型和SVM、KNN、BP 神經網絡進行對比,探究深度學習網絡結構ResNet進行玉米葉片病害快速識別的可行性。
本文數據集來自于PlantVilliage數據集(https://plantvillage.psu.edu/)。試驗選取玉米常見的灰斑病、銹病、大斑病菌感染玉米葉片和健康玉米葉片4類玉米圖片,共計1529張。原始數據量如表1所示。
從網上獲取到的圖像數據由于尺寸大小不一致,不可以直接去使用,對于不同網絡輸入要求不一致,因此需要對圖像尺寸進行調節,滿足各類網絡的輸入要求,因此,有必要對原始數據進行如下預處理。處理后圖像如圖1所示。
為了防止網絡訓練過擬合,有必要提供大量訓練數據。但是收集額外的數據會消耗大量的物質和人力資源,效率尤其低下。因此,本文對原始數據使用數據增強技術來擴充。數據增強主要包括角度,亮度,對比度增強等,增加有關數據。這次,使用ImageDataGenerator 類來創建圖像生成器,然后寫入數據增強的方式,本實驗采用了角度變換、色度變換以及像素值變換3種方式完成數據集擴充,最后得到7645張圖片數據,處理后的數據量如表2所示。

表1 原始數據量

圖1 處理后的圖片(統一格式,擴充)

表2 處理后數據量
Tensorflow 程序分為兩個階段,一個階段是構建階段,另一個是實現階段。其中構建階段是從創建op(operation)開始,在python中op的創建是由op構造器(ops constructors)創建的,然后作為一個node加入到graphs中。在執行階段,首先得建立一個會話(Session),然后將構建好的graphs放到繪畫中去執行。
下面是Tensorflow中各部分的基本使用:
(1)圖(graphs)用于計算任務,構建神經網絡的過程,但它們只是進行構建網絡并不會進行計算。
(2)圖是在會話(Session)的上下文中運行的。
(3)數據使用張量表示,張量維度由“階”呈現。零階是表示數字的標量;一階是代表一維整體的向量。第二階是代表二維整體的矩陣。張量是有序的并可以通過張量右邊的方括號來確定。如,表示的是3階。
(4)用變量保持狀態。
(5)使用feed 和fetch 分配或獲取任意操作(構造操作)的數據。
深度學習的特點是對數據進行非常多的重復訓練,在先進的機器上迭代次數可能會達到幾十億次。圖形處理器(Graphics Processing Unit,GPU)正好有這個專長,處理器專門處理諸如全局管理之類的復雜操作,而圖形處理器專門處理對大量數據的簡單且重復的操作,因此選擇搭建基于GPU加速的Tensorflow框架。經試驗證明,采用GPU加速的速度約為使用CPU處理速度的10倍左右。
ResNet引入了殘差網絡結構和ResNet網絡的結構實現過程,每個ResNet網絡包含輸入部分、輸出部分和中間卷積部分。通過這種結構可以把網絡層加深,并且最終分類效果會更好。ResNet結構可以非常快速地加速神經網絡的形成,并且極大地增加了模型的準確性。
本文的玉米葉片病害識別模型主要用卷積神經網絡來構建,玉米葉片病害識別算法的流程如圖2所示。


圖2 玉米葉片病害識別算法流程圖

本文使用遷移學習方法來完善ImageNet上的預訓練網絡(例如AlexNet,GoogLeNet,ResNet)。遷移學習能夠自動化地提取更具表現力地特征,滿足實際應用中的端到端需求。普遍情況下收集到的數據量不會像Imagenet一樣大,并且很難形成具有足夠泛化能力的網絡。所以,在實際應用中使用遷移學習微調在ImageNet上預訓練過的網絡是一個有效而且快速的模型訓練方法。
本文利用三個經典的卷積神經網絡AlexNet、GoogLeNet 和ResNet 進行識別玉米葉片病害。玉米葉片類別為玉米大斑病菌、玉米灰斑病和玉米銹病、健康玉米葉片共4種,因此,ResNet、GoogLeNet和AlexNet的最后一個全連接層的神經元個數被修改為4。所有實驗均在Python3.8.0 軟件上實現,并使用了NVIDIA TITAN Xp GPU來加速訓練。優化方法設置為隨機梯度下降,“配置x”后的括號內的第一個數字代表批量尺寸,第二個數字代表epoch次數。同時設置了9種配置方式,其中,批量尺寸有16、32 和64 共三種,epoch 有8、16 和20 共三種,將9 種配置分別應用到3 種預訓練網絡上共得出了27 個網絡模型。預訓練網絡性能對比實驗的評價指標定為準確率,即分類正確的樣本個數占樣本總數的比例。不同參數配置下的網絡分類準確率如表3所示。
由表3 可見,在配置5(32,16)下,使用預訓練網絡ResNet 得到了全局最優的分類準確率為92.82%。AlexNet 在配置7(64,8)上取得了最高分類準確率為89.51%,GoogLeNet在配置6(32,20)上取得了最高分類準確率為90.24%。因此,批量尺寸的增加以及epoch次數的增加都對各個網絡的性能無特定的影響。
ResNet 模型(32,16)的形成過程顯示了訓練過程中訓練損失的曲線和驗證損失的曲線,如圖3(a)所示;而在圖3(b)中顯示了訓練準確率和驗證準確率的曲線。結果發現,無論是在損失曲線上還是在準確率曲線上,驗證集的曲線仍遵循與訓練集相同的趨勢,并且驗證損失和訓練損失之間的差異小于0.1。

表3 不同參數配置下的網絡分類準確率

圖3 ResNet(32,16)訓練與驗證損失曲線和準確率曲線
基于ResNet的模型在批量尺寸為32個、epoch次數為16時,達到了全局最優的分類準確率為92.82%,不僅證明出使用ResNet 作為預訓練網絡的優異性,還從側面證明出了該模型具有良好的泛化能力。
對比了最優參數配置(32,16)ResNet 模型和支持向量機、k近鄰、BP神經網絡的分類準確率。最優參數配置(32,16)ResNet 模型的分類準確率為92.82%,支持向量機、k 近鄰、BP 神經網絡的分類準確率分別為72.34%、74.81%和73.98%,分別比最優參數配置(32,16)ResNet模型低了20.48%、18.01%和18.84%。可見,最優參數配置(32,16)ResNet 模型的分類準確率明顯的優于支持向量機、k近鄰、BP神經網絡。
本研究以深度學習為基礎,通過采集玉米灰斑病、銹病、大斑病菌感染葉片、玉米健康葉片共4 種葉片來進行識別研究。采用了ResNet作為主體模型提出玉米病害識別模型,并使用預訓練網絡AlexNet、GooLeNet 和ResNet遷移學習識別玉米葉片病害的性能對比實驗,得出的結論是ResNet 模型在批量尺寸為32 個,epoch 次數為16 時取得了最高的分類準確率為92.82%,由此可見ResNet 模型相比于AlexNet模型和GoogLeNet模型能夠達到更優的分類準確率。由此可見ResNet模型能夠達到更好的準確率,可以更快的識別病害并且更優于傳統機器學習算法。