雷 朦,余順園
(安康學院電子與信息工程學院,陜西 安康 725000)
魔芋作為一種經濟作物,具有較好的食用、藥用價值以及工業價值[1,2],是中國中西部地區重要而具有特色的經濟農作物之一。然而魔芋在種植過程中易感染各種病害[3],有效控制病害的前提條件是能及時準確地識別出病害種類。傳統的魔芋病害識別主要依賴于人工,但是隨著智慧農業的興起[4],人工智能技術逐漸滲透到農業生產的各個環節,因此基于機器視覺的農作物病害研究受到了廣泛關注[5-7]。本研究對卷積神經網絡的魔芋病害識別進行分析,旨在及時發現魔芋病害,減輕勞動力強度,提高生產效率。
隨著計算機技術在農業圖像處理領域的滲透,學者們利用模式識別方法開展了一系列基于機器視覺的各類農作物病蟲害分類方法研究。傳統的諸如支撐向量機[8]、K-means 聚類分割[9]、遺傳算法[10]等均依賴于特征,而特征提取具有不穩定性,易受環境影響等,為此深度學習應運而生,尤其是隨著各類深層次結構網絡的不斷完善,如卷積神經網絡(Convolutional neural network,CNN)、遞歸神經網絡等使得圖像識別在適應性和魯棒性上均有較大提升,基于深度學習的農業領域病蟲害自動識別也日益受到學者們的關注[11]。利用深度學習獲取作物病害的多尺度特征,可以更精確地實現不同病害的特征表達,有利于作物病害的精確識別。基于CNN 的農作物病害識別具有較高的準確率[12-14],CNN 通過大量的訓練樣本數據提取特征,有效突破了傳統算法特征提取的局限性。本研究以Inception V3 為卷積算法理論模型,使用CNN 對魔芋病害分類檢測進行較深入的研究,并學習、訓練、測試魔芋病害分類檢測,得到了較好的結果。
本研究主要以Inception V3 為卷積算法理論模型,并以此為依據進行訓練學習,在深度學習網絡開發環境平臺下進行試驗。
深度學習不僅屬于機器學習的一部分,也是其新領域的發展。數據D=(xi,yi),Δi≤m,D為二維的數據。
1)模型。F1={f(x,θ),θ≤Rn},其中,θ取值于n維歐式空間Rn,該模型為一個函數,函數可以是線性函數或是非線性函數,如線性函數y=f(x) =wτx+b,廣泛線性函數y=f(x) =wτΦ(x) +b,非線性函數在人工神經網絡(Artificial neural network,ANN)中最具代表性。
2)策略。在最小優化問題過程中,會在模型中加入損失函數L[y,f(x)]和正則項||θ||2,本研究對輸入損失函數進行經驗風險計算并引入了R(θ),因此優化結果可表示為:

3)算法。用神經元結構算法并以神經元為基本單位建立神經網絡。
深度學習是以DNN(深度神經網絡)為模型,其結構包括輸入層、輸出層和隱藏層。單個神經元結構包含輸入信號、處理功能、輸出信號,如圖1 所示,其中b為偏置項,x1~x4為輸入數值,w1~w4為權重。對數據求和以后,經過激活函數f取得輸出值y,即輸出值為:


圖1 神經元結構
深度神經網絡結構見圖2,包括1 個輸入層和輸出層和4 個隱藏層,可以為數據處理設計多層的網絡結構,如圖像的分類、魔芋病害分類識別等。

圖2 深層神經網絡結構
Inception 體系構造的思想是利用密集成分來接近最好的局部稀疏結構,已有4 個版本,Inception V3 是其中比較有代表性的網絡,屬于較深的卷積網絡。Inception V3 將1 個較大的二維卷積分為2 個較小的一維卷積,如7×7 卷積能夠分成1×7 卷積和7×1 卷積。當然3×3 卷積也能夠分成1×3 卷積和3×1卷積,這種非對稱卷積結構拆分(圖3)優于對稱卷積結構,因為便于處理更多且更豐富的空間特征,特征多樣性增加,同時減少了計算量。

圖3 非對稱的卷積結構拆分結果
在魔芋病害分類識別試驗中,基于InceptionV3在深度學習環境下進行試驗,實現對魔芋病害分類識別。本研究使用的魔芋病害分類數據集由課題組自行采集,該數據集包括訓練集和測試集,主要用來評估模型的準確率。在數據進行訓練和測試前,進行適當的去噪、分割、細化、歸一化等預處理。對模型進行深入剖析,對其內部特征進行可視化處理以及輸出識別準確率分析。
魔芋病害分類模型的構架和Inception V3 大體相同,只是輸入圖片大小變成了28×28,卷積層和池化層大體一樣[15]。在深度學習環境下訓練該模型,為了適應該環境的配置,對Inception V3 模型進行了修改,將所有各層間的連接設為全連接的形式,如圖4 所示。

