李兆旭,蔣紅海,楊肖,曹志鵬
(650504 云南省 昆明市 昆明理工大學(xué) 機(jī)電工程學(xué)院)
雜草是具有持續(xù)危害性的農(nóng)業(yè)有害生物,只要有種植就一定會(huì)有雜草侵染和草害,對(duì)糧食及其他農(nóng)作物產(chǎn)量和質(zhì)量造成巨大的影響[1],因此除草是農(nóng)業(yè)生產(chǎn)中不可避免的重要環(huán)節(jié)。目前主要的除草方式有化學(xué)除草、機(jī)械除草、生物除草、生態(tài)除草等[2-3]。科學(xué)技術(shù)的發(fā)展為農(nóng)業(yè)的改革與革新提供了新的動(dòng)力源泉,通過(guò)統(tǒng)籌生產(chǎn)資源、提高生產(chǎn)效率使得農(nóng)業(yè)朝著機(jī)械化、智能化、綠色可持續(xù)方向發(fā)展[4-5]。自動(dòng)化除草也在農(nóng)業(yè)生產(chǎn)中推廣,雜草識(shí)別則是實(shí)現(xiàn)精準(zhǔn)高效除草的關(guān)鍵技術(shù)。
早期的雜草識(shí)別算法主要運(yùn)用圖像處理技術(shù),根據(jù)雜草特征進(jìn)行目標(biāo)識(shí)別,方法有顏色識(shí)別、光譜分析、紋理特征識(shí)別和外形參數(shù)識(shí)別等[6]。隨著深度學(xué)習(xí)的興起,卷積神經(jīng)網(wǎng)絡(luò)在雜草識(shí)別中逐漸得到廣泛的應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)用多次線(xiàn)性和非線(xiàn)性變換對(duì)輸入圖像進(jìn)行特征提取,并對(duì)不同層次特征進(jìn)行組合。這樣,在很多場(chǎng)合不需要對(duì)單獨(dú)特征進(jìn)行選擇變換,只需輸入原始圖片進(jìn)行訓(xùn)練,模型會(huì)自動(dòng)篩選出適合分類(lèi)的特征[7]。鄧向武[8]等使用AlexNet、VGG16 和GoogLeNet 對(duì)6 種稻田雜草進(jìn)行檢測(cè),分別得到96.40%、97.48%和91.01%的識(shí)別率;孟慶寬[9]等用深度可分離卷積結(jié)合壓縮與激勵(lì)網(wǎng)絡(luò)構(gòu)成特征提取單元,密集連接后代替SSD 中的VGG16 作為主網(wǎng)絡(luò),檢測(cè)玉米及伴生雜草時(shí)比原算法精度提高2.66%;Teimouri[10]等使用Google inception-v3 模型對(duì)不同生長(zhǎng)階段的雜草進(jìn)行評(píng)估,獲得了87%的mAP。
上述深度學(xué)習(xí)方法在雜草識(shí)別中都取得了不錯(cuò)的效果。為了提高檢測(cè)的實(shí)時(shí)性并降低算法硬件需求,本文使用輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)MobileNet-SSD 進(jìn)行雜草-作物檢測(cè),并針對(duì)實(shí)驗(yàn)中數(shù)據(jù)集大目標(biāo)較多的特點(diǎn)調(diào)整網(wǎng)絡(luò)特征層,將檢測(cè)結(jié)果與原算法對(duì)比。比較各算法對(duì)不同尺寸目標(biāo)的檢測(cè)效果。
目標(biāo)檢測(cè)算法大致分為兩大類(lèi):(1)Twostage(二階段)算法:將檢測(cè)分為產(chǎn)生候選區(qū)域和對(duì)區(qū)域進(jìn)行分類(lèi)兩個(gè)階段,以R-CNN 系列為代表;(2)One-stage(一階段)算法:直接預(yù)測(cè)物體類(lèi)別和位置坐標(biāo),以目前較為主流的YOLO 系列和SSD 為代表。Two-stage 算法由于存在RPN 網(wǎng)絡(luò)結(jié)構(gòu)使得其檢測(cè)精度較高,但較大的計(jì)算量也帶來(lái)了檢測(cè)速率不足的問(wèn)題[11-12]。為了使目標(biāo)檢測(cè)算法能在移動(dòng)端使用,Howard 和Zhu 等人在2017 年提出了MobileNet 模型[13]。
MobileNet 的創(chuàng)新點(diǎn)是引入了深度可分離卷積,即用深度卷積和1×1 卷積(逐點(diǎn)卷積)替代標(biāo)準(zhǔn)卷積。深度可分離卷積將其分為2 層,一層用于過(guò)濾,另一層用于合并。這種因式分解具有大大減少計(jì)算量和模型規(guī)模的效果。標(biāo)準(zhǔn)的卷積層將輸入一個(gè)DF×DF×M的特征圖F 并產(chǎn)生一個(gè)DF×DF×N的特征圖G,當(dāng)特征圖通過(guò)DK×DK×M×N的卷積核時(shí),整個(gè)標(biāo)準(zhǔn)卷積的計(jì)算量為DK2×M×N×DF2。
深度可分離卷積由深度卷積和點(diǎn)向卷積2 層組成。使用深度卷積對(duì)每個(gè)輸入通道應(yīng)用單個(gè)濾波器,計(jì)算量為M×DK2×DF2,然后還需要一個(gè)1×1 的卷積層計(jì)算深度卷積輸出的線(xiàn)性組合,計(jì)算量為N×M×DF2。因此總的計(jì)算量為兩步之和,即M×DK2×DF2+N×M×DF2。由此,可以得到深度可分離卷積與標(biāo)準(zhǔn)卷積的計(jì)算量之比:

