蘇 萍,朱曉輝,2
(1.南通大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南通 226019;2.南通先進(jìn)通信技術(shù)研究院,江蘇 南通 226019)
21世紀(jì)以來(lái),隨著無(wú)人機(jī)、無(wú)人車(chē)技術(shù)發(fā)展成熟,無(wú)人船的應(yīng)用也越來(lái)越廣泛。與其他無(wú)人設(shè)備一樣,無(wú)人船能夠自主規(guī)劃和自主航行,通過(guò)各類(lèi)設(shè)備及傳感器完成一系列環(huán)境感知、目標(biāo)檢測(cè)、自動(dòng)避障等任務(wù),主要應(yīng)用于水質(zhì)監(jiān)測(cè)、環(huán)境監(jiān)控及安全監(jiān)控等[1]方面。在無(wú)人船自主航行過(guò)程中,對(duì)障礙物進(jìn)行檢測(cè)及避障是其亟需解決的一個(gè)問(wèn)題,現(xiàn)有的微型無(wú)人船主要采用超聲波、激光雷達(dá)及毫米波雷達(dá)等設(shè)備進(jìn)行避障。此類(lèi)設(shè)備雖然能較為精確地探測(cè)微型無(wú)人船與前方障礙物的距離,但其難以識(shí)別障礙物具體種類(lèi)同時(shí)難以檢測(cè)水草、垃圾等水面漂浮物,造成無(wú)人船因躲避不及時(shí)而出現(xiàn)被水草或垃圾等纏繞的現(xiàn)象,影響無(wú)人船自主航行能力。因此,該文提出了基于計(jì)算機(jī)視覺(jué)的方法實(shí)現(xiàn)障礙物識(shí)別與測(cè)距,利用Mask R-CNN深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)水面障礙物進(jìn)行識(shí)別定位及實(shí)例分割,采用基于小孔成像原理的單目測(cè)距算法,實(shí)現(xiàn)水面障礙物到無(wú)人船的距離測(cè)量。
傳統(tǒng)的目標(biāo)檢測(cè)算法主要通過(guò)多尺度的窗口在目標(biāo)圖像上滑動(dòng)產(chǎn)生候選區(qū)域,對(duì)候選區(qū)域內(nèi)的圖像計(jì)算其手工設(shè)計(jì)的特征,采用依據(jù)此特征訓(xùn)練好的分類(lèi)器(例如SVM、Adaboost等)對(duì)所有的候選區(qū)域進(jìn)行分類(lèi),取概率大于預(yù)設(shè)閾值的候選區(qū)域經(jīng)NMS(非極大值抑制)后的結(jié)果作為最終輸出。常見(jiàn)的手工設(shè)計(jì)特征包括梯度方向特征圖(HOG)[2]、可變性組件模型(DPM)[2]、尺度不變特征變換(SIFT)[3]等。此類(lèi)基于先驗(yàn)知識(shí)手工設(shè)計(jì)的特征,雖然在特定場(chǎng)景下?lián)碛休^高精度的目標(biāo)檢測(cè)結(jié)果,但同時(shí)由于其對(duì)先驗(yàn)知識(shí)具有依賴性,因此它們?cè)谧赃m應(yīng)和泛化能力上表現(xiàn)不足,同時(shí)由于現(xiàn)有的分類(lèi)器主要為二分類(lèi),因此在面對(duì)多分類(lèi)問(wèn)題時(shí)需要針對(duì)每個(gè)類(lèi)別訓(xùn)練一個(gè)分類(lèi)器,實(shí)用性不強(qiáng)。隨著深度學(xué)習(xí)的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)方法能夠?qū)⒂?xùn)練好的模型應(yīng)用到不同的場(chǎng)景,并且能夠自適應(yīng)地提取目標(biāo)的不同層級(jí)特征。與傳統(tǒng)的目標(biāo)檢測(cè)方法相比,檢測(cè)精度和泛化性都得到了有效提高。根據(jù)分類(lèi)回歸和區(qū)域提取是否分開(kāi)將基于深度學(xué)習(xí)的目標(biāo)檢測(cè)模型分為兩類(lèi):(1)基于分類(lèi)回歸的目標(biāo)檢測(cè)模型。此類(lèi)模型先根據(jù)特征圖劃定選框,對(duì)目標(biāo)進(jìn)行分類(lèi),經(jīng)典的方法有:SSD[4]、YOLO[5]、YOLOv3[6]。這些方法利用回歸思想提取目標(biāo)的邊界回歸框,大大提升了檢測(cè)速度,但是檢測(cè)精度較差[7];(2)基于候選區(qū)域的目標(biāo)檢測(cè)模型。此類(lèi)模型對(duì)特征圖進(jìn)行邊框提取,將其輸出與特征圖一同輸入到感興趣區(qū)域(region of interest)池化層,實(shí)現(xiàn)目標(biāo)分類(lèi)與定位,此類(lèi)目標(biāo)檢測(cè)方法是近年來(lái)研究目標(biāo)檢測(cè)的熱門(mén)方法。R-CNN[8]是第一個(gè)將深度學(xué)習(xí)引入到目標(biāo)檢測(cè)領(lǐng)域并能夠?qū)崿F(xiàn)自適應(yīng)檢測(cè)的方法,隨后很多研究人員對(duì)它進(jìn)行改進(jìn),如:SPP-Net[9]網(wǎng)絡(luò),它將金字塔池化層(spatial pyramid pooling)引入到R-CNN中,減少了輸入圖像的尺寸對(duì)網(wǎng)絡(luò)的影響,同時(shí)提升了檢測(cè)的精度;Fast R-CNN[10]在SPP-Net的空間金字塔池化層基礎(chǔ)上使用單尺度池化,在保證檢測(cè)精度的同時(shí)進(jìn)一步提高檢測(cè)速度;Faster R-CNN[11]將區(qū)域建議網(wǎng)絡(luò)(region proposal networks)引入到Fast R-CNN的提取候選區(qū)域過(guò)程,實(shí)現(xiàn)端到端的訓(xùn)練,提升了網(wǎng)絡(luò)訓(xùn)練的速度和提取區(qū)域的準(zhǔn)確度,是目前應(yīng)用較廣的檢測(cè)框架[12];Mask R-CNN[13]在Faster R-CNN的基礎(chǔ)上增加一個(gè)預(yù)測(cè)掩碼分支,將Faster R-CNN中的RoI池化層改進(jìn)為RoIAlign,采用雙線性插值法來(lái)降低邊界回歸框的位置誤差,進(jìn)一步提升目標(biāo)檢測(cè)識(shí)別的準(zhǔn)確度。由文獻(xiàn)[13]的研究表明,Mask R-CNN識(shí)別精度比Faster R-CNN更高,因此該文采用Mask R-CNN算法對(duì)水面障礙物進(jìn)行檢測(cè)識(shí)別。
基于機(jī)器視覺(jué)的測(cè)距主要有雙目視覺(jué)測(cè)距、結(jié)構(gòu)光學(xué)視覺(jué)測(cè)距[14]以及單目視覺(jué)測(cè)距[15]。結(jié)構(gòu)光學(xué)視覺(jué)測(cè)距易受光源影響,因此其應(yīng)用場(chǎng)景有較多限制;雙目視覺(jué)測(cè)距的研究重點(diǎn)主要為特征匹配[16],其測(cè)距的速度和精度受特征點(diǎn)匹配的精度影響較大。相較于上述兩種算法,單目視覺(jué)測(cè)距則具有運(yùn)算速度快、結(jié)構(gòu)簡(jiǎn)單等優(yōu)點(diǎn),因此其具有廣泛的應(yīng)用前景?,F(xiàn)有基于單目視覺(jué)的測(cè)距算法主要包含基于小孔成像原理測(cè)距、基于序列圖像測(cè)距以及基于單幀靜態(tài)圖像測(cè)距?;谛蛄袌D像測(cè)距的算法通過(guò)計(jì)算兩幀之間目標(biāo)與相機(jī)距離的差值,而不是直接計(jì)算當(dāng)前幀目標(biāo)與相機(jī)的距離,因此其計(jì)算誤差既取決于初始計(jì)算的目標(biāo)與相機(jī)的距離,同時(shí)取決于兩幀之間的差值,測(cè)量結(jié)果與實(shí)際距離誤差較大;基于單幀靜態(tài)圖像測(cè)距雖然實(shí)時(shí)性很高,但在遠(yuǎn)距離測(cè)距時(shí),其精度較低;而基于小孔成像原理的單目測(cè)距模型具有結(jié)構(gòu)簡(jiǎn)單、測(cè)距精度較高的優(yōu)點(diǎn),因此該文采用基于小孔成像原理的單目測(cè)距模型。
Mask R-CNN是在Faster R-CNN的基礎(chǔ)上改進(jìn)得到的,主要由Faster R-CNN、RoIAlign、FCN三個(gè)模塊組成[17],其網(wǎng)絡(luò)結(jié)構(gòu)如圖1[13]所示。
圖1 Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
在Faster R-CNN的檢測(cè)框架中,使用RoIPooling根據(jù)預(yù)選框的坐標(biāo)在特征圖上對(duì)應(yīng)的位置池化為固定大小的特征圖,然后進(jìn)行分類(lèi)和邊框回歸。預(yù)選框位置是由模型回歸得到的,一般是浮點(diǎn)數(shù),且池化后的特征圖尺寸要求是固定的,所以RoIPooling要進(jìn)行兩次量化過(guò)程,一是預(yù)選框位置量化成整數(shù)點(diǎn)的坐標(biāo)值;二是將量化后的邊界區(qū)域平均分割成n×n個(gè)單元(bin)并對(duì)每個(gè)單元的邊界進(jìn)行量化。由于兩次量化后,得到的預(yù)選框位置與最初回歸得到預(yù)選框的位置存在一定偏差,因此影響了檢測(cè)框架的分割精度。
為解決RoIPooling檢測(cè)框架分割精度不高的問(wèn)題,Mask R-CNN提出了新的檢測(cè)框架方法—RoIAlign。RoIAlign取消了RoIPooling中的預(yù)選框邊界量化操作,使得預(yù)選框與原圖目標(biāo)區(qū)域的位置更好地對(duì)齊。其具體操作為:遍歷每一個(gè)候選區(qū)域,保持浮點(diǎn)數(shù)的預(yù)選框邊界不變,并將每一個(gè)候候選區(qū)域n×n分割成個(gè)單元,再將每個(gè)單元平均分成m份,并采用雙線性插值法計(jì)算每份中心點(diǎn)位置的像素值,取這些像素值中最大的像素值作為每個(gè)單元的像素值,最終由這些最大像素值組成n×n大小的特征圖。
RoIPooling與RoIAlign在反向傳播過(guò)程也存在一定的差異,RoIPooling的反向傳播公式如式(1)[17]所示,而ROIAlign的反向傳播公式如式(2)[17]所示。
(1)
其中,xi表示池化前特征圖上的像素點(diǎn),yrj表示池化后的第r個(gè)候選區(qū)域的第j個(gè)點(diǎn),i*(r,j)表示yrj像素值的來(lái)源。
(2)
其中,i*(r,j)表示一個(gè)浮點(diǎn)數(shù)的坐標(biāo)位置,d(i,i*(r,j))表示兩點(diǎn)之間的距離,Δh和Δw表示xi與i*(r,j)橫縱坐標(biāo)的差值,然后作為雙線性內(nèi)插的系數(shù)乘在原始的梯度上。
全卷積網(wǎng)絡(luò)(FCN)的英文全稱是fully convolutional networks,它對(duì)圖像進(jìn)行像素級(jí)分類(lèi),以解決語(yǔ)義級(jí)圖像分割(semantic segmentation)問(wèn)題。在進(jìn)行圖片分類(lèi)時(shí),F(xiàn)CN可以輸入任意尺寸的圖像,使用反卷積層對(duì)最后一個(gè)卷積層的特征圖進(jìn)行上采樣,不斷擴(kuò)大特征圖的尺寸,直至它恢復(fù)到與輸入圖像相同的尺寸,繼而對(duì)每個(gè)像素都生成一個(gè)預(yù)測(cè),同時(shí)保留輸入圖像的空間信息,最終逐個(gè)像素計(jì)算softmax分類(lèi)損失,對(duì)上采樣的特征圖中每一個(gè)像素值進(jìn)行分類(lèi),從而提高圖像分類(lèi)準(zhǔn)確率[18]。
Mask R-CNN在Faster R-CNN為每個(gè)候選對(duì)象的感興趣區(qū)域提供類(lèi)標(biāo)簽和邊框偏移量?jī)蓚€(gè)輸出的基礎(chǔ)上,新增了一個(gè)分割mask的分支。mask分支是一個(gè)小的FCN,應(yīng)用在每一個(gè)感興趣區(qū)域,它在每一個(gè)感興趣區(qū)域上預(yù)測(cè)出一個(gè)大小為m×m的mask,使得mask分支中的每層都能夠明確地保持m×m的空間布局,避免將其用缺少空間維度的向量表示。
攝像頭采集圖片時(shí),是將三維物體投影到攝像頭的二維平面上。寬度為W的物體,經(jīng)過(guò)針孔平面投影到攝像頭成像平面之后的影像寬度為W1,針孔平面與成像平面的距離即攝像頭焦距為F,物體平面與針孔平面的距離設(shè)為D,那么利用三角形相似原理,根據(jù)式(3)就可以得到物體到攝像頭的距離。
(3)
測(cè)距實(shí)驗(yàn)原理如圖2所示。攝像頭在A點(diǎn)給目標(biāo)物體拍攝一張圖片,假設(shè)物體寬度為W,目標(biāo)物體在攝像頭成像平面上的投影寬度為W1,攝像頭的焦距為F,目標(biāo)物體與攝像頭鏡頭的距離為D,根據(jù)相似三角形原理,有式(4):
圖2 攝像頭成像原理
(4)
由式(4)可以推算出物體寬度的計(jì)算公式,即式(5):
(5)
攝像頭從A點(diǎn)向前移動(dòng)到C點(diǎn),移動(dòng)距離為D1,目標(biāo)物體在原地不動(dòng),目標(biāo)物體的寬度依然是W,攝像頭的焦距F不變。目標(biāo)物體在攝像頭成像平面上的投影寬度為W2,目標(biāo)物體與攝像頭鏡頭的距離設(shè)為D2,根據(jù)三角形相似原理,有式(6):
(6)
其中,D2=D-D1。
由式(6)同樣能夠得出目標(biāo)物體的寬度計(jì)算公式,即式(7):
(7)
因?yàn)槟繕?biāo)物體的寬度W是不變的,根據(jù)式(5)和式(7),可以計(jì)算出目標(biāo)物體與攝像頭鏡頭的距離D,如式(8):
(8)
文中的實(shí)驗(yàn)平臺(tái)為Ubuntu16.04,實(shí)驗(yàn)環(huán)境為:CPU,Intel(R) Core(TM)i5-7400 ,3.00 GHz×4;GPU,NVIDIA GeForce GTX 1080;軟件環(huán)境Python 2.7、Labelme、TensorFlow-GPU 1.1.0、Keras、OpenCV等。
水面障礙物識(shí)別共分為五個(gè)步驟,分別為:采集數(shù)據(jù)、標(biāo)注標(biāo)簽、轉(zhuǎn)換數(shù)據(jù)、訓(xùn)練數(shù)據(jù)、識(shí)別目標(biāo)。其過(guò)程如圖3所示。
圖3 水面障礙物種類(lèi)識(shí)別流程
原有的Mask R-CNN模型是由COCO數(shù)據(jù)集訓(xùn)練得到的,COCO數(shù)據(jù)集中一共有80種常見(jiàn)的物種類(lèi)別,但這80個(gè)類(lèi)別中并不包含文中需要測(cè)試識(shí)別的水面障礙物種類(lèi),如果直接調(diào)用此模型會(huì)出現(xiàn)誤檢、漏檢的情況,因此重新采集各類(lèi)水草和船只等樣本來(lái)訓(xùn)練新的Mask R-CNN模型。該實(shí)驗(yàn)以水面植物、船只等障礙物為實(shí)驗(yàn)數(shù)據(jù)集,從網(wǎng)絡(luò)上下載帶有水面障礙物的圖片共有630張,圖片的尺寸大小沒(méi)有限制,樣本示例如圖4所示。使用開(kāi)源軟件Labelme對(duì)樣本進(jìn)行標(biāo)注,每個(gè)樣本圖片中至少包含一個(gè)目標(biāo)物體,標(biāo)注的樣本示例如圖5所示。以連續(xù)且密集的點(diǎn)連線將目標(biāo)樣本的輪廓邊緣標(biāo)注出來(lái),并生成Json數(shù)據(jù)格式的文件,數(shù)據(jù)文件主要包括路徑名、樣本文件名、標(biāo)注類(lèi)別名、連接點(diǎn)坐標(biāo)、標(biāo)注樣本長(zhǎng)寬等數(shù)據(jù)。
圖4 水面障礙物樣本示例
圖5 水面障礙物樣本標(biāo)注示例
從數(shù)據(jù)集中隨機(jī)取556張圖片作為訓(xùn)練樣本,剩余74張圖片作為測(cè)試樣本,對(duì)訓(xùn)練樣本訓(xùn)練20萬(wàn)次后得到Mask R-CNN模型。在原有的74張測(cè)試樣本中添加額外16張包含水面障礙物和非水面障礙物的樣本圖片,基于Mask R-CNN模型對(duì)90張樣本進(jìn)行檢測(cè)識(shí)別。在90個(gè)測(cè)試樣本中,能夠檢測(cè)識(shí)別到的目標(biāo)有174個(gè),其中幾種典型的水面障礙物識(shí)別結(jié)果如圖6所示,不同類(lèi)型的障礙物用不同顏色的矩形框框出并標(biāo)出障礙物種類(lèi);統(tǒng)計(jì)測(cè)試樣本的識(shí)別準(zhǔn)確率和測(cè)試目標(biāo)的識(shí)別準(zhǔn)確率,結(jié)果如表1所示,測(cè)試樣本的準(zhǔn)確率達(dá)到88%以上,測(cè)試目標(biāo)的識(shí)別準(zhǔn)確率達(dá)到97%以上。
表1 目標(biāo)識(shí)別結(jié)果
對(duì)于識(shí)別到的174個(gè)目標(biāo)進(jìn)行結(jié)果分析,如表2所示,其中,水面障礙物的類(lèi)別被識(shí)別準(zhǔn)確的個(gè)數(shù)為166,水面障礙物和非水面障礙物被錯(cuò)誤識(shí)別的個(gè)數(shù)為8,水面障礙物識(shí)別的召回率為99.40%,精確率為95.95%。召回率表示的是Mask R-CNN模型檢測(cè)到目標(biāo)物體的能力,精準(zhǔn)率表示的是Mask R-CNN模型能夠?qū)⒛繕?biāo)物體識(shí)別準(zhǔn)確度。從數(shù)據(jù)上可以看出經(jīng)過(guò)訓(xùn)練的Mask R-CNN模型能夠?qū)⒑芎玫貦z測(cè)并識(shí)別水面障礙物。
表2 識(shí)別目標(biāo)分析
航行過(guò)程中,無(wú)人船以固定的速度和方向勻速向前行駛,截取攝像頭拍攝的第一張圖片后識(shí)別圖片中尺寸最大的障礙物的類(lèi)型并計(jì)算其寬度W1;一段時(shí)間后截取攝像頭拍攝的第二張圖片中框出障礙物的矩形框?qū)挾萕2,根據(jù)式(8)可以計(jì)算出攝像頭與前方障礙物的距離,具體實(shí)驗(yàn)結(jié)果如表3所示。攝像機(jī)與障礙物的實(shí)際距離為手動(dòng)測(cè)量,存在一定的誤差。
表3 測(cè)距結(jié)果
根據(jù)表中實(shí)驗(yàn)數(shù)據(jù),目標(biāo)物體與攝像頭之間的實(shí)際距離與測(cè)量距離的誤差都是小于5%,在允許誤差范圍之內(nèi)。該測(cè)距實(shí)驗(yàn)雖然是基于小孔成像原理利用相似三角形計(jì)算攝像頭與目標(biāo)物體的距離,但是與以往不同的是,測(cè)距過(guò)程中并不需要知道目標(biāo)物體的真實(shí)大小就能夠計(jì)算出攝像頭與障礙物之間的距離,計(jì)算簡(jiǎn)單方便,應(yīng)用前景廣泛。
該文利用深度學(xué)習(xí)和單目視覺(jué)的目標(biāo)識(shí)別與測(cè)距方法來(lái)檢測(cè)無(wú)人船前方水面障礙物的種類(lèi)和距離。實(shí)驗(yàn)結(jié)果表明,Mask R-CNN網(wǎng)絡(luò)模型能夠有效地對(duì)形狀各異的水面障礙物進(jìn)行識(shí)別,同時(shí)基于小孔成像原理的單目測(cè)距模型,與其他研究學(xué)者研究的此類(lèi)模型不同的是測(cè)距計(jì)算不需要知道目標(biāo)物體的真實(shí)大小,只需要知道無(wú)人船前進(jìn)的距離就能夠較為快速準(zhǔn)確地測(cè)量出障礙物距離。因此,該文研究的基于單目視覺(jué)的水面障礙物識(shí)別與測(cè)距方法,能夠有效地幫助無(wú)人船提高自主巡航能力。
由于Mask R-CNN深度學(xué)習(xí)網(wǎng)絡(luò)模型較為龐大,且文中在訓(xùn)練模型時(shí)的訓(xùn)練樣本規(guī)模較小,可能導(dǎo)致障礙物識(shí)別速度和精度仍然有提高的空間;測(cè)距模型的測(cè)量目標(biāo)單一,只計(jì)算距離信息沒(méi)有其他信息,例如方位坐標(biāo)信息。所以,今后的研究方向是進(jìn)一步提高M(jìn)ask R-CNN識(shí)別效率,在測(cè)距模型中新增測(cè)量目標(biāo)物體的方向坐標(biāo)等信息。