圖4 全連接形式
利用網絡模型對測試圖片數據進行訓練,根據各層參數的定義及各層的連接關系確定網絡模型的結構圖,顯示出各層間的連接,設置各層的參數。所使用的網絡模型由兩層卷積層、兩層池化層和兩層全連接層構成,能夠輸出損失率和準確率。
訓練完成后,在運行終端進入Python 環境,輸入代碼,并對代碼進行編譯,得到所需建立的網絡,讀取測試圖片,編寫顯示各層數據的代碼并執行,在執行無誤的情況下,顯示出各層輸出數據和權值特征圖。圖5 是第一次卷積的輸出圖和權值圖,其中圖5a是輸出圖,圖5b 是權值圖。

圖5 第一次卷積輸出與權值
經過卷積操作會使圖片大小變為24×24,提取的特征變多,識別準確率增加。由圖5 可知,卷積輸出圖由20 個小方塊組成,代表輸出的20 個特征圖,權值圖代表所用卷積核內部權值參數的大小。第一次卷積之后緊跟著一個池化層,池化窗口大小為2×2,池化移動步長為2,池化層功能一樣,所以第一次和第二次池化的數值一樣,如圖6 所示,其中圖6a 是第一次的輸出圖,圖6b 是第二次的輸出圖。

圖6 池化輸出圖
經過池化操作使得圖片大小減少50%,但是其特征圖的數量沒有減少。接下一層是第二次卷積層,第二次卷積核的大小仍為5×5,卷積步長為1,則該層的輸出數據圖和權值參數如圖7 所示。

圖7 第二次卷積輸出權值
為了訓練數據集得到模型,首先,通過配置文件內的參數,運行訓練模型的腳本文件,得到每迭代1次的數據,每訓練迭代1 次就會輸出訓練損失率和測試準確率。由于本研究配置文件設置的是最大迭代次數10 000 次,全部顯示數據量太大,故設置成每迭代100 次顯示1 次訓練損失函數值,每迭代500 次顯示1 次測試準確率。
圖8 為在學習中迭代次數與學習率、損失函數值之間的關系,圖9 為在測試中迭代次數與測試準確率和測試損失函數值的關系。由圖8 可知,訓練過程的損失函數值在開始就急劇下降,基本保持在0 左右,學習率的大小變化是滿足學習策略函數的。測試結果(圖9)顯示,損失函數值基本為0,準確率維持在90%以上,平均準確率為92.12%。

圖8 訓練學習率與損失函數值

圖9 測試損失函數值與準確率
通過調整模型結構和設置參數對模型進行優化,前后進行對比,盡量得出更適合、更精準的訓練模型。加入卷積或是池化層改變結構,可通過參數調整改變卷積核和池化窗口的大小及步長,選擇合適學習策略和激活函數均能改善模型性能。
為了降低從卷積層輸出的特征向量的維度,完善結果,并避免過度擬合,池化一般在卷積后進行。池化可分為空間金字塔池化、一般池化和堆疊池化。可調整池化窗口的大小和平移步長。尺寸X 表示窗口的大小,stride 表示移動多少單位像素。本研究通過調節池化窗口大小和移動步長來分析模型性能的參數變化,運用控制變量法對其進行調整,以得到更好的結果。
學習策略是指設置學習率變化規律的函數,在深度學習中,學習策略有很多種方法,需要選取適合的學習策略對模型進行訓練。常用的學習策略函數有sigmoid、fixed、exp、inv、step、multistep、poly,各學習策略函數表達式如表1 所示。次數和進修率;

表1 激活函數表達式
表示取整
激活函數是非線性函數,用于對每層數據進行計算,按照一定的原理對卷積階段獲得的特征進行刪除和選擇,由于線性模型存在表達能力不夠的問題,本研究采用非線性變化方法。
將提取的數據作為輸入,進行非線性變換R=h(y),一般采用的非線性函數有sigmoid、tanh、softsign 和ReLU。ReLU 相對于其他幾種方式具有更快的收斂速度,因此訓練網絡的速度也比較快,會節省很多時間。
圖10 為以上4 種非線性函數的曲線圖,表2 列出了4 種非線性操作函數的表達式。

圖10 4 種激活函數

表2 激活函數表達式
基于上述模型,對7 種最常見的魔芋病害種類進行了識別測試,測試結果如表3 所示,測試數據里面包含無病害魔芋和有病害的魔芋。從試驗結果、損失函數值及學習率來看,損失函數值基本保持在0 左右,學習率滿足了學習策略函數,準確率維持在90%以上,基本能夠滿足病害識別的要求。若更改模型參數可以改變卷積核和池化窗口的大小以及步長,會得到不同的準確率。

表3 測試結果
對魔芋病害識別結果設計了簡單的顯示界面,如圖11 所示,界面左側是待識別的圖片,右側是識別的結果及相應病害特征的簡單描述。

圖11 魔芋病害識別界面
為了實現基于機器視覺的魔芋病害種類自動識別,以Inception V3 為卷積神經網絡算法理論模型,在深度學習開發環境下,采用神經元結構算法,以神經元為基本單位組建神經網絡,實現了魔芋病害種類的識別。通過歸一化和細化等預處理提升識別的精度和準確度,對模型內部及結果進行可視化處理以增加算法的實用性;在識別過程中通過調節各參數及層結構對模型進行優化,使模型能夠較好地兼顧準確率和效率。測試結果表明,算法能夠實現常見魔芋的自動病害識別,準確率達90%以上。