MobileNet 使用3 × 3 深度可分離卷積,它的計(jì)算量通常在標(biāo)準(zhǔn)卷積的1/9~1/8,只是精度略有降低。普通卷積與深度可分離卷積結(jié)構(gòu)如圖1 所示。

圖1 普通卷積與深度可分離卷積Fig.1 Ordinary convolution and depth separable convolution
1.2.1 SSD 模型
SSD 模型是一種one-stage 目標(biāo)檢測(cè)模型,其主要思路是利用CNN 提取特征后,均勻地在圖片的不同位置進(jìn)行密集抽樣,抽樣時(shí)可以采用不同尺度和長(zhǎng)寬比,物體分類(lèi)與預(yù)測(cè)框的回歸同時(shí)進(jìn)行[14]。SSD 通過(guò)提取6 個(gè)特征層(稱(chēng)之為有效特征層)來(lái)對(duì)目標(biāo)進(jìn)行處理,尺寸分別為38×38、19×19、10×10、5×5、3×3、1×1。經(jīng)過(guò)數(shù)次卷積操作之后將圖片分為以上6 個(gè)尺度的網(wǎng)格,以每個(gè)網(wǎng)格為中心生成數(shù)個(gè)先驗(yàn)框,這樣就有6 種尺寸的先驗(yàn)框來(lái)對(duì)不同尺度大小的豆角苗或雜草目標(biāo)進(jìn)行預(yù)測(cè)。預(yù)測(cè)框是在先驗(yàn)框的基礎(chǔ)上進(jìn)行微調(diào),想要獲得最終的預(yù)測(cè)結(jié)果,還要對(duì)每一個(gè)預(yù)測(cè)框進(jìn)行得分排序與非極大值抑制篩選。
1.2.2 MobileNet-SSD 模型及特征層調(diào)整
標(biāo)準(zhǔn)的SSD 模型的主干網(wǎng)絡(luò)采用VGG16,由于網(wǎng)絡(luò)最后有全連接層的存在,使得網(wǎng)絡(luò)的參數(shù)較多。MobileNet-SSD 模型則是將主干網(wǎng)絡(luò)改為MobileNet 網(wǎng)絡(luò)。用平均池化來(lái)取代全連接層,使得參數(shù)量大大減小[15]。同時(shí),特征層處理與SSD類(lèi)似,提取與以上6 個(gè)尺寸相同的卷積層進(jìn)行特性處理。由于38×38 這一層在網(wǎng)絡(luò)結(jié)構(gòu)中靠前,經(jīng)過(guò)的卷積次數(shù)較少,提取特征較淺,常用的MobileNet-SSD 會(huì)舍去這一層,改為使用倒數(shù)第2個(gè)卷積層(尺寸為2×2),這樣最終使用的6 個(gè)有效特征層分別為conv11、conv13、conv14_2、conv15_2、conv16_3、conv17_2。然而,在本實(shí)驗(yàn)中有不少圖片雜草或豆角苗尺寸較大,占到整張圖片的1/3 甚至更多,標(biāo)準(zhǔn)的MobileNet-SSD 模型對(duì)這些大尺寸目標(biāo)檢測(cè)效果不盡人意,誤檢率高。為了使模型對(duì)大尺寸目標(biāo)有較好的檢測(cè)效果,本文調(diào)整了標(biāo)準(zhǔn)模型的有效特征層,采用38×38 的特征層提升模型對(duì)大尺寸目標(biāo)的檢測(cè)效果。結(jié)構(gòu)如圖2所示,與原模型對(duì)比結(jié)果如表1 所示。

