雷 朦,余順園
(安康學(xué)院電子與信息工程學(xué)院,陜西 安康 725000)
魔芋作為一種經(jīng)濟(jì)作物,具有較好的食用、藥用價(jià)值以及工業(yè)價(jià)值[1,2],是中國中西部地區(qū)重要而具有特色的經(jīng)濟(jì)農(nóng)作物之一。然而魔芋在種植過程中易感染各種病害[3],有效控制病害的前提條件是能及時(shí)準(zhǔn)確地識(shí)別出病害種類。傳統(tǒng)的魔芋病害識(shí)別主要依賴于人工,但是隨著智慧農(nóng)業(yè)的興起[4],人工智能技術(shù)逐漸滲透到農(nóng)業(yè)生產(chǎn)的各個(gè)環(huán)節(jié),因此基于機(jī)器視覺的農(nóng)作物病害研究受到了廣泛關(guān)注[5-7]。本研究對(duì)卷積神經(jīng)網(wǎng)絡(luò)的魔芋病害識(shí)別進(jìn)行分析,旨在及時(shí)發(fā)現(xiàn)魔芋病害,減輕勞動(dòng)力強(qiáng)度,提高生產(chǎn)效率。
隨著計(jì)算機(jī)技術(shù)在農(nóng)業(yè)圖像處理領(lǐng)域的滲透,學(xué)者們利用模式識(shí)別方法開展了一系列基于機(jī)器視覺的各類農(nóng)作物病蟲害分類方法研究。傳統(tǒng)的諸如支撐向量機(jī)[8]、K-means 聚類分割[9]、遺傳算法[10]等均依賴于特征,而特征提取具有不穩(wěn)定性,易受環(huán)境影響等,為此深度學(xué)習(xí)應(yīng)運(yùn)而生,尤其是隨著各類深層次結(jié)構(gòu)網(wǎng)絡(luò)的不斷完善,如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural network,CNN)、遞歸神經(jīng)網(wǎng)絡(luò)等使得圖像識(shí)別在適應(yīng)性和魯棒性上均有較大提升,基于深度學(xué)習(xí)的農(nóng)業(yè)領(lǐng)域病蟲害自動(dòng)識(shí)別也日益受到學(xué)者們的關(guān)注[11]。利用深度學(xué)習(xí)獲取作物病害的多尺度特征,可以更精確地實(shí)現(xiàn)不同病害的特征表達(dá),有利于作物病害的精確識(shí)別?;贑NN 的農(nóng)作物病害識(shí)別具有較高的準(zhǔn)確率[12-14],CNN 通過大量的訓(xùn)練樣本數(shù)據(jù)提取特征,有效突破了傳統(tǒng)算法特征提取的局限性。本研究以Inception V3 為卷積算法理論模型,使用CNN 對(duì)魔芋病害分類檢測(cè)進(jìn)行較深入的研究,并學(xué)習(xí)、訓(xùn)練、測(cè)試魔芋病害分類檢測(cè),得到了較好的結(jié)果。
本研究主要以Inception V3 為卷積算法理論模型,并以此為依據(jù)進(jìn)行訓(xùn)練學(xué)習(xí),在深度學(xué)習(xí)網(wǎng)絡(luò)開發(fā)環(huán)境平臺(tái)下進(jìn)行試驗(yàn)。
深度學(xué)習(xí)不僅屬于機(jī)器學(xué)習(xí)的一部分,也是其新領(lǐng)域的發(fā)展。數(shù)據(jù)D=(xi,yi),Δi≤m,D為二維的數(shù)據(jù)。
1)模型。F1={f(x,θ),θ≤Rn},其中,θ取值于n維歐式空間Rn,該模型為一個(gè)函數(shù),函數(shù)可以是線性函數(shù)或是非線性函數(shù),如線性函數(shù)y=f(x) =wτx+b,廣泛線性函數(shù)y=f(x) =wτΦ(x) +b,非線性函數(shù)在人工神經(jīng)網(wǎng)絡(luò)(Artificial neural network,ANN)中最具代表性。
2)策略。在最小優(yōu)化問題過程中,會(huì)在模型中加入損失函數(shù)L[y,f(x)]和正則項(xiàng)||θ||2,本研究對(duì)輸入損失函數(shù)進(jìn)行經(jīng)驗(yàn)風(fēng)險(xiǎn)計(jì)算并引入了R(θ),因此優(yōu)化結(jié)果可表示為:
3)算法。用神經(jīng)元結(jié)構(gòu)算法并以神經(jīng)元為基本單位建立神經(jīng)網(wǎng)絡(luò)。
深度學(xué)習(xí)是以DNN(深度神經(jīng)網(wǎng)絡(luò))為模型,其結(jié)構(gòu)包括輸入層、輸出層和隱藏層。單個(gè)神經(jīng)元結(jié)構(gòu)包含輸入信號(hào)、處理功能、輸出信號(hào),如圖1 所示,其中b為偏置項(xiàng),x1~x4為輸入數(shù)值,w1~w4為權(quán)重。對(duì)數(shù)據(jù)求和以后,經(jīng)過激活函數(shù)f取得輸出值y,即輸出值為:
圖1 神經(jīng)元結(jié)構(gòu)
深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)見圖2,包括1 個(gè)輸入層和輸出層和4 個(gè)隱藏層,可以為數(shù)據(jù)處理設(shè)計(jì)多層的網(wǎng)絡(luò)結(jié)構(gòu),如圖像的分類、魔芋病害分類識(shí)別等。
圖2 深層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
Inception 體系構(gòu)造的思想是利用密集成分來接近最好的局部稀疏結(jié)構(gòu),已有4 個(gè)版本,Inception V3 是其中比較有代表性的網(wǎng)絡(luò),屬于較深的卷積網(wǎng)絡(luò)。Inception V3 將1 個(gè)較大的二維卷積分為2 個(gè)較小的一維卷積,如7×7 卷積能夠分成1×7 卷積和7×1 卷積。當(dāng)然3×3 卷積也能夠分成1×3 卷積和3×1卷積,這種非對(duì)稱卷積結(jié)構(gòu)拆分(圖3)優(yōu)于對(duì)稱卷積結(jié)構(gòu),因?yàn)楸阌谔幚砀嗲腋S富的空間特征,特征多樣性增加,同時(shí)減少了計(jì)算量。
圖3 非對(duì)稱的卷積結(jié)構(gòu)拆分結(jié)果
在魔芋病害分類識(shí)別試驗(yàn)中,基于InceptionV3在深度學(xué)習(xí)環(huán)境下進(jìn)行試驗(yàn),實(shí)現(xiàn)對(duì)魔芋病害分類識(shí)別。本研究使用的魔芋病害分類數(shù)據(jù)集由課題組自行采集,該數(shù)據(jù)集包括訓(xùn)練集和測(cè)試集,主要用來評(píng)估模型的準(zhǔn)確率。在數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試前,進(jìn)行適當(dāng)?shù)娜ピ?、分割、?xì)化、歸一化等預(yù)處理。對(duì)模型進(jìn)行深入剖析,對(duì)其內(nèi)部特征進(jìn)行可視化處理以及輸出識(shí)別準(zhǔn)確率分析。
魔芋病害分類模型的構(gòu)架和Inception V3 大體相同,只是輸入圖片大小變成了28×28,卷積層和池化層大體一樣[15]。在深度學(xué)習(xí)環(huán)境下訓(xùn)練該模型,為了適應(yīng)該環(huán)境的配置,對(duì)Inception V3 模型進(jìn)行了修改,將所有各層間的連接設(shè)為全連接的形式,如圖4 所示。
圖4 全連接形式
利用網(wǎng)絡(luò)模型對(duì)測(cè)試圖片數(shù)據(jù)進(jìn)行訓(xùn)練,根據(jù)各層參數(shù)的定義及各層的連接關(guān)系確定網(wǎng)絡(luò)模型的結(jié)構(gòu)圖,顯示出各層間的連接,設(shè)置各層的參數(shù)。所使用的網(wǎng)絡(luò)模型由兩層卷積層、兩層池化層和兩層全連接層構(gòu)成,能夠輸出損失率和準(zhǔn)確率。
訓(xùn)練完成后,在運(yùn)行終端進(jìn)入Python 環(huán)境,輸入代碼,并對(duì)代碼進(jìn)行編譯,得到所需建立的網(wǎng)絡(luò),讀取測(cè)試圖片,編寫顯示各層數(shù)據(jù)的代碼并執(zhí)行,在執(zhí)行無誤的情況下,顯示出各層輸出數(shù)據(jù)和權(quán)值特征圖。圖5 是第一次卷積的輸出圖和權(quán)值圖,其中圖5a是輸出圖,圖5b 是權(quán)值圖。
圖5 第一次卷積輸出與權(quán)值
經(jīng)過卷積操作會(huì)使圖片大小變?yōu)?4×24,提取的特征變多,識(shí)別準(zhǔn)確率增加。由圖5 可知,卷積輸出圖由20 個(gè)小方塊組成,代表輸出的20 個(gè)特征圖,權(quán)值圖代表所用卷積核內(nèi)部權(quán)值參數(shù)的大小。第一次卷積之后緊跟著一個(gè)池化層,池化窗口大小為2×2,池化移動(dòng)步長為2,池化層功能一樣,所以第一次和第二次池化的數(shù)值一樣,如圖6 所示,其中圖6a 是第一次的輸出圖,圖6b 是第二次的輸出圖。
圖6 池化輸出圖
經(jīng)過池化操作使得圖片大小減少50%,但是其特征圖的數(shù)量沒有減少。接下一層是第二次卷積層,第二次卷積核的大小仍為5×5,卷積步長為1,則該層的輸出數(shù)據(jù)圖和權(quán)值參數(shù)如圖7 所示。
圖7 第二次卷積輸出權(quán)值
為了訓(xùn)練數(shù)據(jù)集得到模型,首先,通過配置文件內(nèi)的參數(shù),運(yùn)行訓(xùn)練模型的腳本文件,得到每迭代1次的數(shù)據(jù),每訓(xùn)練迭代1 次就會(huì)輸出訓(xùn)練損失率和測(cè)試準(zhǔn)確率。由于本研究配置文件設(shè)置的是最大迭代次數(shù)10 000 次,全部顯示數(shù)據(jù)量太大,故設(shè)置成每迭代100 次顯示1 次訓(xùn)練損失函數(shù)值,每迭代500 次顯示1 次測(cè)試準(zhǔn)確率。
圖8 為在學(xué)習(xí)中迭代次數(shù)與學(xué)習(xí)率、損失函數(shù)值之間的關(guān)系,圖9 為在測(cè)試中迭代次數(shù)與測(cè)試準(zhǔn)確率和測(cè)試損失函數(shù)值的關(guān)系。由圖8 可知,訓(xùn)練過程的損失函數(shù)值在開始就急劇下降,基本保持在0 左右,學(xué)習(xí)率的大小變化是滿足學(xué)習(xí)策略函數(shù)的。測(cè)試結(jié)果(圖9)顯示,損失函數(shù)值基本為0,準(zhǔn)確率維持在90%以上,平均準(zhǔn)確率為92.12%。
圖8 訓(xùn)練學(xué)習(xí)率與損失函數(shù)值
圖9 測(cè)試損失函數(shù)值與準(zhǔn)確率
通過調(diào)整模型結(jié)構(gòu)和設(shè)置參數(shù)對(duì)模型進(jìn)行優(yōu)化,前后進(jìn)行對(duì)比,盡量得出更適合、更精準(zhǔn)的訓(xùn)練模型。加入卷積或是池化層改變結(jié)構(gòu),可通過參數(shù)調(diào)整改變卷積核和池化窗口的大小及步長,選擇合適學(xué)習(xí)策略和激活函數(shù)均能改善模型性能。
為了降低從卷積層輸出的特征向量的維度,完善結(jié)果,并避免過度擬合,池化一般在卷積后進(jìn)行。池化可分為空間金字塔池化、一般池化和堆疊池化??烧{(diào)整池化窗口的大小和平移步長。尺寸X 表示窗口的大小,stride 表示移動(dòng)多少單位像素。本研究通過調(diào)節(jié)池化窗口大小和移動(dòng)步長來分析模型性能的參數(shù)變化,運(yùn)用控制變量法對(duì)其進(jìn)行調(diào)整,以得到更好的結(jié)果。
學(xué)習(xí)策略是指設(shè)置學(xué)習(xí)率變化規(guī)律的函數(shù),在深度學(xué)習(xí)中,學(xué)習(xí)策略有很多種方法,需要選取適合的學(xué)習(xí)策略對(duì)模型進(jìn)行訓(xùn)練。常用的學(xué)習(xí)策略函數(shù)有sigmoid、fixed、exp、inv、step、multistep、poly,各學(xué)習(xí)策略函數(shù)表達(dá)式如表1 所示。次數(shù)和進(jìn)修率;
表1 激活函數(shù)表達(dá)式
表示取整
激活函數(shù)是非線性函數(shù),用于對(duì)每層數(shù)據(jù)進(jìn)行計(jì)算,按照一定的原理對(duì)卷積階段獲得的特征進(jìn)行刪除和選擇,由于線性模型存在表達(dá)能力不夠的問題,本研究采用非線性變化方法。
將提取的數(shù)據(jù)作為輸入,進(jìn)行非線性變換R=h(y),一般采用的非線性函數(shù)有sigmoid、tanh、softsign 和ReLU。ReLU 相對(duì)于其他幾種方式具有更快的收斂速度,因此訓(xùn)練網(wǎng)絡(luò)的速度也比較快,會(huì)節(jié)省很多時(shí)間。
圖10 為以上4 種非線性函數(shù)的曲線圖,表2 列出了4 種非線性操作函數(shù)的表達(dá)式。
圖10 4 種激活函數(shù)
表2 激活函數(shù)表達(dá)式
基于上述模型,對(duì)7 種最常見的魔芋病害種類進(jìn)行了識(shí)別測(cè)試,測(cè)試結(jié)果如表3 所示,測(cè)試數(shù)據(jù)里面包含無病害魔芋和有病害的魔芋。從試驗(yàn)結(jié)果、損失函數(shù)值及學(xué)習(xí)率來看,損失函數(shù)值基本保持在0 左右,學(xué)習(xí)率滿足了學(xué)習(xí)策略函數(shù),準(zhǔn)確率維持在90%以上,基本能夠滿足病害識(shí)別的要求。若更改模型參數(shù)可以改變卷積核和池化窗口的大小以及步長,會(huì)得到不同的準(zhǔn)確率。
表3 測(cè)試結(jié)果
對(duì)魔芋病害識(shí)別結(jié)果設(shè)計(jì)了簡(jiǎn)單的顯示界面,如圖11 所示,界面左側(cè)是待識(shí)別的圖片,右側(cè)是識(shí)別的結(jié)果及相應(yīng)病害特征的簡(jiǎn)單描述。
圖11 魔芋病害識(shí)別界面
為了實(shí)現(xiàn)基于機(jī)器視覺的魔芋病害種類自動(dòng)識(shí)別,以Inception V3 為卷積神經(jīng)網(wǎng)絡(luò)算法理論模型,在深度學(xué)習(xí)開發(fā)環(huán)境下,采用神經(jīng)元結(jié)構(gòu)算法,以神經(jīng)元為基本單位組建神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)了魔芋病害種類的識(shí)別。通過歸一化和細(xì)化等預(yù)處理提升識(shí)別的精度和準(zhǔn)確度,對(duì)模型內(nèi)部及結(jié)果進(jìn)行可視化處理以增加算法的實(shí)用性;在識(shí)別過程中通過調(diào)節(jié)各參數(shù)及層結(jié)構(gòu)對(duì)模型進(jìn)行優(yōu)化,使模型能夠較好地兼顧準(zhǔn)確率和效率。測(cè)試結(jié)果表明,算法能夠?qū)崿F(xiàn)常見魔芋的自動(dòng)病害識(shí)別,準(zhǔn)確率達(dá)90%以上。