佘 顥, 吳 伶, 單魯泉
(湖南農(nóng)業(yè)大學(xué) 信息與智能科學(xué)技術(shù)學(xué)院 湖南 長(zhǎng)沙 410128)
水稻是人類主要糧食作物之一,世界上約一半的人口都是以大米為食。蟲害問題嚴(yán)重影響到水稻產(chǎn)量和質(zhì)量,準(zhǔn)確識(shí)別害蟲種類可以有效揭示蟲害災(zāi)情的規(guī)律,給科學(xué)防控措施提供基礎(chǔ)數(shù)據(jù)。如今病蟲害的檢測(cè)基本依靠人工識(shí)別,但是蟲群數(shù)量龐大、種類多,僅僅依靠少量的植保專家并不能有效及時(shí)實(shí)現(xiàn)對(duì)蟲害的識(shí)別,而害蟲通常繁殖周期短、發(fā)展迅速,有可能延誤最佳的防治時(shí)間,導(dǎo)致一系列經(jīng)濟(jì)損失[1]。
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,圖像識(shí)別的精度在不斷提升,將圖像識(shí)別技術(shù)應(yīng)用到病蟲害的檢測(cè)中,成為了最新的發(fā)展趨勢(shì)[2]。文獻(xiàn)[3]將圖像識(shí)別中傳統(tǒng)的支持向量機(jī)(support vector machine, SVM)分類器應(yīng)用于糧儲(chǔ)害蟲的檢測(cè)。魏楊等[4]使用基于候選區(qū)域提取的快速區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(fast region-based convolutional network method, fast R-CNN)模型對(duì)農(nóng)業(yè)害蟲進(jìn)行識(shí)別,實(shí)現(xiàn)了在復(fù)雜背景下進(jìn)行農(nóng)業(yè)害蟲識(shí)別,但是識(shí)別精度和速度都有待提高。Gassoumi等[5]使用模糊神經(jīng)網(wǎng)絡(luò)方法對(duì)12種危害棉花作物生長(zhǎng)的常見害蟲進(jìn)行分類識(shí)別,實(shí)現(xiàn)了對(duì)害蟲的高精度識(shí)別,其識(shí)別速度仍不能滿足大范圍的害蟲識(shí)別。周清松等[6]采用圖像識(shí)別中的邊緣檢測(cè)方法對(duì)糧蟲進(jìn)行目標(biāo)檢測(cè),但該方法對(duì)小目標(biāo)的識(shí)別精度較低。
以上研究表明,目前已有的目標(biāo)檢測(cè)算法在識(shí)別精度或檢測(cè)速度上難以滿足農(nóng)田環(huán)境下農(nóng)作物病蟲識(shí)別的廣泛性、精準(zhǔn)性和時(shí)效性等需求。Huang等[7]指出單步多框檢測(cè)(single shot multibox detector,SSD)在主流的檢測(cè)算法中,檢測(cè)速度最快。裴偉等[8]指出SSD在檢測(cè)精度與檢測(cè)速度中有很好的平衡性。對(duì) SSD算法進(jìn)行一些改進(jìn)是一種較為便捷的方法。
因此,本文使用特征金字塔網(wǎng)絡(luò)(feature pyramid networks,F(xiàn)PN)模型[9]對(duì)SSD算法進(jìn)行了改進(jìn)。該模型將最頂層的特征圖與前層特征圖進(jìn)行多尺度特征融合,使模型獲得更豐富的淺層語(yǔ)義信息,提升小目標(biāo)的識(shí)別率,將批量歸一化改為組歸一化,減少誤差,通過(guò)改進(jìn)的ReLU激活函數(shù)提高對(duì)模型的擬合度,獲取更快的檢測(cè)速度。
SSD算法是一種基于單個(gè)神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,采用VGG16為基礎(chǔ)模型,在此基礎(chǔ)上添加輔助卷積、池化層,從不同層獲取特征并進(jìn)行預(yù)測(cè),其中語(yǔ)義會(huì)隨著層級(jí)的加深而更復(fù)雜。該算法采用的是faster R-CNN中候選框的方法,在特征提取中設(shè)置長(zhǎng)寬比不同的4個(gè)先驗(yàn)框,相較于faster R-CNN的候選區(qū)域,SSD的先驗(yàn)框數(shù)量更少,其目標(biāo)檢測(cè)速度更快。但SSD算法識(shí)別率較低,并且對(duì)小目標(biāo)的識(shí)別率不高,時(shí)常會(huì)出現(xiàn)對(duì)同一物體反復(fù)檢測(cè)的現(xiàn)象。
本文在歸一化方法、激活函數(shù)、SSD網(wǎng)絡(luò)模型三個(gè)方面對(duì)SSD神經(jīng)網(wǎng)絡(luò)進(jìn)行了研究和改進(jìn),得到一種新的水稻害蟲識(shí)別方法。
在機(jī)器學(xué)習(xí)等領(lǐng)域中,需要將訓(xùn)練數(shù)據(jù)分批輸入原始模型,然后不斷對(duì)模型進(jìn)行調(diào)整得到最終的結(jié)果。在這個(gè)過(guò)程中,每次輸入的一批數(shù)據(jù)規(guī)模被稱為批量規(guī)模(batchsize)。在水稻害蟲識(shí)別的應(yīng)用中,輸入圖像數(shù)據(jù)很大,選用較大批量規(guī)模時(shí)會(huì)對(duì)內(nèi)存或顯存有較高要求,使得應(yīng)用難以在合理的成本下進(jìn)行推廣。因此,只能使用較小的批量規(guī)模實(shí)現(xiàn)模型訓(xùn)練。
傳統(tǒng)的SSD模型中采用的批量歸一化(batch normalization,BN)方法。該方法對(duì)較小的批量實(shí)行歸一化時(shí),由于數(shù)據(jù)量較少,通過(guò)批量歸一化產(chǎn)生的估算數(shù)據(jù)會(huì)與實(shí)際情況產(chǎn)生較大的誤差,并且隨著批量的變小,其誤差會(huì)迅速增大。為了達(dá)到減少訓(xùn)練誤差的目的,本文采用組歸一化(group normalization,GN)實(shí)現(xiàn)模型的訓(xùn)練。在模型訓(xùn)練時(shí),數(shù)據(jù)的維度通常是[N,C,H,W]的格式,其中:N是批量規(guī)模;C是對(duì)應(yīng)的通道數(shù);H是特征圖的高;W是特征圖的寬[10]。使用BN進(jìn)行歸一化,將每個(gè)通道的數(shù)據(jù)單獨(dú)拿出來(lái)進(jìn)行處理。使用GN進(jìn)行歸一化,則是將信號(hào)通道分成多個(gè)組,分別將各個(gè)組的數(shù)據(jù)進(jìn)行歸一化,最后合并[11]。GN的數(shù)學(xué)表達(dá)式為
(1)
(2)
其中:G表示將每個(gè)特征圖的通道分為G組;μ、σ分別表示為均值和標(biāo)準(zhǔn)差;ε是控制梯度下降速度的超參數(shù);R表示特征圖的數(shù)據(jù)維度。從公式可以看出使用GN進(jìn)行歸一化時(shí),是在(H,W)軸上對(duì)屬于同一個(gè)C/G通道的特征值進(jìn)行均值和方差的計(jì)算,而不是沿著通道計(jì)算每一個(gè)批量的均值、方差??梢姎w一化的結(jié)果與批量規(guī)模無(wú)關(guān),所以設(shè)置較小的批量規(guī)模時(shí)并不會(huì)對(duì)訓(xùn)練結(jié)果造成影響,而且在批量規(guī)模大幅變化時(shí),精度依然穩(wěn)定。
SSD函數(shù)模型采用線性整流函數(shù)(rectified linear unit,ReLU)作為激活函數(shù),增加SSD模型的表達(dá)能力,使其可以在非線性網(wǎng)絡(luò)模型中運(yùn)行。ReLU函數(shù)在x≤0時(shí)梯度為0。因此,當(dāng)設(shè)置了較大的學(xué)習(xí)率時(shí),會(huì)導(dǎo)致負(fù)的梯度在這個(gè)ReLU上被置零,則可能出現(xiàn)這個(gè)神經(jīng)元不能被任何數(shù)據(jù)激活的情況,這種現(xiàn)象被稱為神經(jīng)元死亡[12]。
為了避免神經(jīng)元死亡現(xiàn)象的發(fā)生,不少學(xué)者使用參數(shù)修正線性單元(parametric rectified linear unit,PReLU)函數(shù),PReLU的數(shù)學(xué)表達(dá)式為
(3)
公式(3)中的α是一個(gè)可以通過(guò)學(xué)習(xí)獲得的參數(shù)。PReLU在x≤0時(shí)值不為0,避免了神經(jīng)元壞死的現(xiàn)象。該函數(shù)不僅繼承了ReLU激活函數(shù)更高效地梯度下降以及反向傳播,同時(shí)還擁有高活躍度的分散性,使得神經(jīng)網(wǎng)絡(luò)整體計(jì)算成本降低,同時(shí)還避免了使用ReLU函數(shù)導(dǎo)致的神經(jīng)元壞死現(xiàn)象,并且在訓(xùn)練時(shí)擁有更快的收斂速度[13]。
本文結(jié)合ReLU和PReLU的特點(diǎn),提出了一種改進(jìn)的激活函數(shù)(TReLU)。數(shù)學(xué)表達(dá)式為
(4)
TReLU函數(shù)在x≤0時(shí),不為0,因此可以避免在x<0時(shí)出現(xiàn)神經(jīng)元壞死現(xiàn)象,降低了計(jì)算網(wǎng)絡(luò)參數(shù)所需的迭代次數(shù),提高了目標(biāo)檢測(cè)的訓(xùn)練速度。同時(shí),TReLU的函數(shù)圖像在x≤0時(shí)是一個(gè)非線性曲線,相對(duì)于PReLU的線性曲線,非線性函數(shù)對(duì)輸入變化或噪聲擁有更棒的飽和性[14],能帶來(lái)更好的泛化性。隨著訓(xùn)練次數(shù)的不斷增多,使用PReLU或ReLU激活函數(shù)的神經(jīng)網(wǎng)絡(luò)容易出現(xiàn)損失值不收斂的現(xiàn)象。因此TReLU在x>0的部分設(shè)置了一個(gè)閾值b。當(dāng)?shù)竭_(dá)該閾值時(shí),模型不會(huì)進(jìn)行過(guò)多的調(diào)整,避免出現(xiàn)過(guò)擬合的現(xiàn)象。
總的來(lái)說(shuō),使用TReLU作為激活函數(shù),能使模型更快收斂,減少訓(xùn)練時(shí)間。同時(shí),使用TReLU也使得模型的泛化能力更強(qiáng),不容易出現(xiàn)過(guò)擬合現(xiàn)象。TReLU是大規(guī)模部署和推廣水稻害蟲識(shí)別方法的有力工具。
傳統(tǒng)的SSD算法采用的多尺度預(yù)測(cè),雖然提升了識(shí)別速度,但沒有將不同特征層的特征信息區(qū)分開來(lái),不能充分結(jié)合上下文語(yǔ)義進(jìn)行預(yù)測(cè)。而FPN模型不僅能將淺層細(xì)節(jié)與高層語(yǔ)義結(jié)合起來(lái)提高圖像的識(shí)別率,而且補(bǔ)充的細(xì)節(jié)信息在一定程度上也能夠提高模型的識(shí)別精準(zhǔn)度,同時(shí)FPN對(duì)小目標(biāo)會(huì)有更好的特征映射分辨率[15]。因此,本文在FPN模型的基礎(chǔ)上對(duì)SSD網(wǎng)絡(luò)模型進(jìn)行了改進(jìn)。
傳統(tǒng)的FPN模型占用內(nèi)存大且需要大量的運(yùn)算,嚴(yán)重影響了計(jì)算機(jī)運(yùn)算速度。本文采用SSD+FPN相結(jié)合,對(duì)網(wǎng)絡(luò)模型進(jìn)行了一定的修改:首先,將網(wǎng)絡(luò)模型中的兩個(gè)全連接層分別改為卷積核大小3×3和1×1的卷積層;然后,將最后一層池化層的卷積核大小改為3×3,并將步長(zhǎng)設(shè)置為1;接著,添加了4個(gè)卷積層,同時(shí)把卷積層中Conv6_2的步長(zhǎng)改為1;最后,采用TReLU作為卷積后的激活函數(shù)。改進(jìn)的SSD模型示意圖如圖1所示。
圖1 改進(jìn)SSD深度學(xué)習(xí)模型結(jié)構(gòu)Figure 1 Improved SSD deep learning model structure
使用改進(jìn)的網(wǎng)絡(luò)模型進(jìn)行預(yù)測(cè)的處理過(guò)程是:① 卷積層中的Conv9_2直接作為預(yù)測(cè)層中1×1的特征圖;② 依次對(duì)Conv9_2、Conv8_2、Conv7_2、Conv6_2、FC7使用1×1卷積降低特征圖通道數(shù),再使用雙線性插值方法進(jìn)行上采樣處理,通過(guò)融合與組歸一化得到預(yù)測(cè)層中3×3、5×5、10×10、19×19的特征圖;③ 對(duì)FC7、Conv6_2采用雙線性插值進(jìn)行上采樣操作,并與Conv4_3融合后進(jìn)行組歸一化,得到預(yù)測(cè)層中38×38的特征圖;④ 使用前述步驟得到的6個(gè)特征圖構(gòu)建出一個(gè)特征金字塔,通過(guò)這個(gè)特征金字塔進(jìn)行預(yù)測(cè)操作。
本次實(shí)驗(yàn)使用在Ubuntu16.04 64位操作系統(tǒng)下,使用Tensorflow框架構(gòu)建改進(jìn)的SSD神經(jīng)網(wǎng)絡(luò),對(duì)測(cè)試數(shù)據(jù)進(jìn)行驗(yàn)證。進(jìn)行實(shí)驗(yàn)的計(jì)算機(jī)物理配置為:CPU是Intel Core i7 7700HQ @2.8 GHz;內(nèi)存為16 GB;GPU是NVIDIA GTX1080Ti。
數(shù)據(jù)圖像的采集來(lái)自于湖南農(nóng)業(yè)大學(xué)科研大田實(shí)驗(yàn)基地,采用人工方式,通過(guò)Sonya57相機(jī)在自然環(huán)境進(jìn)行田間拍照,以及捕捉相關(guān)樣本進(jìn)行實(shí)地拍取,并且通過(guò)網(wǎng)絡(luò)爬蟲技術(shù)在互聯(lián)網(wǎng)上獲取更多的相關(guān)害蟲圖片。深度學(xué)習(xí)需要大量的數(shù)據(jù)集作為依托,為了在后期使模型更好地訓(xùn)練和區(qū)分,防止訓(xùn)練過(guò)程中因?yàn)閿?shù)據(jù)量過(guò)少而造成的過(guò)擬合現(xiàn)象,采用數(shù)據(jù)增強(qiáng)的方式擴(kuò)充了數(shù)據(jù)集。
本文對(duì)采集到的數(shù)據(jù)進(jìn)行增加噪音、旋轉(zhuǎn)剪切、改變色差、扭曲特征等操作,將實(shí)驗(yàn)數(shù)據(jù)集擴(kuò)充至11 568幅圖像。
整個(gè)實(shí)驗(yàn)過(guò)程分為三步:數(shù)據(jù)集劃分、模型訓(xùn)練和模型測(cè)試。
首先,對(duì)數(shù)據(jù)集進(jìn)行劃分。使用交叉驗(yàn)證方法,將數(shù)據(jù)集分成了訓(xùn)練集和測(cè)試集。其中,訓(xùn)練集包含約8 000幅圖片,測(cè)試集包含3 568幅圖片。我們使用訓(xùn)練集訓(xùn)練網(wǎng)絡(luò)模型,然后使用測(cè)試集進(jìn)行實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比。
然后,使用訓(xùn)練集對(duì)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。將激活函數(shù)學(xué)習(xí)率設(shè)置為1e-4,正則化權(quán)值衰減系數(shù)設(shè)置為5e-4,學(xué)習(xí)率衰減因子設(shè)置為0.97,當(dāng)訓(xùn)練完成時(shí)得到我們需要的模型。
最后,將測(cè)試集放入得到的模型中進(jìn)行測(cè)試實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行測(cè)試分析。在對(duì)結(jié)果進(jìn)行分析時(shí),使用均值平均準(zhǔn)確度(mean average precision,mAP)和平均準(zhǔn)確度(average precision,AP)作為目標(biāo)檢測(cè)評(píng)估參數(shù)。AP是單個(gè)類別下的準(zhǔn)確率,mAP是多個(gè)類別下的平均準(zhǔn)確率。在單類害蟲場(chǎng)景中,我們關(guān)注AP;在多類別害蟲的復(fù)雜場(chǎng)景中,我們更加關(guān)注mAP。AP和mAP的計(jì)算公式為
AP=∑precision/N,mAP=∑AP/M,
其中:precison表示在被判斷為準(zhǔn)確的圖片中,真正判斷準(zhǔn)確的圖像比例;N表示該類別圖片總數(shù);M表示類別總數(shù)。
使用訓(xùn)練得到的模型對(duì)測(cè)試集中的圖片進(jìn)行測(cè)試。部分識(shí)別結(jié)果如圖2所示。為了驗(yàn)證本文對(duì)SSD神經(jīng)網(wǎng)絡(luò)模型進(jìn)行改進(jìn)后得到的效果,我們還使用傳統(tǒng)的SSD對(duì)測(cè)試集進(jìn)行了實(shí)驗(yàn),得到了如圖2(b)所示的結(jié)果。除此之外,為了使對(duì)比實(shí)驗(yàn)更具有說(shuō)服力,使用常見的faster R-CNN方法對(duì)測(cè)試集進(jìn)行了實(shí)驗(yàn),如圖2(a)。
圖2 水稻害蟲目標(biāo)檢測(cè)實(shí)驗(yàn)結(jié)果Figure 2 Experimental results of target detection of rice pests
從圖中可以看出初步的結(jié)果,本文所采用的模型算法能更好地識(shí)別小目標(biāo)。當(dāng)圖片中的害蟲數(shù)目較少時(shí),害蟲被檢測(cè)到的準(zhǔn)確率較高;當(dāng)害蟲數(shù)目較多時(shí),較大的害蟲能夠被檢測(cè)出來(lái),較小的害蟲被檢測(cè)出來(lái)的準(zhǔn)確率稍微低一些。
根據(jù)上述實(shí)驗(yàn)步驟與數(shù)據(jù),得到SSD、faster R-CNN、改進(jìn)SSD三種算法在5類常見稻田害蟲的AP值,如圖3所示。
圖3 水稻害蟲的檢測(cè)的AP值對(duì)比Figure 3 Comparison of AP value of rice pests
在圖3中,主要通過(guò)AP值去衡量算法的準(zhǔn)確性??梢钥闯觯倪M(jìn)的SSD算法對(duì)大螟、稻飛虱、稻蝗、金剛鉆四種害蟲的AP值明顯高于SSD算法、faster R-CNN算法,對(duì)二化螟的AP值也不低于其他算法。從整體上看,改進(jìn)SSD算法的AP值為75%~88%,SSD算法的AP值為73%~85%,faster R-CNN算法的AP值為65%~83%。改進(jìn)的SSD算法在小目標(biāo)稻飛虱的識(shí)別中,AP值比原SSD算法提高約8%。因此,對(duì)這五類常見害蟲的識(shí)別上本文的改進(jìn)SSD算法完全優(yōu)于其他兩種算法。
表1主要是通過(guò)每秒傳輸幀數(shù)(frames per second,FPS)與mAP去綜合衡量算法[16]。FPS指標(biāo)越高,就意味著檢測(cè)速度越快;mAP值越高就意味著目標(biāo)檢測(cè)準(zhǔn)確度越高。從表1可以看出,算法經(jīng)過(guò)訓(xùn)練后,改進(jìn)的SSD模型mAP達(dá)到了79.3%,是所有參與測(cè)試的算法中表現(xiàn)最好的,且耗費(fèi)訓(xùn)練時(shí)間也是最少的。與常用的faster R-CNN算法、SSD算法相比,改進(jìn)的SSD算法的mAP值分別提高了6.6%、3.5%,F(xiàn)PS最大提升了8倍。改進(jìn)的SSD算法在提升FPS值的同時(shí),mAP的值也有一定的提升,在害蟲識(shí)別上優(yōu)于主流算法。
表1 不同網(wǎng)絡(luò)結(jié)構(gòu)下的水稻害蟲識(shí)別結(jié)果Table 1 Recognition results of rice pests under different network structures
本文提出的基于SSD網(wǎng)絡(luò)模型的水稻害蟲識(shí)別方法大幅度提高了害蟲識(shí)別的檢測(cè)速度,并在一定程度上提高了檢測(cè)的精度,具備更好的性能。通過(guò)對(duì)水稻害蟲檢驗(yàn)結(jié)果進(jìn)行分析,可得到以下結(jié)論。
1) 從對(duì)小目標(biāo)檢測(cè)的結(jié)果來(lái)看,將淺層細(xì)節(jié)與高層語(yǔ)義相結(jié)合,能大幅度提升對(duì)小目標(biāo)識(shí)別的精確度,與原有的SSD網(wǎng)絡(luò)模型相比,在單個(gè)種類上AP值的提升最高約為8%;
2) 改進(jìn)后的SSD算法相對(duì)于faster R-CNN、傳統(tǒng)SSD算法等在檢測(cè)準(zhǔn)確度上有所提升,測(cè)試集的實(shí)驗(yàn)結(jié)果顯示,mAP值分別提高6.6%、3.5%;
3) 從目標(biāo)檢測(cè)的速度上看,改進(jìn)后的SSD算法大幅度提高了檢測(cè)速度,其每秒傳輸幀數(shù)相比于faster R-CNN增加了26.9幀/秒,相比于原SSD算法增加了9.1幀/秒。
改進(jìn)后的SSD算法與傳統(tǒng)的蟲害識(shí)別算法相比更高效、更精確。從實(shí)驗(yàn)結(jié)果得出,該模型檢測(cè)大目標(biāo)效果較好,但是對(duì)小目標(biāo)的識(shí)別效果還有較大提升空間,且訓(xùn)練網(wǎng)絡(luò)并不是非常完善,精確度還有待提高,性能仍需改進(jìn),這是后期需要研究與改進(jìn)的地方。