表1 原模型與改動(dòng)模型特征層對(duì)比Tab.1 Comparison of feature layers between original model and modified model

圖2 MobileNet-SSD 模型結(jié)構(gòu)圖Fig.2 MobileNet-SSD model structure diagram
1.2.3 損失函數(shù)
網(wǎng)絡(luò)的損失為MultiboxLoss,總體目標(biāo)損失函數(shù)是定位損失(loc)和類(lèi)別置信度損失(conf)的加權(quán)和,函數(shù)公式為:

式中:α——調(diào)整位置誤差與置信度誤差二者所占權(quán)重比;N——匹配上的默認(rèn)框數(shù)目,當(dāng)N=0 時(shí),loss 為零;x——匹配的框是否與真實(shí)目標(biāo)相匹配,x取0 或1;l——預(yù)測(cè)框位置;g——真實(shí)值的位置信息;c——框選目標(biāo)屬于類(lèi)別p的置信度。
定位損失是一個(gè)由預(yù)測(cè)框(l)和真實(shí)框(g)產(chǎn)生的Smooth L1 loss,公式為:

式中:cx,cy——真實(shí)框的中心坐標(biāo);w,h——真實(shí)框的寬和高。
類(lèi)別置信度損失采用Softmax loss,公式為:

式中:——類(lèi)別為p時(shí)第i個(gè)先驗(yàn)框與第j個(gè)真實(shí)框是否相匹配,取0 或1。
本文使用的數(shù)據(jù)集采用手機(jī)于郊外豆角地中進(jìn)行拍攝,初始像素為1 920×1 080。由于拍攝地植株比較雜亂,拍攝圖片存在多根植株相互交錯(cuò)、遮擋的情況,而且部分圖片中雜草尺寸小,特征不明顯。考慮到MobileNet-SSD 網(wǎng)絡(luò)的輸入尺寸為300×300 像素,將過(guò)大尺寸的圖片進(jìn)行resize 之后可能會(huì)造成細(xì)小特征的丟失,所以還需對(duì)拍攝獲得的原始圖片進(jìn)行處理。為此本實(shí)驗(yàn)挑選并裁剪邊界清晰的植株獲得810×540 像素的豆角苗-雜草圖片共600 張,用labelimg 進(jìn)行標(biāo)注,獲得VOC2007格式的標(biāo)簽文件。為了防止過(guò)擬合,需要對(duì)圖像進(jìn)行數(shù)據(jù)增強(qiáng),具體的處理方法有水平翻轉(zhuǎn)、移動(dòng)、隨機(jī)縮放、像素填充等。
2.2.1 實(shí)驗(yàn)平臺(tái)
實(shí)驗(yàn)硬件采用lenovo LEGION R7 型筆記本,CPU 為銳龍R7-4800H;主 頻2.9 GHz,顯 卡為NVIDIA GeForce 1650,顯存容量4 GB。基于Tensorflow 深度學(xué)習(xí)框架進(jìn)行實(shí)驗(yàn)。
2.2.2 參數(shù)選擇
在深度學(xué)習(xí)中,將所有數(shù)據(jù)(訓(xùn)練集)學(xué)習(xí)一次稱(chēng)為一個(gè)epoch。為了使網(wǎng)絡(luò)完全收斂需要對(duì)網(wǎng)絡(luò)進(jìn)行多次訓(xùn)練。由于本實(shí)驗(yàn)對(duì)象是豆角苗和雜草,粗略選擇進(jìn)行100 個(gè)epoch 進(jìn)行實(shí)驗(yàn)。考慮到數(shù)據(jù)量和實(shí)驗(yàn)硬件的限制,實(shí)驗(yàn)將圖片分為多個(gè)批次(batch)進(jìn)行訓(xùn)練,參考已有的實(shí)驗(yàn)將Batch Size 設(shè)為8。
2.2.3 模型預(yù)訓(xùn)練
深度學(xué)習(xí)應(yīng)用于小型圖像數(shù)據(jù)集時(shí),使用預(yù)訓(xùn)練網(wǎng)絡(luò)是一種常用且高效的方法。預(yù)訓(xùn)練網(wǎng)絡(luò)(pretrained network)是一個(gè)保存好的網(wǎng)絡(luò),之前已經(jīng)在大數(shù)據(jù)集上訓(xùn)練好。當(dāng)原始數(shù)據(jù)集很大且通用性較好時(shí),預(yù)訓(xùn)練網(wǎng)絡(luò)學(xué)習(xí)到的空間層次結(jié)構(gòu)可作為圖像方面的通用模型。而卷積層提取特征的通用性主要與該層的位置有關(guān)。網(wǎng)絡(luò)中較淺的層提取的特征往往是局部的,且具有較高的通用性。而較深的層提取的特征則更加抽象。
本實(shí)驗(yàn)采用VOC 數(shù)據(jù)集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練使其收斂以得到權(quán)重,但本實(shí)驗(yàn)使用的豆角苗-雜草數(shù)據(jù)集與VOC 數(shù)據(jù)集差異很大,因此只能選擇通用性較高的網(wǎng)絡(luò)前幾層進(jìn)行特征提取。具體實(shí)現(xiàn)為,先凍結(jié)前80 層對(duì)模型進(jìn)行一個(gè)粗略的訓(xùn)練,學(xué)習(xí)率選取5×10-4對(duì)頂層進(jìn)行微調(diào),整體loss 曲線(xiàn)如圖3 所示(TL為訓(xùn)練損失,VL為驗(yàn)證損失)。然后,解凍所有層對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行訓(xùn)練使其完全收斂,這時(shí)模型已經(jīng)有一定的精確度,選擇較小的學(xué)習(xí)率(lr=0.0001)對(duì)模型進(jìn)行調(diào)整即可。

