陳 娟 陳良勇 王生生 趙慧穎 溫長吉
(1.吉林大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院, 長春 130012; 2.吉林農(nóng)業(yè)大學(xué)信息技術(shù)學(xué)院, 長春 130118)
園林害蟲是制約森林城市建設(shè)的主要因素之一。在生長發(fā)育過程中,園林樹木受到各種蟲害的侵襲,導(dǎo)致樹木生長不良、出芽凋萎、腐爛等現(xiàn)象,甚至引起整株死亡。這不僅影響了園林植物的正常生長和觀賞、綠化價值,而且造成了很大的經(jīng)濟(jì)損失。目前,園林害蟲的種類區(qū)分及數(shù)量統(tǒng)計工作主要依靠人工進(jìn)行,勞動強(qiáng)度大,工作效率低。因此,使用人工智能和機(jī)器視覺技術(shù)實(shí)現(xiàn)對害蟲圖像的自動化識別具有重要意義。
近年來,研究者提出了許多害蟲識別系統(tǒng)[1-11]。如基于視覺詞袋框架[12](Bag of words,BoW),VENUGOBAN等[13]將方向梯度直方圖[14](Histograms of oriented gradients,HOG)與加速魯棒特征[15](Speeded up robust features)相結(jié)合,對稻田害蟲圖像進(jìn)行分類。XIE等[16]使用稀疏編碼的空間金字塔模型識別農(nóng)田害蟲圖像。與早期支持向量機(jī)和神經(jīng)網(wǎng)絡(luò)方法相比,帶有背景的害蟲圖像識別精度已經(jīng)得到了提高。為了進(jìn)一步提高識別能力,XIE等[17]提出了基于多任務(wù)稀疏表示和多核學(xué)習(xí)的害蟲識別方法。孫俊等[18]提出了一種批歸一化與全局池化相結(jié)合的新型神經(jīng)網(wǎng)絡(luò)模型植物害蟲識別方法。劉德營等[19]采集田間自然狀態(tài)下的白背飛虱圖像,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的白背飛虱識別方法,并進(jìn)行了應(yīng)用研究。HAFIZ等[20]基于貝葉斯網(wǎng)絡(luò)提出了一種害蟲彩色圖像識別方法。楊國國等[21]基于圖像顯著性分析和Grubcut算法[22]對復(fù)雜背景下的害蟲目標(biāo)進(jìn)行定位,通過 AlexNet卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),實(shí)現(xiàn)了對茶園主要害蟲的表達(dá)和分類。肖志云等[23]提出了一種基于小波域的馬鈴薯典型蟲害特征提取與識別方法。基于支持向量機(jī)與區(qū)域生長結(jié)合算法,潘春華等[24]設(shè)計了黃曲條跳甲、煙粉虱、小菜蛾、薊馬這4類蔬菜害蟲分類識別的檢測算法。
北方園林面積大,害蟲蔓延速度快,對植物生長發(fā)育危害極大,給園林蟲害防治工作帶來巨大難度。以佳木斯市雙擁公園為例,僅喬木、灌木、草坪和花壇 4 種生態(tài)環(huán)境下的園林害蟲就多達(dá)26種[25]。此外,北方園林害蟲種類多,且外形相似度很高,也給自動識別帶來一定難度。在收集到的北方園林害蟲數(shù)據(jù)集上可測試多種現(xiàn)有害蟲識別方法,但隨著網(wǎng)絡(luò)結(jié)構(gòu)的加深,這些方法容易導(dǎo)致梯度消失,或者梯度爆炸或退化現(xiàn)象,以及出現(xiàn)樣本數(shù)量有限造成的過擬合等問題。為解決上述方法存在的問題,本文提出一種基于改進(jìn)殘差網(wǎng)絡(luò)的害蟲圖像識別方法。
試驗(yàn)選取北方園林常見害蟲作為測試對象,針對大黑鰓金龜、楊葉甲、大青葉蟬、紅天蛾、春尺蠖、榆黃葉甲、桃蚜等38類園林害蟲收集圖像進(jìn)行識別。獲取害蟲圖像的途徑有兩個:在自然光環(huán)境下,利用單反數(shù)碼相機(jī)或智能手機(jī)實(shí)地拍攝,以植株、土壤、天空等自然環(huán)境為背景收集凈月潭國家森林公園的園林害蟲圖像;從Google、Naver和FreshEye等搜索引擎上收集害蟲圖像。在植保專家的指導(dǎo)下,為獲取的害蟲圖像標(biāo)記類別,建立樣本庫。部分害蟲樣本圖像如圖1所示。樣本庫中每類害蟲樣本圖像的數(shù)量在200~300之間,其中包括不同角度、姿態(tài)和自然環(huán)境下的原始圖像。由于同一害蟲在不同蟲齡階段的形態(tài)差異較大,試驗(yàn)將每一類害蟲標(biāo)記為幼蟲和成蟲兩個子類別。
圖1 部分園林害蟲樣本圖像Fig.1 Sample images for 24 insect species from garden
基于改進(jìn)殘差網(wǎng)絡(luò)的害蟲圖像識別方法的流程圖如圖2所示。首先,使用富邊緣檢測算法(Rich-edge)對害蟲圖像進(jìn)行邊緣檢測,得到輪廓精細(xì)的害蟲圖像。然后將得到的害蟲圖像集用來訓(xùn)練改進(jìn)的殘差神經(jīng)網(wǎng)絡(luò),通過分塊共軛算法(Block-cg)優(yōu)化網(wǎng)絡(luò)權(quán)重,更新超參數(shù)的值,直至達(dá)到理想的害蟲分類準(zhǔn)確率。
圖2 基于改進(jìn)殘差網(wǎng)絡(luò)的害蟲圖像識別流程圖Fig.2 Flow chart of pest recognition based on improved residual network
1.2.1圖像數(shù)據(jù)集的預(yù)處理
在采集到的害蟲原始圖像中,為了能夠更加精確地將害蟲圖像與背景分離,得到害蟲圖像的完整輪廓和更加豐富的細(xì)節(jié)信息,本文使用Rich-edge算法對害蟲圖像進(jìn)行邊緣檢測。Rich-edge將中值濾波、Sobel算子和Canny算子三者相結(jié)合對害蟲圖像進(jìn)行邊緣檢測。使用中值濾波對輸入的圖像進(jìn)行去除噪聲處理,中值濾波器能夠有效地消除椒鹽噪聲,并且能夠很好地保留害蟲圖像的邊緣細(xì)節(jié)。將Sobel算子和Canny算子的優(yōu)點(diǎn)相結(jié)合,Sobel算子可以檢測到準(zhǔn)確的位置信息,Canny算子能夠檢測到弱邊緣,將二者相結(jié)合,可使得到的害蟲圖像有更加完整的輪廓和豐富的細(xì)節(jié)信息,提高了邊緣檢測的準(zhǔn)確性。富邊緣檢測算法流程圖如圖3所示。
圖3 富邊緣檢測算法流程圖Fig.3 Flow chart of Rich-edge algorithm
將彩色的害蟲圖像轉(zhuǎn)換為灰度圖像,減小背景對圖像的影響。使用Rich-edge算法對害蟲灰度圖進(jìn)行邊緣檢測。將數(shù)據(jù)集進(jìn)行圖像的尺度歸一化處理,統(tǒng)一處理為224像素×224像素的圖像。預(yù)留出已知樣本{Xi,Yi}來計算概率分布。具體步驟為:
(1)對害蟲的彩色圖像進(jìn)行灰度處理,使用公式Gr=0.299R+0.587G+0.114B來計算灰度值,把RGB圖像轉(zhuǎn)換為灰度圖,其中R、G、B分別表示彩色圖像紅、綠、藍(lán)3個顏色通道數(shù)值。
(2)向訓(xùn)練集圖像f1(x,y)中隨機(jī)添加椒鹽噪聲,模擬圖像在傳輸、處理等過程中的噪聲干擾,增強(qiáng)算法的可靠性。
(3)使用中值濾波器去除害蟲灰度圖的椒鹽噪聲,使用滑動窗口方式檢測圖像,得到輸出圖像f2(x,y)。
(4)使用Sobel算子對害蟲圖像f2(x,y)進(jìn)行邊緣檢測,得到輸出BW1。
(5)使用Canny算子對害蟲圖像f2(x,y)進(jìn)行邊緣檢測,得到輸出BW2。
(6)將Sobel算子和Canny算子檢測到的害蟲邊緣圖像BW1、BW2進(jìn)行疊加。
(7)將Rich-edge得到的害蟲邊緣圖像統(tǒng)一處理為224像素×224像素的圖像。
1.2.2改進(jìn)殘差網(wǎng)絡(luò)的結(jié)構(gòu)與學(xué)習(xí)算法
改進(jìn)的殘差神經(jīng)網(wǎng)絡(luò)模型是對傳統(tǒng)殘差網(wǎng)絡(luò)[26](Residual network,ResNet)中的每個殘差塊的結(jié)構(gòu)進(jìn)行改變,通過添加卷積層和增加通道數(shù)來提取更多的害蟲圖像特征,并將貝葉斯方法運(yùn)用于改進(jìn)后的網(wǎng)絡(luò)中。初始化超參數(shù)和網(wǎng)絡(luò)權(quán)重,最小化總誤差,優(yōu)化網(wǎng)絡(luò)權(quán)重,進(jìn)而優(yōu)化超參數(shù),重復(fù)該過程直到網(wǎng)絡(luò)收斂。
ResNet通過增加網(wǎng)絡(luò)的深度來提高網(wǎng)絡(luò)的性能。通過在輸入和輸出之前添加一個恒等映射可以有效地解決網(wǎng)絡(luò)訓(xùn)練過程中出現(xiàn)的梯度消失問題,從而通過增加網(wǎng)絡(luò)深度來提高效果。
殘差學(xué)習(xí)算法的目標(biāo)函數(shù)H分為兩部分,定義為
H(x)=F(x)+x
(1)
式中x——網(wǎng)絡(luò)輸入
F——網(wǎng)絡(luò)學(xué)習(xí)的殘差函數(shù)
當(dāng)下層誤差變大時,網(wǎng)絡(luò)會自動將F(x)逼近0。
根據(jù)殘差學(xué)習(xí)算法,ResNet網(wǎng)絡(luò)的殘差塊輸出為
y=F(x,W1,W2,…,Wi,…,Wn)+x
(2)
式中Wi——?dú)埐顗K中第i個卷積層權(quán)重
為了統(tǒng)一輸入和輸出的維數(shù),在維度不匹配的線性映射中,需要對輸入x做一個線性變換Ws,這時殘差網(wǎng)絡(luò)的輸出公式為
y=F(x,W1,W2,…,Wi,…,Wn)+Wsx
(3)
式中Ws——線性映射
對傳統(tǒng)的ResNet網(wǎng)絡(luò)中的殘差塊結(jié)構(gòu)進(jìn)行修改,每個殘差塊包含2個卷積層,每個卷積層使用尺寸為3×3的卷積核來增加網(wǎng)絡(luò)寬度,在兩個卷積層之間加入Dropout層,結(jié)構(gòu)如圖4所示。
當(dāng)殘差塊中包含2個卷積層時,其學(xué)習(xí)公式為
F(x)=W2σ(W1x)
(4)
式中σ——ReLu映射
式(4)為了簡潔省略了偏置。
圖4 改進(jìn)殘差網(wǎng)絡(luò)的殘差塊結(jié)構(gòu)Fig.4 Residual block of improved residual network
將預(yù)處理中得到的害蟲邊緣圖像輸入到構(gòu)建的改進(jìn)殘差網(wǎng)絡(luò)中。利用貝葉斯原理對殘差神經(jīng)網(wǎng)絡(luò)的權(quán)重參數(shù)進(jìn)行初始化,在這里假定該網(wǎng)絡(luò)的參數(shù)W(權(quán)值和閾值等)符合高斯分布。根據(jù)網(wǎng)絡(luò)的輸出結(jié)構(gòu),得到網(wǎng)絡(luò)的總誤差函數(shù)。
將預(yù)處理中得到的害蟲圖像的訓(xùn)練集記為D={xk,yk},k=1,2,…,K,K為害蟲圖像樣本總數(shù)。α和β是改進(jìn)殘差網(wǎng)絡(luò)的兩個超參數(shù),在訓(xùn)練之前將α和β進(jìn)行初始化,通過迭代優(yōu)化超參數(shù),提高網(wǎng)絡(luò)學(xué)習(xí)的性能和效果。網(wǎng)絡(luò)結(jié)構(gòu)記為A,在A和W確定的情況下可以根據(jù)輸入向量x得到網(wǎng)絡(luò)的輸出y,將訓(xùn)練集的誤差函數(shù)定義為
(5)
M(W)=αEW(W|A)+βED(D|W,A)
(6)
在給定觀察數(shù)據(jù)后,通過已有的參數(shù)可以得到網(wǎng)絡(luò)參數(shù)的后驗(yàn)概率為
(7)
式中P(D|α,β,M)——超參數(shù)α和β的顯著度
ZW、ZD——?dú)w一化系數(shù)
m——該網(wǎng)絡(luò)中所有權(quán)重參數(shù)的個數(shù)
歸一化系數(shù)和W無關(guān),因此網(wǎng)絡(luò)參數(shù)W的優(yōu)化可轉(zhuǎn)換為最小化網(wǎng)絡(luò)總誤差M(W)。
1.2.3基于分塊共軛算法的網(wǎng)絡(luò)優(yōu)化
分塊共軛算法(Block-cg)使用塊對角線來近似曲率矩陣,提高了Hessian矩陣的收斂性,并且對每個子塊進(jìn)行獨(dú)立的共軛梯度更新,將子問題分離開處理,降低了局部搜索的復(fù)雜性。對比梯度下降、牛頓法以及共軛梯度等經(jīng)典算法,Block-cg算法具有計算效率高、計算復(fù)雜性小等優(yōu)勢,并且具有更好的收斂性和泛化能力。
本文使用Block-cg算法優(yōu)化網(wǎng)絡(luò),更新網(wǎng)絡(luò)的權(quán)重參數(shù),減小誤差函數(shù),主要步驟如下:
(1)參數(shù)變量定義:害蟲圖像的訓(xùn)練數(shù)據(jù)集記為DT={(xi,yi)},i=1,2,…,T,改進(jìn)殘差網(wǎng)絡(luò)的輸出函數(shù)為zi=f(xi,w),損失函數(shù)定義為λ(zi,yi),其他超參數(shù)的定義如下:算法調(diào)用的最大循環(huán)次數(shù)為l,最大的共軛梯度迭代次數(shù)為Cg,停止計算共軛梯度的準(zhǔn)則為cg_stop,學(xué)習(xí)速率為η。并且定義兩個害蟲圖像數(shù)據(jù)集,隨機(jī)選取數(shù)據(jù)集Dg?DT用來計算梯度g=(g(1);g(2);…;g(B)),害蟲圖像數(shù)據(jù)集Dc?Dg,該數(shù)據(jù)集用來計算曲率向量。
(2)曲率矩陣的近似矩陣G的計算和分塊。根據(jù)隨機(jī)選取的害蟲圖像數(shù)據(jù)集Dc,通過Gauss-Newton方法計算矩陣G作為曲率矩陣的近似
(8)
式中J——網(wǎng)絡(luò)輸出對于權(quán)重參數(shù)導(dǎo)數(shù)的Jacobian矩陣
I——單位矩陣
將矩陣G分成B×B的子塊,G(b)表示矩陣G的第b個對角塊。
(4)隨機(jī)選取小批量數(shù)據(jù)集Dg來計算梯度g,以及小批量數(shù)據(jù)集Dc計算曲率向量。對每個子對角塊進(jìn)行共軛梯度迭代計算,當(dāng)滿足終止標(biāo)準(zhǔn)cg_stop或者達(dá)到最大迭代次數(shù)Cg時,終止迭代過程。每個子塊的網(wǎng)絡(luò)權(quán)重參數(shù)優(yōu)化過程可以并行進(jìn)行,具體如下
(9)
重復(fù)執(zhí)行該過程l次,求得最終的網(wǎng)絡(luò)權(quán)重參數(shù)更新值Δw。求得每個子塊的Δw←(Δw(1);Δw(2);…;Δw(B)),將所有子塊更新整合到一起,求得更新的權(quán)重參數(shù)w←w+ηΔw。
(5)定義網(wǎng)絡(luò)中有效權(quán)重參數(shù)的個數(shù)為
γ=m-2αtr(H-1)
(10)
其中
式中H——網(wǎng)絡(luò)輸出的Hessian矩陣
β定義如下
(11)
每次更新權(quán)重參數(shù)后更新α和β的值,并且使用更新后的α和β重新計算誤差函數(shù)。
(6)重復(fù)執(zhí)行上述過程。使用Block-cg算法最小化損失函數(shù),從而更新網(wǎng)絡(luò)權(quán)重參數(shù),計算有效參數(shù)的個數(shù)γ,利用更新后的權(quán)重參數(shù)更新超參數(shù)α和β,最終得到優(yōu)化后的網(wǎng)絡(luò)權(quán)重參數(shù)。
試驗(yàn)使用的9 072幅害蟲圖像全部來源于所建立的樣本庫。首先使用Python腳本語句對原始圖像進(jìn)行隨機(jī)旋轉(zhuǎn)角度、隨機(jī)縮放原圖、鏡像等操作擴(kuò)充樣本數(shù)量至原來的3倍,然后分別從各類別中隨機(jī)抽取60%圖像樣本構(gòu)建訓(xùn)練集,20%作為驗(yàn)證集,剩余20%作為測試集。測試樣本具體信息及識別結(jié)果如表 1所示。試驗(yàn)中,改進(jìn)殘差網(wǎng)絡(luò)的深度為28層,超參數(shù)α和β分別初始化為0和1,學(xué)習(xí)速率η為0.001;使用Block-cg算法訓(xùn)練網(wǎng)絡(luò)時,每個批次訓(xùn)練64幅圖像,最大迭代次數(shù)為2 000次。
為了驗(yàn)證本文方法的有效性,在本文數(shù)據(jù)集上,分別采用本文方法、貝葉斯神經(jīng)網(wǎng)絡(luò)方法[27](Bayesian neural network)、卷積神經(jīng)網(wǎng)絡(luò)方法[28](Convolutional neural network)、支持向量機(jī)[2](Support vector machine,SVM)進(jìn)行害蟲識別準(zhǔn)確率比較。試驗(yàn)選取害蟲圖像的顏色直方圖構(gòu)造SVM的訓(xùn)練特征樣本,核函數(shù)為高斯核函數(shù)。表 1給出了不同方法下的 38 種害蟲識別準(zhǔn)確率。由表 1可知,支持向量機(jī)方法下的害蟲識別準(zhǔn)確率較低;而卷積神經(jīng)網(wǎng)絡(luò)在小數(shù)據(jù)集上容易發(fā)生過擬合現(xiàn)象,因此在該方法下的害蟲識別準(zhǔn)確率也不高;文獻(xiàn)[27]所提的貝葉斯神經(jīng)網(wǎng)絡(luò)方法與本文方法較為接近,但仍然低于本文方法的平均識別準(zhǔn)確率。與上述3種方法相比,本文方法的平均識別準(zhǔn)確率平均提高了9.6個百分點(diǎn)。
為了進(jìn)一步驗(yàn)證本文所提方法的魯棒性,針對上述4種害蟲識別方法,結(jié)合每個類別查準(zhǔn)率pi,再計算其查全率ri以及查全率與查準(zhǔn)率的加權(quán)平均分?jǐn)?shù)Fi,最后取平均值Fa作為模型評價標(biāo)準(zhǔn),對比結(jié)果如表2所示。
表1 38種害蟲測試樣本細(xì)節(jié)和不同方法下的害蟲識別準(zhǔn)確率Tab.1 Details of 38 analyzed insect species and pest recognition rate by different methods
續(xù)表1
(12)
(13)
式中nc——樣本類別總數(shù),取38
i——類別標(biāo)簽(1~38)
nii——類別i預(yù)測為第i類的樣本數(shù)
nji——類別j預(yù)測為第i類的樣本數(shù)
nij——類別i預(yù)測為第j類的樣本數(shù)
表2 不同害蟲識別方法的魯棒性對比結(jié)果Tab.2 Robustness comparison of different pest identification methods %
由表2可知,本文所提害蟲識別方法在平均查全率和加權(quán)平均分?jǐn)?shù)這兩項(xiàng)指標(biāo)上均獲得了更好的表現(xiàn)。與其他3種害蟲識別方法相比,本文方法加權(quán)平均分?jǐn)?shù)分別提高16.3、10.8、4.5個百分點(diǎn),具有更強(qiáng)的魯棒性。
圖5 北方園林害蟲識別APP系統(tǒng)圖Fig.5 Diagram of northern garden pest identification APP
基于本文方法,設(shè)計了對38種北方園林害蟲識別的手機(jī)APP系統(tǒng),如圖5所示。該APP能夠部分代替植保專家對園林害蟲進(jìn)行有效地自動化識別,以便及時做好防治工作。首先,利用智能手機(jī)在自然光環(huán)境下直接拍攝園林中的害蟲生態(tài)圖像。通過手機(jī)APP將待識別害蟲圖像讀入自動識別系統(tǒng),最后使用本文算法對測試樣本進(jìn)行自動識別,給出識別結(jié)果與對應(yīng)的害蟲防治方法。
針對現(xiàn)有害蟲圖像識別方法存在的問題,提出了一種基于改進(jìn)殘差網(wǎng)絡(luò)的害蟲圖像識別方法。該方法使用富邊緣檢測算法對害蟲圖像進(jìn)行邊緣檢測,將得到的害蟲圖像集用來訓(xùn)練殘差神經(jīng)網(wǎng)絡(luò),并通過Block-cg算法優(yōu)化網(wǎng)絡(luò)權(quán)重,進(jìn)而更新超參數(shù)的值,直至得到理想的害蟲分類準(zhǔn)確率。試驗(yàn)結(jié)果表明,與其他3種傳統(tǒng)害蟲識別方法相比,本文方法的平均識別準(zhǔn)確率平均提高9.6個百分點(diǎn),加權(quán)平均分?jǐn)?shù)分別提高16.3、10.8、4.5個百分點(diǎn),具有較高的識別準(zhǔn)確率及較強(qiáng)的魯棒性。