許 鮮,陳 寧,陳玉鵬
(集美大學(xué)海洋裝備與機(jī)械工程學(xué)院,福建 廈門 361021)
隨著計(jì)算機(jī)視覺技術(shù)的發(fā)展,平面位姿估計(jì)在機(jī)器人技術(shù)、增強(qiáng)現(xiàn)實(shí)和虛擬現(xiàn)實(shí)、船舶海上作業(yè)等領(lǐng)域的應(yīng)用越來越廣泛[1-5]。盡管在過去幾十年中,已經(jīng)出現(xiàn)了很多平面位姿估計(jì)的方法,但是在快速準(zhǔn)確和適應(yīng)性方面還有很大的提升空間,尤其是對缺少紋理表面的平面目標(biāo)而言。
平面位姿估計(jì)的目的是檢測平面并估計(jì)其平移和旋轉(zhuǎn)。傳統(tǒng)視覺平面位姿估計(jì)通常分為兩類。1)基于特征的方法[6-7],計(jì)算一組三維點(diǎn)和二維投影之間的對應(yīng)關(guān)系,得到相機(jī)與平面之間的相對位置和方向,比如通過在平面物體上添加特定標(biāo)志物,使用相機(jī)對特定標(biāo)志物進(jìn)行定位和檢測,實(shí)現(xiàn)檢測非接觸式的平面位姿檢測,其中比較成熟的方法有Aruco[8],Apriltag[9]等。然而這些方法精度易受場景限制,依賴于特定的特征,這些特征對圖像變化和遮擋對不確定因素等的魯棒性較差。2)基于模板匹配的直接方法[10],將姿態(tài)估計(jì)問題簡化為模板匹配問題,通過優(yōu)化參數(shù)來估計(jì)姿態(tài),觀察目標(biāo)圖像的剛性變換,但是這些模板匹配方法的主要缺點(diǎn)是,當(dāng)仿射或者單應(yīng)變換空間與姿態(tài)空間之間未對準(zhǔn)時,容易產(chǎn)生額外的附加姿態(tài)誤差。
隨著深度學(xué)習(xí)對場景理解能力的增強(qiáng),基于深度學(xué)習(xí)的位姿估計(jì)方法實(shí)現(xiàn)了精度、實(shí)時性和魯棒性更好的位姿估計(jì)結(jié)果。Rad等[11]提出BB8網(wǎng)絡(luò),從單張RGB圖像預(yù)測目標(biāo)3D邊框的2D投影,并使用PnP算法解算出目標(biāo)3D位姿;Kehl等[12]提出了SSD-6D網(wǎng)絡(luò),使用合成數(shù)據(jù)集進(jìn)行訓(xùn)練,將SSD用于三維實(shí)例檢測和6D位姿估計(jì),獲得更好的實(shí)時性;Xiang等[13]提出PoseCNN網(wǎng)絡(luò),可以在雜亂場景中實(shí)現(xiàn)精確的物體6D姿態(tài)估計(jì);Sida等[14]提出PVNet網(wǎng)絡(luò),從單張RGB圖像預(yù)測目標(biāo)的語義分割和物體關(guān)鍵點(diǎn)的向量場,使用隨機(jī)投票算法計(jì)算出目標(biāo)的關(guān)鍵點(diǎn),并使用PnP算法解算出目標(biāo)6D位姿;Chen等[15]提出DenseFusion網(wǎng)絡(luò),在像素級別嵌入和融合顏色和深度信息,以估計(jì)RGB-D圖像中已知物體的6D位姿。然而現(xiàn)有大多數(shù)基于深度學(xué)習(xí)的位姿估計(jì)方法需要已知目標(biāo)的三維模型,且網(wǎng)絡(luò)的泛化性較差,很難實(shí)現(xiàn)未知模型的平面位姿估計(jì)。
最近的一些使用深度學(xué)習(xí)的平面重建方法可以從單幅RGB圖像中檢測平面實(shí)例分割、深度及法線信息。Liu等[16]提出了一種端到端的深度神經(jīng)網(wǎng)絡(luò)PlaneNet,從單幅RGB圖像中推算平面參數(shù)及其對應(yīng)的平面分割掩碼;Yang等[17]提出一種針對室外場景的非監(jiān)督學(xué)習(xí)方法PlaneRecover,預(yù)測平面實(shí)例分割及其平面參數(shù)。但PlaneNet和PlaneRecover兩者都需要事先給出單個圖像中的最大平面數(shù),并且跨域的泛化能力較差。為了解決上述問題,Liu等[18]提出基于MaskRCNN的平面重建網(wǎng)絡(luò)PlaneRCNN,可以從單個RGB圖像中檢測出小的平面區(qū)域并重建分段平面深度圖;Yu等[19]提出了平面重建網(wǎng)絡(luò)PlanarReconstruction,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)得到每像素的嵌入映射,再使用聚類算法對嵌入向量分組得到任意數(shù)量的平面實(shí)例,通過平面參數(shù)預(yù)測分支得到平面參數(shù)。受這些工作的啟發(fā),本文使用基于深度學(xué)習(xí)的方法進(jìn)行平面分割和法線估計(jì),并經(jīng)過位姿解算實(shí)現(xiàn)單個RGB圖像的平面位姿估計(jì),解決傳統(tǒng)視覺位姿估計(jì)需要添加特定標(biāo)志物和現(xiàn)有深度學(xué)習(xí)位姿估計(jì)算法需要已知物體三維模型的問題。
基于實(shí)驗(yàn)需求搭建一套平面位姿估計(jì)實(shí)驗(yàn)系統(tǒng),如圖1所示,包括六自由度運(yùn)動模擬系統(tǒng)和視覺檢測系統(tǒng)。其中:六自由度運(yùn)動模擬系統(tǒng)通過輸入設(shè)定的運(yùn)動方程模擬需要的六自由度運(yùn)動;視覺檢測系統(tǒng)通過相機(jī)可以獲得其安裝視野下的彩色RGB圖像,通過單目視覺位姿檢測算法檢測出目標(biāo)位姿,可對位姿估計(jì)效果進(jìn)行驗(yàn)證。
本文的目標(biāo)是從單個RGB圖像推斷平面實(shí)例和平面位姿,算法框架如圖2所示。在第一個階段,使用多分枝的編碼器-解碼器網(wǎng)絡(luò)共同預(yù)測單圖像平面實(shí)例和法線。基于ScanNet[20]數(shù)據(jù)集生成平面實(shí)例數(shù)據(jù)集,并進(jìn)行訓(xùn)練,輸入單張RGB圖像,采用編碼器-解碼器網(wǎng)絡(luò)獲得每個像素的關(guān)聯(lián)嵌入向量,使用均值漂移算法對嵌入向量進(jìn)行聚類,得到平面實(shí)例分割;共享編碼特征進(jìn)行平面參數(shù)分支解碼,得到每個像素的法線信息。第二個階段,對獲得的平面掩碼和法線進(jìn)行位姿解算,獲得平面的位姿,對實(shí)例分割和法線進(jìn)行位姿解算,得到每個平面實(shí)例的位姿信息,最后通過實(shí)驗(yàn)對基于深度學(xué)習(xí)的平面位姿估計(jì)算法的可行性進(jìn)行驗(yàn)證。
用于平面位姿估計(jì)的深度學(xué)習(xí)算法需要大量數(shù)據(jù)集進(jìn)行訓(xùn)練,同時平面區(qū)域在圖像中可能具有復(fù)雜的邊界,手動標(biāo)注這些區(qū)域非常耗時,并且不能保證對數(shù)據(jù)集提供精確的位姿標(biāo)注。為了避免繁瑣的手動標(biāo)注過程,可以使用模型擬合算法,將現(xiàn)有RGB-D數(shù)據(jù)集中的每像素深度圖轉(zhuǎn)換為平面實(shí)例標(biāo)注,使用PlaneNet生成的ScanNet數(shù)據(jù)集[20]訓(xùn)練并評估該方法,通過將平面擬合到ScanNet的合并網(wǎng)格并將其投影回各個框架,可以獲取真實(shí)值。生成過程還包含來自ScanNet的語義注釋,結(jié)果數(shù)據(jù)集包含50 000個訓(xùn)練圖像和760張測試圖像,分辨率為256 px×192 px,數(shù)據(jù)集含有深度信息,并具有平面實(shí)例分割標(biāo)記及平面法線信息。
平面位姿估計(jì)算法采用一種編碼器-解碼器的網(wǎng)絡(luò)結(jié)構(gòu),如圖3所示。
其中:C為卷積層;P為池化層。輸入單張RGB圖像,編碼器使用ResNet101-FPN網(wǎng)絡(luò),解碼器分別為平面/非平面語義分割,關(guān)聯(lián)嵌入向量和平面參數(shù)解碼,三個分支共享相同的高級特征映射。C1~C5采用自下向上的通路,即普通卷積特征自底向上逐層濃縮表達(dá)特征的過程。此過程低層表達(dá)邊緣等較淺層次的圖片信息特征,較高層表達(dá)較深層次的圖片特征,如物體輪廓、類別等。P1~P5采用自上至下的通路,處理每一層信息時會參考上一層的高維信息作為輸入。上層特征輸出的特征圖尺寸小但感受野更大,高維信息經(jīng)實(shí)驗(yàn)證實(shí)能夠?qū)罄m(xù)的目標(biāo)檢測、物體分類等任務(wù)發(fā)揮關(guān)鍵作用。解碼器網(wǎng)絡(luò)采用1×1卷積,可有效降低中間層次的通道數(shù)量,使輸出不同維度的各個特征圖有相同的通道數(shù)量。平面參數(shù)解碼分支得到法線估計(jì)結(jié)果,結(jié)合平面/非平面語義分割和平面參數(shù)解碼,使用均值漂移聚類算法對嵌入向量解碼進(jìn)行聚類,得到平面實(shí)例分割結(jié)果。深度學(xué)習(xí)算法的網(wǎng)絡(luò)輸出為法線估計(jì)和實(shí)例分割。
對平面/非平面分割解碼器,由于平面/非平面分割區(qū)域在人為環(huán)境下不平衡,因此采用式(1)所示的平衡交叉熵?fù)p失函數(shù)。
(1)
其中:F和B分別是前景(平面)和后景(非平面)像素點(diǎn)集;pi是第i個像素屬于前景的概率;ω是前景和后景像素點(diǎn)數(shù)的比值。
平面嵌入解碼器采用關(guān)聯(lián)嵌入的思想,為每個像素預(yù)測一個嵌入向量,采用式(2)中的判別損失函數(shù),其中“拉”損失將每個嵌入拉到對應(yīng)實(shí)例的平均嵌入,而“推”損失將實(shí)例中心彼此推開,使同一平面實(shí)例中的像素比不同平面中的像素更接近。由于圖像中平面實(shí)例的數(shù)量不是先驗(yàn)已知的,采用均值漂移聚類算法將得到的嵌入向量分組成平面實(shí)例。標(biāo)準(zhǔn)均值漂移算法在每次迭代中對所有像素嵌入向量進(jìn)行兩兩距離計(jì)算,計(jì)算復(fù)雜度較大。為了解決實(shí)時性,PlanarReconstruction在聚類開始時過濾掉局部密度較低的錨點(diǎn),并提出了均值漂移聚類的一個快速版本,只移動嵌入空間中的少量錨點(diǎn),并將每個像素分配給最近的錨點(diǎn)。聚類算法收斂后,形成聚類,每個聚類對應(yīng)一個平面實(shí)例,聚類中心是這個聚類中錨點(diǎn)的平均值。
LE=Lpull+Lpush。
(2)
其中:
(3)
(4)
其中:C是標(biāo)準(zhǔn)的聚類(平面)的數(shù)量;NC是每個聚類中元素的數(shù)量;xi是像素嵌入;μc是聚類C的平均嵌入;δv和δd分別是拉損失和推損失邊界。如果嵌入的像素是容易分離的,即類內(nèi)實(shí)例的距離大于δd或嵌入向量及其中心之間的距離小于δv,懲罰是零,否則懲罰將大幅增加。
平面參數(shù)分支推斷圖像每個像素點(diǎn)的平面參數(shù),即點(diǎn)的法向量,使用式(5)中的L1損失即L1范數(shù)損失函數(shù),也被稱為最小絕對值偏差,是目標(biāo)值與估計(jì)的絕對差值的均值。
(5)
已知同一平面上單位法線相等且滿足平面公式(6)。
nT·Q=1。
(6)
其中:n為平面法線,為單位法線矢量(M)除以平面偏距(d),即n=M/d;Q為平面像素點(diǎn)3維坐標(biāo)。
由此先驗(yàn)知識,使用如式(7)所示損失函數(shù),使同一平面實(shí)例上法線相等。
(7)
(8)
其中:α、β分別為繞x、y軸的轉(zhuǎn)動角;[tx,ty,tz]T為平移矢量。
在相機(jī)坐標(biāo)系中,平面公式滿足式(9)。
nx·xc+ny·yc+nz·zc=1。
(9)
在理想針孔模型下,攝像機(jī)的成像模型齊次坐標(biāo)投影關(guān)系為:
(10)
其中:fx,fy為焦距;cx,cy為圖像中心與像素坐標(biāo)系原點(diǎn)像素偏差;R,T分別為旋轉(zhuǎn)矩陣和平移矩陣,M1,M2分別為攝像頭的內(nèi)參矩陣和外參矩陣;[uv]為像素坐標(biāo)系下坐標(biāo)點(diǎn);[xcyczc]為相機(jī)坐標(biāo)系下坐標(biāo)點(diǎn);[xwywzw]為世界坐標(biāo)系下坐標(biāo)點(diǎn)。
由式(10)和式(11)可得相機(jī)坐標(biāo)系下坐標(biāo)點(diǎn)為[xcyczc]。
(11)
聯(lián)立兩式解得:tx=x0;ty=y0;tz=z0;α=arcsin (ny);β=arctan(-nx/nz)。代入式(8)可解得M2,得到平面的位姿。
首先對平面重建網(wǎng)絡(luò)進(jìn)行復(fù)現(xiàn)和對比,在此基礎(chǔ)上選擇泛化性更好的平面重建網(wǎng)絡(luò)架構(gòu)。然后使用選定的平面重建網(wǎng)絡(luò)進(jìn)行平面實(shí)例分割和法線估計(jì),在ScanNet數(shù)據(jù)集上對平面實(shí)例分割和法線估計(jì)的結(jié)果進(jìn)行量化分析和評估。最后在ScanNet數(shù)據(jù)集上對平面位姿估計(jì)的結(jié)果進(jìn)行對比分析,并在NYU數(shù)據(jù)集和平面位姿估計(jì)實(shí)驗(yàn)系統(tǒng)上進(jìn)行驗(yàn)證。使用PyTorch來實(shí)現(xiàn)本文的模型。服務(wù)器平臺配置:Intel(R) Core(TM) i7-7700K CPU@4.2GHz處理器,16 GB內(nèi)存,1T盤,8GB Geforce GTX 1070 GPU。
平面重建網(wǎng)絡(luò)PlaneRCNN和PlanarReconstruction均使用ScanNet數(shù)據(jù)集進(jìn)行訓(xùn)練,并使用NYU數(shù)據(jù)集和用戶圖片對兩者的訓(xùn)練結(jié)果進(jìn)行測試,測后對比結(jié)果如圖5所示。由圖5可見,PlaneRCNN對小平面的檢測結(jié)果較好,但會誤識別多余的小平面。相比之下,PlanarReconstruction對小平面的檢測效果較差,但能夠檢測出較完整的平面,該網(wǎng)絡(luò)對平面實(shí)例的檢測具有更好的泛化性。因此本文嘗試在平面重建網(wǎng)絡(luò)PlanarReconstruction基礎(chǔ)上進(jìn)行平面位姿估計(jì)。
圖6為在ScanNet數(shù)據(jù)集上的平面實(shí)例分割結(jié)果,與真實(shí)平面實(shí)例分割相比,基本能得到數(shù)量和形狀一致的平面分割結(jié)果。平面召回率是正確預(yù)測標(biāo)準(zhǔn)平面的百分比,像素召回率是正確預(yù)測平面內(nèi)像素的百分比,因此,本文使用平面和像素召回率作為評價指標(biāo)。標(biāo)準(zhǔn)平面預(yù)測指標(biāo):ⅰ)其中一個預(yù)測平面交并比(IOU,Intersection over Union)得分大于0.5;ⅱ)重疊區(qū)域平均深度差小于閾值,該閾值從0.05 m到0.60 m不等,增量為0.05 m,則認(rèn)為標(biāo)準(zhǔn)平面預(yù)測正確。實(shí)驗(yàn)中,通過該指標(biāo)進(jìn)行判定得到算法的平面和像素召回率,圖7為在ScanNet測試數(shù)據(jù)集上的平面召回率(藍(lán)色)和像素召回率(黑色),可以看出測試集上平面召回率平均值為0.625,像素召回率平均值為0.773。
法線估計(jì)的準(zhǔn)確性是平面位姿估計(jì)準(zhǔn)確率的關(guān)鍵因素。根據(jù)研究,平面法線召回率是正確預(yù)測標(biāo)準(zhǔn)平面法線的百分比,像素召回率是正確預(yù)測法線的平面內(nèi)像素的百分比。其中平面法線預(yù)測指標(biāo)為:ⅰ)其中一個預(yù)測平面交并比(IOU)得分大于0.5;ⅱ)預(yù)測法線與真實(shí)法線夾角小于閾值,該閾值從0到30°不等,增量為2.5°,則認(rèn)為平面法線預(yù)測正確。實(shí)驗(yàn)中,通過該指標(biāo)進(jìn)行判定,得到算法的平面和像素法線召回率。
如圖8為在ScanNet測試數(shù)據(jù)集上的平面法線召回率(藍(lán)色)和像素法線召回率(黑色),可以看出平面法線召回率平均值為0.414,像素法線召回率為0.328。
表1為在ScanNet測試數(shù)據(jù)集上的深度預(yù)測準(zhǔn)確率,其均方根誤差為0.039 m。由圖8和表1可以看出,相比平面實(shí)例分割效果,基于單圖像的平面法線預(yù)測精度還有較大提升空間。
表1 在ScanNet測試集上的深度預(yù)測準(zhǔn)確率Tab.1 Accuracy of depth prediction onScanNet test setAbs_RelSq_RelRMSERMSE_log0.096310.64020.03930.1239
使用位姿解算算法對平面實(shí)例分割和法線估計(jì)進(jìn)行位姿解算,在ScanNet數(shù)據(jù)集上的平面位姿估計(jì)結(jié)果如圖9所示。
其中:第2列為使用深度學(xué)習(xí)預(yù)測的平面實(shí)例分割和法線估計(jì)解算的平面位姿,第3列為使用數(shù)據(jù)集中真實(shí)平面實(shí)例分割和法線信息解算的平面位姿。圖9中,每個平面實(shí)例中心處均標(biāo)記解算得到的平面坐標(biāo)系,紅綠藍(lán)顏色的坐標(biāo)軸分別為x,y,z軸。本文采用的平面位姿估計(jì)計(jì)算法在簡單場景下的位姿估計(jì)結(jié)果基本與真實(shí)值一致。
圖10為在用戶圖片和NYU數(shù)據(jù)集上的平面位姿檢測結(jié)果,可以看出位姿估計(jì)結(jié)果仍具有一定參考性。
實(shí)驗(yàn)中在ScanNet數(shù)據(jù)集上預(yù)測每張圖片平面位姿平均用時0.0545 s,實(shí)時性為18.5 f/s,基本滿足實(shí)時性要求。
本文研究了基于深度學(xué)習(xí)的平面位姿檢測算法,采用編碼器-解碼器網(wǎng)絡(luò)從單個RGB圖像中檢測平面實(shí)例分割及法線信息,對每個平面進(jìn)行位姿解算,從而獲得其實(shí)時位姿。實(shí)驗(yàn)結(jié)果表明,在ScanNet測試數(shù)據(jù)集上的平面召回率為0.625,平面法線召回率為0.414,實(shí)時性為18.5 f/s。同樣在NYU和用戶自制的RGB圖上平面分割效果較好,但基于單圖像的平面法線預(yù)測準(zhǔn)確率較差,平面位姿估計(jì)效果有待提高。同時還表明,基于深度學(xué)習(xí)的RGB圖像平面位姿檢測方法是可行的,但平面檢測效果尤其是單圖像法線和深度估計(jì)的準(zhǔn)確率有待進(jìn)一步提升。未來改進(jìn)平面位姿檢測的工作應(yīng)該集中在研究更魯棒的實(shí)例分割和法線估計(jì)算法,嘗試多視圖、多傳感器融合等方法來提高平面位姿估計(jì)的準(zhǔn)確率。