圖3 預(yù)訓(xùn)練Loss 曲線(xiàn)Fig.3 Pre-training loss curve
目標(biāo)檢測(cè)模型常用的精度衡量指標(biāo)主要有準(zhǔn)確度、召回率和平均精度(mAP),考慮到本實(shí)驗(yàn)為了使算法在移動(dòng)端也能有不錯(cuò)的效果而采用了輕量級(jí)網(wǎng)絡(luò)模型,為了突出其整體參數(shù)量小、運(yùn)算速度快的優(yōu)點(diǎn),因此除了精度之外必須把檢測(cè)速度也作為非常重要的一組評(píng)價(jià)指標(biāo),這里采用圖片的檢測(cè)時(shí)間來(lái)作為評(píng)價(jià)標(biāo)準(zhǔn)。
準(zhǔn)確率和召回率的計(jì)算公式為:

式中:P,R——準(zhǔn)確度和召回率;TP,TN,F(xiàn)P,F(xiàn)N——真正例、真負(fù)例、假正例和假負(fù)例。
參考VOC 數(shù)據(jù)集的常用指標(biāo),本文把confidence(置信度)設(shè)置為0.5,即檢測(cè)結(jié)果的IOU>0.5 時(shí)認(rèn)定樣本為真正例,反之為假正例。最后統(tǒng)計(jì)所有正例,再減去真正例即得假負(fù)例。
為了驗(yàn)證本文改進(jìn)后的模型對(duì)目標(biāo)的檢測(cè)效果,實(shí)驗(yàn)選擇了VGG-SSD 與標(biāo)準(zhǔn)版MobileNet-SSD 模型作為對(duì)照組,為了驗(yàn)證改進(jìn)后的模型對(duì)大尺度目標(biāo)(本實(shí)驗(yàn)中把真實(shí)框占圖片比例超過(guò)30%的目標(biāo)歸類(lèi)為大尺度目標(biāo))的檢測(cè)效果,要將大目標(biāo)作為單獨(dú)的一個(gè)因素進(jìn)行考慮。最終的方案為用三種模型分別對(duì)大目標(biāo)和普通目標(biāo)進(jìn)行檢測(cè),對(duì)比不同模型的檢測(cè)精度和檢測(cè)速度。
對(duì)預(yù)訓(xùn)練模型的部分頂層卷積層進(jìn)行解凍后,按照上文所選用的超參數(shù)重新訓(xùn)練。loss 值在前20輪快速下降,隨著學(xué)習(xí)率的衰減下降趨勢(shì)漸緩,在85 到90 輪訓(xùn)練間取得最小值,繼續(xù)訓(xùn)練后損失不再下降,90 輪訓(xùn)練后趨于平穩(wěn)并略有上升,得到的訓(xùn)練損失最終在1.7 附近波動(dòng),如圖4 所示。

