牟佳偉,馮 全*,張建華
(1.甘肅農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,甘肅 蘭州,730070;2.中國農(nóng)業(yè)科學(xué)院農(nóng)業(yè)信息研究所,北京 100081)
可行駛區(qū)域分割技術(shù)作為果園智能無人車的一項(xiàng)關(guān)鍵技術(shù),它能夠?qū)⒐麍@的道路區(qū)域分為可行駛區(qū)域和不可行駛區(qū)域,可為作業(yè)道路的路徑規(guī)劃提供信息??尚旭倕^(qū)域分割的主要技術(shù)依據(jù)是圖像分割,目前主流的分割算法均基于卷積神經(jīng)網(wǎng)絡(luò),如FCN[1],DeepLab系列[2-4]等,這些算法的試驗(yàn)結(jié)果雖然能獲得高精度,但是計(jì)算復(fù)雜度高,在低計(jì)算資源的農(nóng)業(yè)無人車上無法取得滿意的分割速度。
農(nóng)業(yè)場景中圖像背景復(fù)雜、干擾因素多,為了分割農(nóng)業(yè)場景下的道路,一些研究者已經(jīng)應(yīng)用深度學(xué)習(xí)方法做了一些工作,韓振浩[5]等提出一種基于U-Net網(wǎng)絡(luò)的果園視覺導(dǎo)航路徑識別方法;楊麗麗[6]等以U-Net為基本網(wǎng)絡(luò)結(jié)構(gòu),提出三個(gè)改進(jìn)方向,提高了自動(dòng)駕駛農(nóng)機(jī)對農(nóng)田間道路的感知能力;李云伍[7]等根據(jù)丘陵山區(qū)田間道路圖像特征,構(gòu)建了基于空洞卷積神經(jīng)網(wǎng)絡(luò)的田間道路場景圖像語義分割模型,實(shí)現(xiàn)了丘陵山區(qū)田間道路場景像素級的預(yù)測;宋廣虎[8]等利用FCN、SegNet和U-Net三種卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行遷移學(xué)習(xí),用得到的三種分割模型對不同環(huán)境下葡萄行間路徑進(jìn)行分割試驗(yàn);吳偉斌[9]等為了將語義分割技術(shù)應(yīng)用到部分果、茶園道路的像素級分割中,以PSPNet分割模型為基礎(chǔ)進(jìn)行優(yōu)化,構(gòu)建MS-PSPNet語義分割模型。
上述基于卷積神經(jīng)網(wǎng)絡(luò)語義分割模型的高精度,依賴于豐富的空間上下文(大感受野)和精細(xì)的空間細(xì)節(jié)(高分辨率),這兩者都會產(chǎn)生高計(jì)算成本,無法快速實(shí)現(xiàn)圖像分割。而適用于自動(dòng)駕駛領(lǐng)域的分割技術(shù)必須具備實(shí)時(shí)性,這樣才能對道路場景做出快速處理,避免意外的發(fā)生。近年來,實(shí)時(shí)分割方法得到了廣泛的研究[10-12],其中Yolact[13]及其改進(jìn)系列算法[14-15]在多個(gè)公開數(shù)據(jù)庫上的精度和速度都取得了State of the Art(目前最高水平)的成績。為了實(shí)現(xiàn)葡萄園無人車的自主行駛,本文采集了真實(shí)果園的道路實(shí)景圖像,建立了測試數(shù)據(jù)庫,采用Yolact系列的三種快速分割算法,在三種光照條件下對果園可行駛區(qū)域進(jìn)行分割試驗(yàn),優(yōu)選出適用于果園開放條件下最優(yōu)的快速道路分割方法。
Yolact是一個(gè)實(shí)時(shí)實(shí)例分割的框架,它放棄了明確的定位步驟,將實(shí)例分割分成兩個(gè)并行的任務(wù):為整個(gè)圖像生成一個(gè)非定位原形掩碼字典和為每個(gè)實(shí)例預(yù)測一組線性組合系數(shù)。然后,從這兩個(gè)分量創(chuàng)建一個(gè)全圖像實(shí)例分割,即對于每個(gè)實(shí)例,使用相應(yīng)的預(yù)測系數(shù)把原型(Learning prototypes)進(jìn)行線性組合,用預(yù)測的邊界框?qū)λ鼈冞M(jìn)行裁剪。通過這種方式分割,使得網(wǎng)絡(luò)學(xué)會如何獨(dú)立定位實(shí)例掩碼。原型生成分支(protonet)為整個(gè)圖像預(yù)測一組k個(gè)原型掩碼。將protonet 實(shí)現(xiàn)為 FCN,其最后一層有k個(gè)通道(每個(gè)原型一個(gè))并將其附加到backbone特征層。為了從更深的backbone 特征得到高質(zhì)量的掩碼,從而給小目標(biāo)帶來更好的性能,Yolact選擇使用FPN(Feature Pyramid Networks,特征金字塔網(wǎng)絡(luò))。Yolact算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 Yolact算法的網(wǎng)絡(luò)結(jié)構(gòu)
Yolact_edge對Yolact進(jìn)行了兩項(xiàng)改進(jìn):使用NVIDIA的TensorRT推理引擎進(jìn)行優(yōu)化和提出一種新穎的特征變形模塊來利用視頻中的時(shí)間冗余。Yolact_edge保留了大量的表達(dá)backbone,并在視頻中使用時(shí)間冗余和TensorRT優(yōu)化來實(shí)現(xiàn)快速準(zhǔn)確的實(shí)例分割。有選擇地將視頻的幀分為兩組:關(guān)鍵幀和非關(guān)鍵幀。模型在這兩組幀中的行為僅在backbone階段有所不同。對于關(guān)鍵幀,模型計(jì)算所有backbone和pyramid的特征。對于非關(guān)鍵幀,只計(jì)算特征的一個(gè)子集,并使用部分特征變換機(jī)制把從時(shí)間上最接近前一個(gè)的關(guān)鍵幀轉(zhuǎn)換為其余的特征。通過這種方式,在生成準(zhǔn)確預(yù)測和保持快速運(yùn)行之間取得了平衡。
果園場景圖像的采集于2020年7月在甘肅農(nóng)業(yè)大學(xué)葡萄園中完成,圖像采集時(shí)對葡萄園內(nèi)數(shù)條田埂的周圍環(huán)境依據(jù)晴天和陰天的條件,分光照狀態(tài)(普通光照、強(qiáng)光照、弱光照)進(jìn)行視頻采集,其中:普通光照為晴天上午8:00~11:00和下午15:00~18:00時(shí)段以及陰天中午11:00~14:00時(shí)段的自然光照,強(qiáng)光照為晴天中午11:00~15:00時(shí)段的自然光照,弱光照為陰天上午8:00~11:00和下午15:00~18:00時(shí)段的自然光照。通過人工遙控?zé)o人車行走,無人車處于正常工作狀態(tài)。利用車頂雙目攝像機(jī)的左目進(jìn)行數(shù)據(jù)采集,拍攝方向?yàn)闊o人車正前方,攝像機(jī)距離地面0.5 m,無人車行進(jìn)速度約為1.1 m/s,攝像機(jī)采集的圖像分辨率為1 280×720,采集幀率約為60 f/s。之后將視頻文件按幀率為10張/s進(jìn)行圖像拆分,剔除冗余重復(fù)的圖片后,得到2 400張圖片。在訓(xùn)練和測試前進(jìn)行預(yù)處理,將輸入圖像統(tǒng)一轉(zhuǎn)換為550×550的分辨率大小。
將采集到的2 400張圖片使用Labelme標(biāo)注軟件對果園可行駛區(qū)域進(jìn)行標(biāo)注,標(biāo)注類別為road(道路),將隨機(jī)選取圖片作為數(shù)據(jù)集制作的原則,按照光照強(qiáng)度分為三組,分別是普通光照組、強(qiáng)光照組和弱光照組,每組按照5∶2∶1的原則將每組的圖片分為訓(xùn)練集、驗(yàn)證集、測試集,即三種光照組中,每組有500張圖片用作訓(xùn)練集,200張圖片用作驗(yàn)證集,100張圖片用作測試集。共得到1 500張訓(xùn)練圖片,600張驗(yàn)證圖片以及300張測試圖片。
本文對該試驗(yàn)結(jié)果的評價(jià)指標(biāo)從分割精度和速度出發(fā)。
2.2.1 分割精度AP
AP(Average Precision,平均精度)為主流目標(biāo)檢測模型的評價(jià)指標(biāo),因?yàn)閅olact系列算法是實(shí)例分割算法,需要先檢測再進(jìn)行分割,故以此為分割精度的指標(biāo)。本文采用的AP評價(jià)指標(biāo)為MS COCO數(shù)據(jù)集的評價(jià)格式,即在多個(gè)IoU(Intersection over Union,交并比)的閾值情況(0.5∶0.95,步長為0.05,總共10個(gè)閾值)下計(jì)算平均值,因?yàn)橹挥衦oad這一個(gè)類別,因此AP和mAP的值相等。計(jì)算公式:
式中:Ri與Pi為P-R曲線上的取值點(diǎn),i∈{0,0.01,0.02,…,0.99,1.00}。
以單個(gè)類別召回率為橫軸,單個(gè)類別識別精度為縱軸,即可繪制P-R曲線。P為精度,計(jì)算公式:
式中:TP為實(shí)際是正樣本,并且正確識別為正樣本的情況;FP為實(shí)際是負(fù)樣本,但是錯(cuò)誤識別成正樣本的情況。
R為召回率,計(jì)算公式:
式中:FN為實(shí)際是正樣本,但是錯(cuò)誤識別成負(fù)樣本的情況。
2.2.2 分割速度FPS
FPS(Frames Per Second)為每秒處理的幀數(shù),主要用來考察實(shí)時(shí)性。FPS越高,算法的實(shí)時(shí)性越好。
2.2.3 綜合評分
本文采用打分制來評價(jià)三種網(wǎng)絡(luò)模型在精度和速度方面的綜合表現(xiàn),具體是將歸一化處理和加權(quán)系數(shù)結(jié)合起來進(jìn)行打分。
首先對三種分割模型試驗(yàn)結(jié)果的精度(或速度)的平均值進(jìn)行歸一化處理:
式中:i=1,2,3分別表示Yolact、Yolact_edge和Yolact++;Ai為i算法的原始精度平均值,Si為i算法的原始速度平均值;Am為三種算法中的最大精度平均值,Sm為三種算法中的最大速度平均值;ai為i算法的精度平均值歸一化結(jié)果;si為i算法的速度平均值歸一化結(jié)果。
然后計(jì)算加權(quán)得分:
Zi=w1ai+w2si
式中:i的定義同上;Zi為i算法的綜合得分;ai、si的定義同上;w1、w2為上述兩項(xiàng)的加權(quán)系數(shù),其和為1。
在農(nóng)業(yè)場景下進(jìn)行無人車自動(dòng)駕駛過程中,在滿足一定精度要求的同時(shí)對分割速度的要求更高,本文根據(jù)重要程度對所有檢測項(xiàng)加權(quán)系數(shù)做出如下賦值:w1為0.4,w2為0.6。
試驗(yàn)的硬件環(huán)境為:CPU為英特爾Xeon Silver 4110 2.1 GHz/8-Core,GPU為NVIDIA Tesla K40,內(nèi)存為48 GB。軟件環(huán)境為:操作系統(tǒng)Ubuntu 18.04,編程語言python 3.7,GPU加速工具CUDA 10.0以及cuDNN 7.6。
訓(xùn)練時(shí),三種分割模型的backbone均設(shè)置為ResNet101-FPN,batch_size設(shè)為8,最大迭代次數(shù)設(shè)置為20 000,每10 000次保存一次訓(xùn)練模型,初始學(xué)習(xí)率為1e-3,學(xué)習(xí)率衰減系數(shù)為5e-4,最大圖片尺寸為550×550。score_threshold設(shè)置為0.15。
在自建數(shù)據(jù)集上進(jìn)行了對比試驗(yàn),三種光照下三種模型的試驗(yàn)結(jié)果和綜合得分情況見表1。
表1 三種光照下三種模型的試驗(yàn)結(jié)果及綜合得分情況
從表1中的AP精度項(xiàng)可以得出以下結(jié)論:
在普通光照和強(qiáng)光照下,Yolact++略優(yōu)于其他兩者,其中:在普通光照下,分別比Yolact、Yolact_edge超出0.44%和0.24%;在強(qiáng)光照下,分別比Yolact、Yolact_edge超出0.84%和0.52%。在弱光照下,Yolact_edge要優(yōu)于其他兩者,比Yolact超出0.68%,比Yolact++超出1.48%。
從平均值來看,Yolact_edge的精度最高,為90.95%,分別比Yolact、Yolact++超出0.4%和0.24%,由此可以看出這三種算法在平均精度方面相差不大。
從表1中的FPS速度項(xiàng)可以得出以下結(jié)論:
在三種光照下,Yolact_edge均要優(yōu)于其他兩者,其中,在普通光照下,分別比Yolact、Yoalct++超出0.9個(gè)fps和1.86個(gè)fps;在強(qiáng)光照下,分別比Yolact、Yolact++超出0.91個(gè)fps和1.86個(gè)fps;在弱光照下,分別比Yolact、Yolact++超出0.9個(gè)fps和1.86個(gè)fps。
從平均值來看,Yolact_edge的速度最快,為6.95 fps,分別比Yolact、Yolact++超出0.9個(gè)fps和1.86個(gè)fps,由此可以看出Yolact_edge在速度方面的優(yōu)越性。同時(shí)可以看出不論在哪種光照狀態(tài)下,各個(gè)算法的分割速度相對穩(wěn)定。
從表1中的綜合得分情況可以得出以下結(jié)論:在三種算法中,Yolact_edge的原始精度平均值和原始速度平均值最大,因此分別作為精度平均值和速度平均值的歸一化條件。Yolact_edge的綜合得分第一,Yolact第二,Yolact++第三。由此可得,相較于其他兩種算法,Yolact_edge的綜合表現(xiàn)最優(yōu),在精度和速度方面具有更好的平衡性。
不同光照下三種算法的分割效果實(shí)例如圖2所示。
圖2 不同光照下三種算法的分割效果實(shí)例
從上述試驗(yàn)結(jié)果看出,Yolact_edge相比Yolact和Yolact++在三種光照狀態(tài)下均具有競爭力,原因如下:首先利用TensorRT推理引擎將網(wǎng)絡(luò)參數(shù)量減少以提升速度,同時(shí)平衡精度和速度;其次利用時(shí)間冗余以及轉(zhuǎn)換和傳播特征,使得深度學(xué)習(xí)網(wǎng)絡(luò)復(fù)雜的主干特征計(jì)算不需要在每一幀上完全計(jì)算,節(jié)省了推理時(shí)間。因此,Yolact_edge無論是在精度、速度,還是平均值和綜合得分都占有優(yōu)勢。
Yolact在精度和速度方面是三種算法中比較折中的一種,但有一個(gè)問題是由Yolact的掩碼生成算法造成的,就是“泄露”問題。網(wǎng)絡(luò)利用了組裝后裁剪的掩碼,并且不嘗試抑制裁剪區(qū)域外的噪聲,當(dāng)邊界框準(zhǔn)確時(shí),此方法效果較好,但若是邊界框不準(zhǔn)確,則噪聲可能會滲入實(shí)例掩碼,從裁剪區(qū)域外部產(chǎn)生一些“泄露”?!靶孤丁鼻闆r如圖3所示。
圖3 “泄露”情況(藍(lán)色區(qū)域)
Yolact++對Yolact進(jìn)行了改進(jìn),主要是Yolact++模型通過引入更多anchor覆蓋更多的尺寸,并在backbone中應(yīng)用可變形卷積以獲得更好的特征采樣,在一定程度上解決了定位失敗的問題;再者,Yolact++模型通過輕量級掩碼錯(cuò)誤加權(quán)方案部分緩解了泄露問題,具體表現(xiàn)為錯(cuò)誤掩碼將被忽略或排名低于更高質(zhì)量的掩碼。
果園里的可行駛區(qū)域分割對農(nóng)業(yè)無人車的應(yīng)用意義重大,現(xiàn)階段尚未有成熟的技術(shù),能夠完全支持農(nóng)業(yè)無人車在果園這種復(fù)雜環(huán)境下自動(dòng)分割檢測道路,自然條件下不斷變化的光照和復(fù)雜的地面情況,對在果園圖像中精確快速地分割可行駛區(qū)域影響較大。本文把優(yōu)秀的快速分割Yolact系列算法應(yīng)用到智能果園無人車上,對其完成可行駛區(qū)域分割任務(wù)的性能進(jìn)行了測試。在三種光照狀態(tài)下對Yolact、Yolact_edge和Yolact++進(jìn)行對比實(shí)驗(yàn),得出Yolact_edge在精度和速度方面較為優(yōu)異,是綜合得分最高的算法,適合在果園這種復(fù)雜場景下進(jìn)行可行駛區(qū)域快速分割作業(yè)。未來工作是要把算法進(jìn)行優(yōu)化和工程化出來,提高分割速度并部署在邊緣設(shè)備上,使其能夠在實(shí)際場景中進(jìn)行應(yīng)用。