劉志勇,張麗秀,鐘婷婷,王幸福,胡聲洲,?
(贛南師范大學 a.數(shù)學與計算機科學學院;b.外國語學院,江西 贛州 341000)
在農(nóng)業(yè)領(lǐng)域,怎樣實現(xiàn)農(nóng)作物的智能化、自動化生產(chǎn),一直是農(nóng)業(yè)的一個研究熱點[1].
在番茄的生產(chǎn)過程中,常伴有病蟲害的發(fā)生.怎樣快速的識別番茄病蟲害,并對癥下藥,將直接影響番茄的質(zhì)量與產(chǎn)量.番茄的病蟲害種類繁多,而且有一些病害的初期癥狀,人眼根據(jù)番茄葉面的癥狀,很難準確區(qū)分.近年來,隨著計算機視覺技術(shù)的快速發(fā)展,基于計算機視覺的番茄病蟲害的自動化識別的研究也比較多.
傳統(tǒng)的計算機視覺方法是通過提取、篩選顏色、紋理、形狀等特征,再選擇合適的病斑特征以及分類器來實現(xiàn)檢測.文獻[2]提出了一種結(jié)合HOG、LBP特征的結(jié)合的番茄病蟲害檢測模型;文獻[3]提出了一種基于神經(jīng)網(wǎng)絡(luò)的番茄葉部病害識別方法等.目前,由于不存在通用的分割和特征抽取算法,且特征的提取很多時候依賴專業(yè)人員的經(jīng)驗,現(xiàn)有傳統(tǒng)的計算機視覺方法往往可擴展性差.與傳統(tǒng)的計算機視覺方法相比,基于卷積神經(jīng)網(wǎng)絡(luò)的圖片識別摒棄了復雜的圖像預處理和特征提取操作,具有直接抽取分類特征的優(yōu)點,往往不需要特意設(shè)計分類器,簡化了識別流程.同時,其抽取特征的方法常適合各種場合下的分類,泛化性較強.近年來,基于卷積神經(jīng)網(wǎng)絡(luò)的圖片識別的應用也比較多[4].
本文探討了基于leNet-5的番茄病蟲害識別問題,針對傳統(tǒng)的leNet-5對番茄病蟲害識別效果較差,對其進行了改進.采用2018年AI challenger農(nóng)作物病蟲害檢測中的番茄病蟲害數(shù)據(jù)集,通過數(shù)據(jù)增強的方式對其進行擴充.實驗表明,本文提出的改進leNet-5的綜合模型,識別精度能達到95.3%,在識別精度與模型建立的效率上都有所提高.
卷積神經(jīng)網(wǎng)絡(luò)(簡稱CNN),與神經(jīng)網(wǎng)絡(luò)相似,其靈感來自于人腦中視覺皮層獲取外部信息的方式.其通過網(wǎng)絡(luò)各層中神經(jīng)元節(jié)點感知圖像的不同區(qū)域信號并獲取其特征信息,然后通過組合網(wǎng)絡(luò)各層特征信息,得到圖像中不同層次的信息,計算機通過不斷地學習訓練之后,就可能擁有類似于大腦的圖像識別能力.近年來,隨著計算機視覺技術(shù)的發(fā)展,CNN在圖片識別領(lǐng)域開始大展拳腳,其幾乎成了深度學習的代名詞.
CNN主要由卷積層、池化層、全連接層3個部分組成.其訓練包括信息的前向傳播、誤差梯度的反向傳播2個過程.CNN中信息的前向傳播過程,是對圖片特征的提取、圖片抽象表達的過程,是卷積層、池化層、全連接層等綜合作用的結(jié)果.
卷積層主要用于提取圖片特征,其通過卷積運算對上一層節(jié)點進行線性組合,然后對組合結(jié)果進行非線性變換得到輸出,并將該輸出作為下一層的輸入,不斷重復該過程,從而得到圖片的更抽象的表達.如公式(1)所示,為卷積層操作表達式.其中X、W、b、f(·)、A分別表示該層的輸入、所使用卷積核、偏置、激活函數(shù)及輸出.
A=f(W·X+b)
(1)
池化層是利用特定規(guī)則進行池化,來降低特征平面維度.常用的池化層有最大池化層、平均池化層等.如(2)所示,為池化操作表達式.其中d(·)、S分別表示該層所采用的池化函數(shù)及其池化結(jié)果.
S=d(A)
(2)
(3)
(4)
其中ai表示預測值,yi真實值,nL為類別的個數(shù),i為訓練樣本真實類別序號.
(5)
(6)
leNet-5適用于手寫字體識別,在使用leNet-5識別番茄病蟲害葉部圖片時,損失值較高,識別率很低,模型訓練效率較低.主要存在以下問題:
為了使整個leNet-5網(wǎng)絡(luò)的番茄病蟲害識別性能有更大提升、達到較高的準確率,對其進行優(yōu)化改進.
針對leNet-5在番茄病蟲害識別上的問題,做如下改進:
表1中給出了改進leNet-5網(wǎng)絡(luò)結(jié)構(gòu)中各層的具體參數(shù)的描述,包括各層所使用的結(jié)構(gòu),卷積核/池化尺寸、步長大小S、特征圖數(shù)目及輸出尺寸等.其中卷積模塊組Inception_v3,包含4個分支,分別記為v1_branch_0、v1_branch_1、v1_branch_2、v1_branch_3.Inception_v3中取步長S=1.v1_branch_0由8個1*1卷積核組成,記為8@1*1;v1_branch_1由兩個卷積核4@1*1、12@3*3級聯(lián)而成;v1_branch_2由卷積核4@1*1、6@5*5進行級聯(lián);v1_branch_3由一個5*5 MaxPool層和4@1*1卷積核級聯(lián)而成.經(jīng)Inception_v3處理之后,得到8+12+16+4=30個13*13的特征圖,記為30@13*13.第4層為卷積模塊組Inception_v4,與Inception_v3相似.經(jīng)Inception_v4處理之后得到64@7*7的特征輸出.
表1 網(wǎng)絡(luò)參數(shù)
本文實驗數(shù)據(jù)集采用2018年AI challenger農(nóng)作物病蟲害檢測中的番茄病蟲害數(shù)據(jù)集.共有3種番茄病蟲害,每種病蟲害分為一般及嚴重2類.表2是原始數(shù)據(jù)的統(tǒng)計表.
表2 原始數(shù)據(jù)的統(tǒng)計表
由于獲得新的番茄病蟲害圖片,需要大量的成本.本文中通過數(shù)據(jù)增強的方式,如表3所示,來增加番茄病蟲害數(shù)據(jù)集,增加網(wǎng)絡(luò)的訓練量,從而提高模型的泛化能力;通過增加噪聲數(shù)據(jù),也能有效增強模型的魯棒性.實驗中通過隨機劃分數(shù)據(jù)集的方式,以0.8∶0.2的比例將數(shù)據(jù)集劃分成訓練集與測試集.分別通過前述的數(shù)據(jù)增強方式,使數(shù)據(jù)集達到142 800張.
表3 數(shù)據(jù)增強方式及其參數(shù)
在win10系統(tǒng)下,使用python語言進行網(wǎng)絡(luò)模型的程序設(shè)計,利用pycharm等python代碼編寫平臺,進行程序的編寫,通過使用tensorflow及相關(guān)的卷積神經(jīng)網(wǎng)絡(luò)庫實現(xiàn)了改進的leNet-5模型.并利用matlab等工具對實驗后得到的數(shù)據(jù)進行了分析與比較.
對經(jīng)典leNet-5在卷積核大小,分類器,損失函數(shù)上進行改進,將網(wǎng)絡(luò)中部分卷積核的大小由5×5改為3×3、使用Softmax回歸作為分類器并聯(lián)合交叉熵損失函數(shù),并使用Mini-batch進行梯度更新.在此基礎(chǔ)上,分別在經(jīng)典leNet-5中加入BN層、將激活函數(shù)改為PReLU、在網(wǎng)絡(luò)中加入Inception模塊形成3個改進網(wǎng)絡(luò)模型,記為leNet-BN、leNet-PR、leNet-Inc.并最終將三者均加入leNet-5中形成本文中最后的改進模型leNet-C.具體而言,leNet-BN為在leNet-5的C1、S2,C3、S4層之間加入BN層形成的網(wǎng)絡(luò)結(jié)構(gòu);leNet-PR為在leNet-BN模型中將原來的激活函數(shù)均改為PReLU之后的網(wǎng)絡(luò)模型;leNet-Inc為將C1、C3層改為表1中2個Inception模塊的網(wǎng)絡(luò)結(jié)構(gòu);leNet-C為如表1所述網(wǎng)絡(luò)結(jié)構(gòu).記經(jīng)典leNet-5網(wǎng)絡(luò)為leNet-O.
在保證其它條件不變下,分別使用leNet-O、leNet-BN、leNet-PR、leNet-Inc、leNet-C對本文中數(shù)據(jù)集進行實驗,并進行比較.
在本文實驗中,程序設(shè)計時控制好指數(shù)衰減學習率、目標優(yōu)化函數(shù)以及參數(shù)更新方式保持相同,分別使用leNet-O、leNet-BN、leNet-PR、leNet-Inc、leNet-C對本文中數(shù)據(jù)集進行實驗,比較其對leNet-5網(wǎng)絡(luò)模型效果的影響.改進實驗中都采用Mini-batch梯度下降法,來更新梯度以及參數(shù)的學習.如圖1所示,為經(jīng)上述方法對leNet-5進行改進,在經(jīng)過200次迭代之后,網(wǎng)絡(luò)模型對番茄病蟲害識別的正確率.圖2為傳統(tǒng)leNet-5及改進后網(wǎng)絡(luò)模型訓練過程中迭代次數(shù)與損失值的比較圖.
圖1 識別的正確率比較 圖2 損失值對比
在本文識別番茄病蟲害leNet-5改進實驗中,從2圖中可以看出,在傳統(tǒng)的leNet-5的基礎(chǔ)上加入BN層、將激活函數(shù)改為PReLU函數(shù)并在全連接層采用dropout策略、加入Inception模塊,在加快網(wǎng)絡(luò)訓練速度、提升網(wǎng)絡(luò)識別率優(yōu)化網(wǎng)絡(luò)上有較好的效果.
表4所示為改進后的網(wǎng)絡(luò)模型對于識別番茄病蟲害的準確率統(tǒng)計表.在綜合前者的改進后,各優(yōu)化方法之間也展現(xiàn)了較好的協(xié)同作用效果,使得改進后的網(wǎng)絡(luò)模型的整體識別率達到了95.3%.
表4 各網(wǎng)絡(luò)模型識別率統(tǒng)計表
本文在傳統(tǒng)的leNet-5基礎(chǔ)上進行了包括加入BN層、采用PReLU激活函數(shù)并在全連接層采用Dropout策略、加入Inception結(jié)構(gòu)等多種改進實驗,提出一種對傳統(tǒng)的leNet-5的改進模型,采用2018年AI challenger農(nóng)作物病蟲害檢測中的番茄病蟲害數(shù)據(jù)集,通過數(shù)據(jù)增強的多種方式對數(shù)據(jù)集進行擴充,通過各種改進方案對數(shù)據(jù)集進行訓練和測試,并對各方案及其綜合型的識別效果進行比較,最后改進的leNet-5綜合模型的識別率達到了95.3%.實驗結(jié)果表明,改進后的leNet-5綜合模型在加快網(wǎng)絡(luò)訓練速度、提升網(wǎng)絡(luò)識別率、獲得有效的圖片特征,在識別復雜的番茄病蟲害圖片等方面取得了較好的效果.
但是本文所采用的數(shù)據(jù)集圖片大小是固定的,不具有普適性.本文中所使用的番茄病蟲害的數(shù)據(jù)集還不夠全面,在實際應用中,圖片的大小可能具有任意性,病蟲害的種類繁多,下一步的研究目標將放在圖片的任意性輸入,更多類別分類以及網(wǎng)絡(luò)的進一步優(yōu)化上.