圖4 總體損失下降曲線(xiàn)Fig.4 Overall loss reduction curve
在實(shí)際的檢測(cè)過(guò)程中,目標(biāo)的大小往往對(duì)檢測(cè)結(jié)果的影響非常大,作物與雜草相互交錯(cuò)、遮擋是很常見(jiàn)的狀況。這種狀況下容易出現(xiàn)誤檢與漏檢。小目標(biāo)數(shù)量多、體積小,容易被遮擋導(dǎo)致漏檢。大目標(biāo)體積大、不易被遮擋,但容易出現(xiàn)預(yù)測(cè)框不夠精確(某個(gè)部分被漏掉)和誤檢(大目標(biāo)的一部分被識(shí)別為一個(gè)單獨(dú)的小目標(biāo))。
3.3.1 普通目標(biāo)
通過(guò)統(tǒng)計(jì)豆角苗與雜草被分類(lèi)的樣本(TP、FN、FP)獲得3 種模型整體的準(zhǔn)確率、召回率,如表2 所示。可以看出,對(duì)于普通大小的目標(biāo),VGG-SSD 模型具有最高的準(zhǔn)確率85.43%略微優(yōu)于MobileNet-SSD 模型,但檢測(cè)花費(fèi)時(shí)間約為其3 倍。改動(dòng)特征層的MobileNet-SSD 模型(使用38×38特征層)的準(zhǔn)確率低于標(biāo)準(zhǔn)模型大約3%,由于38×38 這一層相對(duì)于原模型使用的2×2 這一層提取的特征比較淺,所以精度下降是正常現(xiàn)象,且下降值在可接受的范圍內(nèi)。各模型預(yù)測(cè)圖如圖5 所示。

圖5 普通目標(biāo)檢測(cè)效果Fig.5 Common target detection effect

