喻 剛,蔣紅海,孫騰飛,王春陽(yáng),尚建偉
(昆明理工大學(xué) 機(jī)電工程學(xué)院 云南 昆明 650504)
我國(guó)是一個(gè)以農(nóng)業(yè)為主的國(guó)家,促進(jìn)農(nóng)產(chǎn)品的發(fā)展具有很大的意義,而白菜有作為生活中常見的蔬菜之一,廣受人民的喜愛,但是白菜的生長(zhǎng)經(jīng)常受到雜草的影響,田間雜草憑借其強(qiáng)悍的生存能力不且與白菜掠奪土壤養(yǎng)分和空間陽(yáng)光等[1],而且有些雜草還是許多病蟲的中間宿主,促使田間病蟲害的發(fā)生。所以,田間除草對(duì)于提高白菜的質(zhì)量和產(chǎn)量具有重要的意義。
目前田間雜草管理方法大致包括人力除草、噴灑化學(xué)除草劑和傳統(tǒng)農(nóng)耕機(jī)械除草三種方式。隨著智能除草機(jī)器人的出現(xiàn),在一定程度上代替?zhèn)鹘y(tǒng)除草方式,不僅提高了生產(chǎn)效率,同時(shí)也減少了農(nóng)民的田間勞作時(shí)間和化學(xué)除草劑的噴灑,降低了農(nóng)業(yè)生產(chǎn)成本,減少環(huán)境的破壞。近些年來(lái),許多學(xué)者對(duì)除草算法進(jìn)行了深入研究。關(guān)強(qiáng)等人[2]在田間植物圖像的分割中使用二維OTSU算法對(duì)植物部分和背景部分進(jìn)行處理,根據(jù)RGB 顏色模型和HSV 顏色模型的灰度化使用5種不同的圖像分割算法;胡波等人[3]通過(guò)引入像素灰度級(jí)和鄰域灰度級(jí)構(gòu)成的二維直方圖,提出了一種彩色圖像算法進(jìn)行雜草分割。Arefi等人[4]基于圖像形態(tài)學(xué)和顏色,使用RGB和HSI顏色模型定義雜草顏色特征,采用兩種形態(tài)學(xué)特征對(duì)雜草進(jìn)行識(shí)別。
上述圖像處理方法主要根據(jù)顏色特征或直方圖對(duì)雜草圖像進(jìn)行分割,容易受到環(huán)境的影響。所以本文將深度學(xué)習(xí)引入雜草識(shí)別領(lǐng)域,應(yīng)用 Mask R-CNN算法對(duì)雜草及白菜幼苗進(jìn)行分割識(shí)別,并與傳統(tǒng)圖像算法對(duì)比。實(shí)驗(yàn)結(jié)果表明,該算法在自然環(huán)境下能對(duì)雜草和作物進(jìn)行有效的識(shí)別。
圖像分割是在檢測(cè)出圖像中被測(cè)物位置并分類
的前提下,對(duì)被測(cè)物進(jìn)行像素級(jí)別的分割。所以圖像分割可以看作物體識(shí)別和語(yǔ)義分割的結(jié)合,它不僅要正確的找到圖像中的物體進(jìn)行識(shí)別,還要對(duì)其精確的分割。結(jié)合Faster R-CNN的圖像分割和FCN語(yǔ)義分割算法,何愷明等研究員[5],提出了如圖 1所示的分割算法Mask R-CNN,它從Faster R-CNN模型中借用了兩個(gè)方面。首先是提取圖像框(RPN),用來(lái)產(chǎn)生候選對(duì)象框。然后是作類別和邊框預(yù)測(cè),給每個(gè)RoI都輸出一個(gè)二值掩模。其模型示意圖如圖所示。
圖1 Mask R-CNNFig.1 Mask R-CNN
RPN是通過(guò)一個(gè)全卷積神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)的,其輸入是一幅特征圖像,輸出的是一組帶有對(duì)象得分的目標(biāo)推薦矩形,與目標(biāo)檢測(cè)中的ss算法[6]類似?;鶞?zhǔn)框在多次卷積后的特征圖上滑動(dòng)后映射到一個(gè)低維特征上,然后,這個(gè)低維特征被輸入到邊框回歸層和邊框分類層,最終生成一組有編號(hào)和坐標(biāo)的錨框。
RPN在每一個(gè)滑動(dòng)窗口位置同時(shí)預(yù)測(cè)多個(gè)區(qū)域枚舉,并將最大可能枚舉數(shù)目記錄為 k。所以 reg層用4k輸入編碼k幀坐標(biāo),cls層輸出2k得分以估量每個(gè)枚舉是否是目標(biāo)對(duì)象。特征圖中每個(gè)紅色框的中心點(diǎn)可以對(duì)應(yīng)于原始圖像中的像素點(diǎn)。對(duì)于每個(gè)錨點(diǎn),選擇9個(gè)不同大小和寬高比的矩形,一般為128*128,256*256,512*512的三種尺寸,每種尺寸按1∶1,1∶2,2∶1的長(zhǎng)寬比縮放,并且它們的預(yù)測(cè)順序被固定為要評(píng)估的RPN的候選框。其中具有最大重疊率的錨點(diǎn)被記錄為前景樣本,并且如果剩余錨點(diǎn)與某個(gè)校準(zhǔn)重疊,則其大于0.7,記為前景樣本; 如果它與任何校準(zhǔn)重疊,則該比率小于0.3,將其記錄為背景樣品。而介于 0.3~0.7之間的錨點(diǎn)棄用。構(gòu)造好錨點(diǎn)之后,訓(xùn)練RPN的問題就可以轉(zhuǎn)化為最小化一個(gè)多任務(wù)損失函數(shù)。
Mask R-CNN采用了一個(gè)全卷積網(wǎng)絡(luò)的掩模(mask)分支[7],與對(duì)象分類同時(shí)進(jìn)行,對(duì)特征圖進(jìn)行像素級(jí)的分割。掩模分支在每個(gè)RoI上產(chǎn)生一個(gè)Km2維輸出,為K個(gè)類別各編碼一個(gè)m*m的二值掩模。掩模損失是一個(gè)用像素級(jí) sigmoid定義的交叉熵?fù)p失,記為L(zhǎng)mask。
Sigmoid函數(shù)定義:
交叉熵?fù)p失函數(shù)定義如公式:
其中,x表示樣本,y表示真實(shí)值,a表示輸出值,n為樣本總數(shù)。
整體損失函數(shù)表示為:
圖片輸入到 Mask R-CNN網(wǎng)絡(luò)后,首先經(jīng)過(guò)ResNet分類網(wǎng)絡(luò),并從整幅圖片中提取特征。特征提取的操作一般包括卷積層、Relu激活函數(shù)和池化層[8],經(jīng)處理后得到特征圖。
(1)卷積操作是讓權(quán)值矩陣在圖像上按照固定的步幅移動(dòng),權(quán)值矩陣每停下一個(gè)位置,就讓權(quán)值矩陣中每個(gè)值與圖像中對(duì)應(yīng)的元素進(jìn)行矩陣運(yùn)算,得到的值就是這一步卷積層對(duì)應(yīng)位置的值;同時(shí)卷積還能實(shí)現(xiàn)參數(shù)共享,減少計(jì)算量。圖像中需要通過(guò)不同尺寸的的卷積核來(lái)提取相應(yīng)的維度特征。
(2)ReLU激活函數(shù)是校正線性單元函數(shù),它是神經(jīng)網(wǎng)絡(luò)中經(jīng)常出現(xiàn)的一種激活函數(shù),其表達(dá)式為:
(3)Mask R-CNN采用了一種RoIPool擴(kuò)展層的池化操作,稱為RoIAlign層,它摒棄了RoIPool的粗糙量化,通過(guò)插值在每個(gè)RoI網(wǎng)格的四個(gè)規(guī)則采樣位置計(jì)算輸入特征的精確值,在進(jìn)行最大池化或平均池化的聚合處理。
在kaggle官網(wǎng)公布了現(xiàn)有唯一的室內(nèi)培育的雜草幼苗數(shù)據(jù)集,本文選取其中田間最常見的三種雜草幼苗各200張:田芥菜、馬齒莧和白花藜,為了防止數(shù)據(jù)集單一,產(chǎn)生過(guò)擬合現(xiàn)象,數(shù)據(jù)集中加入野外雜草幼苗照片每類各50張。本文搜集白菜幼苗50張,并實(shí)際拍攝100張.由于白菜幼苗的圖片較少,所以本實(shí)驗(yàn)需要對(duì)圖片數(shù)量進(jìn)行數(shù)據(jù)擴(kuò)充到 250張。數(shù)據(jù)擴(kuò)充的方式有很多,包括圖像的水平翻轉(zhuǎn)、移動(dòng)、增加噪聲、改變對(duì)比度、變換尺寸、色彩抖動(dòng)等[9],在數(shù)據(jù)集上采取這些數(shù)據(jù)擴(kuò)充的方法,可以有效地提高網(wǎng)絡(luò)的泛化能力,降低錯(cuò)誤率。變換效果圖如圖2所示。
圖2 數(shù)據(jù)擴(kuò)充Fig.2 Data amplification
(1)Epoch和Batch Size
在深度學(xué)習(xí)中,訓(xùn)練集對(duì)網(wǎng)絡(luò)訓(xùn)練一次是不能完全使網(wǎng)絡(luò)收斂的,所以需要多次訓(xùn)練,它根據(jù)數(shù)據(jù)集中對(duì)象的多樣性來(lái)確定,本次實(shí)驗(yàn)選取三種雜草和一種蔬菜,對(duì)象的復(fù)雜度較低,所以選取Epoch值為100。
在整個(gè) Epoch中需要訓(xùn)練的數(shù)據(jù)集數(shù)量過(guò)于多,計(jì)算機(jī)可能無(wú)法承載,所以需要將它分成很多個(gè)較小的Batches。本次實(shí)驗(yàn)選擇在電腦上訓(xùn)練,電腦CPU是英特爾志強(qiáng)X5570,主頻2.93 GHz;顯卡是NVIDIA GeForce 1050Ti,顯存容量為6 GB,顯存位寬64bit,實(shí)驗(yàn)將Batch Size的值設(shè)置為2。本文完成一輪迭代所需要的批次大小記為Iterations。
(2)學(xué)習(xí)率
學(xué)習(xí)率是控制深度學(xué)習(xí)中權(quán)值的更新速率的一個(gè)參數(shù),它直接決定了權(quán)值沿梯度方向下降的變化情況。它對(duì)權(quán)重的變化可以表示為:
其中newω是更新后的權(quán)重,oldω是更新前的權(quán)重,α為學(xué)習(xí)率,gradient為梯度。
首先,實(shí)驗(yàn)分別選取學(xué)習(xí)率 0.1、0.01、0.001作為第一輪訓(xùn)練的學(xué)習(xí)率,來(lái)測(cè)試網(wǎng)絡(luò)整體損失函數(shù)變化。從圖3可以看出,當(dāng)學(xué)習(xí)率α=0.1時(shí),總損失函數(shù)值迅速下降,網(wǎng)絡(luò)快速擬合,訓(xùn)練結(jié)果與真值之間的差值變小的速率很高,但當(dāng)訓(xùn)練的批次達(dá)到100次以上時(shí),損失函數(shù)值略有升高,并且在以后的訓(xùn)練過(guò)程后期呈震蕩趨勢(shì)。損失函數(shù)數(shù)值整體趨勢(shì)呈現(xiàn)先降低后震蕩的趨勢(shì),這是因?yàn)閷W(xué)習(xí)率過(guò)大,導(dǎo)致梯度出現(xiàn)震蕩,網(wǎng)絡(luò)較難收斂。當(dāng)學(xué)習(xí)率α=0.001時(shí),損失函數(shù)整體呈下降趨勢(shì),但下降速率低于α=0.1時(shí)的速率。當(dāng)學(xué)習(xí)率α=0.00001時(shí),損失函數(shù)值下降速度極為緩慢,這是因?yàn)閷W(xué)習(xí)率很低,權(quán)重更新速度慢,致使網(wǎng)絡(luò)收斂速度變慢。
圖3 α-lossFig.3 α-loss
本實(shí)驗(yàn)使用網(wǎng)絡(luò)在COCO數(shù)據(jù)集上訓(xùn)練得到的參數(shù)作為初始值,網(wǎng)絡(luò)初始就具有一定的收斂,因此初始學(xué)習(xí)率設(shè)為0.001,每?jī)奢営?xùn)練后降低50%。
(3)網(wǎng)絡(luò)正則化
深度學(xué)習(xí)的一個(gè)核心問題是怎樣使學(xué)習(xí)算法新的數(shù)據(jù)集上有優(yōu)異的表現(xiàn),這通常被稱為“泛化能力”。往往深層網(wǎng)絡(luò)在訓(xùn)練集中表現(xiàn)優(yōu)異,但在測(cè)試集中的表現(xiàn)卻差強(qiáng)人意,這種由于網(wǎng)絡(luò)出現(xiàn)了過(guò)擬合現(xiàn)象,而利用“正則化”可以有效的避免過(guò)擬合的發(fā)生,提高泛化能力[10]。
l2正則化:假設(shè)網(wǎng)絡(luò)層參數(shù)為ω,則公式可表示為
其中參數(shù)λ是決定正則項(xiàng)的大小,較大的λ值會(huì)在一定程度上約束模型復(fù)雜度,反之則亦然[11]。
l1正則化:
l1正則化不但能限制參數(shù)量級(jí)之外,同時(shí)還能讓許多參數(shù)稀疏化,減少模型中的噪點(diǎn)和存儲(chǔ)空間。隨機(jī)失活是正則化中一種重要方法,本文將失活率設(shè)置為0.5。
綜合以上分析,本次實(shí)驗(yàn)采用的超參數(shù)數(shù)據(jù)如表1所示:
表1 超參數(shù)Tab.1 Superparameter
經(jīng)上文分析后,確定深度網(wǎng)絡(luò)訓(xùn)練的超參數(shù)。本實(shí)驗(yàn)將800張白菜幼苗和三類雜草幼苗圖像作為訓(xùn)練集對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,200張作為測(cè)試集驗(yàn)證識(shí)別效果。
首先,將 800張標(biāo)注完成的照片投入到 Mask R-CNN卷積神經(jīng)網(wǎng)絡(luò)中訓(xùn)練,觀察訓(xùn)練過(guò)程中總損失函數(shù)變化情況,評(píng)價(jià)網(wǎng)絡(luò)擬合程度。圖4是在100輪訓(xùn)練過(guò)程中損失函數(shù)數(shù)值變化數(shù)據(jù)。從圖4展示的數(shù)據(jù)變化圖不難看出,loss值在前25輪訓(xùn)練中下降較快,這是由于學(xué)習(xí)率比較高,網(wǎng)絡(luò)參數(shù)更新速度較快。在隨后的25輪訓(xùn)練中,α逐漸減小,loss值整體趨勢(shì)雖然在下降,但是下降速度減小。在50-80輪訓(xùn)練中,loss值下降速度略有增加,網(wǎng)絡(luò)繼續(xù)收斂,當(dāng)訓(xùn)練到80輪后,loss值趨于平穩(wěn),直至100輪,loss變化微小,網(wǎng)絡(luò)趨于穩(wěn)定。
圖4 損失函數(shù)變化情況Fig.4 Loss function variation
神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成后,實(shí)驗(yàn)將200張未標(biāo)注的植物照片作為測(cè)試集,投入到網(wǎng)絡(luò)中測(cè)試準(zhǔn)確率。本文將識(shí)別結(jié)果分為三個(gè)級(jí)別:定位和分類準(zhǔn)確,且分割出植物主體95%以上的設(shè)為優(yōu)秀;分類準(zhǔn)確,定位框出現(xiàn)偏差或分割不完全的設(shè)為合格;出現(xiàn)定位框偏離物體較大或分類錯(cuò)誤,即設(shè)為不合格。表2為基于Mask R-CNN算法的各級(jí)別所占比例:
表2 各級(jí)別占比Tab.2 Percentage by grade
下圖是基于 OTSU閾值分割與基于 Mask R-CNN的識(shí)別效果的對(duì)比圖像。
在第一組照片中,兩種方案都有效識(shí)別,但Mask R-CNN算法的識(shí)別精度較高,對(duì)于雜草的定位和分割都較為準(zhǔn)確。在第二組圖像中,由于光照影響,OTSU閾值分割算法在白菜細(xì)小葉柄部分產(chǎn)生了過(guò)分割現(xiàn)象,將小葉片識(shí)別為雜草,這是由于強(qiáng)光照照射在物體和地面上,致使物體本身特征發(fā)生了變化,難以識(shí)別。而Mask R-CNN算法對(duì)白菜和雜草識(shí)別準(zhǔn)確。在第三組照片中,白菜葉片遮擋了雜草區(qū)域,OTSU閾值分割算法未能將白菜與雜菜分割,進(jìn)而在識(shí)別過(guò)程中將二者識(shí)別為一個(gè)整體;而 Mask R-CNN算法有效識(shí)別出連接的雜草和白菜,并且定位準(zhǔn)確。所以,Mask R-CNN算法在處理復(fù)雜環(huán)境時(shí)表現(xiàn)更優(yōu)。
圖5 分割對(duì)比Fig.5 Segmentation effect
本文將深度學(xué)習(xí)引入雜草分割領(lǐng)域,詳細(xì)介紹了Mask R-CNN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并將該網(wǎng)絡(luò)用于雜草與白菜的實(shí)例分割,得到了81%的合格率。與基于OTSU閾值分割的雜草識(shí)別方案進(jìn)行對(duì)比,Mask R-CNN不僅能在不同光照下準(zhǔn)確識(shí)別圖像中物體種類,同時(shí)在作物葉片相互遮擋的情況下也能很好的識(shí)別和定位雜草,實(shí)現(xiàn)了戶外環(huán)境下的圖像定位和分類,證明了該算法在自然環(huán)境能對(duì)雜草和作物進(jìn)行有效的識(shí)別。同時(shí),Mask R-CNN算法結(jié)構(gòu)還避免了傳統(tǒng)圖像識(shí)別過(guò)程中的分類器設(shè)置工作,有效的提高算法的適應(yīng)性。