表2 各模型對(duì)普通目標(biāo)的豆角苗及雜草檢測(cè)結(jié)果統(tǒng)計(jì)Tab.2 Statistics of detection results of carob seedlings and weeds of common targets by each model
3.3.2 大目標(biāo)
上文已將真實(shí)框占圖片比例超過(guò)30%的目標(biāo)定義為大目標(biāo),統(tǒng)計(jì)大目標(biāo)的分類(lèi)樣本后得到模型的評(píng)價(jià)指標(biāo)如表3 所示。實(shí)驗(yàn)數(shù)據(jù)表明,3種模型準(zhǔn)確率都有一定程度的下降,其中標(biāo)準(zhǔn)的MobileNet-SSD 模型準(zhǔn)確率下降最明顯,而改動(dòng)特征層之后的模型對(duì)比原模型準(zhǔn)確率高出了3%左右,檢測(cè)花費(fèi)時(shí)間沒(méi)有變化。對(duì)比VGG 模型雖然準(zhǔn)確率幾乎持平,但檢測(cè)速度達(dá)到了3 倍左右,因此我們可以認(rèn)為改動(dòng)后的模型在大目標(biāo)檢測(cè)上對(duì)原模型有一定的提升,且速度不受影響。

表3 各模型對(duì)大目標(biāo)的豆角苗及雜草檢測(cè)結(jié)果統(tǒng)計(jì)Tab.3 Statistics of detection results of carob seedlings and weeds of large targets by each model
3.3.3 誤識(shí)別
由于本實(shí)驗(yàn)中大目標(biāo)(大部分為豆角苗)的葉子在某些情況下與雜草相似,會(huì)出現(xiàn)誤識(shí)別現(xiàn)象,主要是有2 種情況:如圖6 所示,圖6(a)為重識(shí)別,識(shí)別出大目標(biāo)(豆角苗)后又將目標(biāo)的一部分(葉子)識(shí)別為雜草;圖6(b)為誤識(shí)別,將一顆完整的豆角植株誤識(shí)別為兩株相鄰的目標(biāo)。這可能是因?yàn)樵瓟?shù)據(jù)集中有部分大目標(biāo)與小目標(biāo)相交錯(cuò),小目標(biāo)的真實(shí)框大部分被包含進(jìn)大目標(biāo)的圖片,這些情況導(dǎo)致了模型對(duì)大目標(biāo)的檢測(cè)準(zhǔn)確率的下降。

圖6 大目標(biāo)誤檢測(cè)效果Fig.6 Misdetection effect of large target
相比于原模型,特征層改動(dòng)后得到的模型(MobileNet-SSD(38))在檢測(cè)普通大小的目標(biāo)時(shí)精度有所下降,但針對(duì)本數(shù)據(jù)集的大目標(biāo)時(shí)具有更好的效果。同時(shí)在使用MobileNet 作為主網(wǎng)絡(luò)時(shí)檢測(cè)速度比VGG16 有大幅度的提升,而準(zhǔn)確度僅僅小幅下降。
為了滿(mǎn)足基于深度學(xué)習(xí)的雜草識(shí)別算法在除草機(jī)器人等移動(dòng)端上的使用,本文詳細(xì)介紹了輕量級(jí)檢測(cè)網(wǎng)絡(luò)MobileNet-SSD,使用自己構(gòu)建的豆角苗-雜草數(shù)據(jù)集進(jìn)行訓(xùn)練,在普通目標(biāo)和大目標(biāo)上分別獲得了83.27%和72.42%的準(zhǔn)確率。
針對(duì)豆角苗-雜草數(shù)據(jù)集,改變MobileNet-SSD 網(wǎng)絡(luò)結(jié)構(gòu),舍棄原2×2 特征層,改用38×38特征層,改動(dòng)后模型在對(duì)普通目標(biāo)檢測(cè)時(shí)準(zhǔn)確度略微下降了3%,但在針對(duì)大目標(biāo)時(shí)比原模型具有更好的效果對(duì)比VGG16,以MobileNet 作為主干網(wǎng)絡(luò)的SSD 模型具有參數(shù)少、體積小等優(yōu)點(diǎn),大大降低了設(shè)備的計(jì)算力需求,同時(shí)在針對(duì)豆角苗-雜草檢測(cè)中檢測(cè)2 種目標(biāo)花費(fèi)時(shí)間分別為0.32s 和0.29s,遠(yuǎn)遠(yuǎn)小于VGG-SSD 模型花費(fèi)時(shí)間,因此具有更好的實(shí)時(shí)性。