公開課精華 | 移動機器人視覺三維感知的現(xiàn)在與將來
本文總結(jié)于香港科技大學(xué)王凱旋博士關(guān)于移動機器人視覺三維感知的現(xiàn)在與將來的公開課,其中主要介紹了基于視覺的三維環(huán)境感知方案,包括傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。
1 深度感知的研究動機
感知周圍的環(huán)境是移動機器人的基本要求。而所謂的“環(huán)境”有很多層的含義,比如從相機獲取的色彩信息,但是這并不能直接告訴我們環(huán)境的幾何信息,例如前方是否有障礙物,路面是否平坦,也不能直接得到相關(guān)的語義信息,比如環(huán)境中有什么物體,屬于什么類別等等。而在本次分享中,我們會主要關(guān)注如何從相機中獲取物體的幾何信息。

幾何信息能給機器人的安全移動提供保證。機器人在移動的過程中需要避開障礙物,需要與物體交互。同時,我們也需要一些基本的場景重建,從而為人類的高級決策提供信息支持。
探究幾何信息有很多的傳感器供我們選擇,如雙目相機,RGBD相機。不同的傳感器有各自的特點和缺點:雙目相機兩目之間需要保證一定的基線長度,因此就需要占用更多的空間資源;RGBD相機在戶外或光照強的場景,其主動發(fā)出的信號通常會受到明顯的干擾,深度估計會因此失效;激光雷達受限于成本,質(zhì)量以及尺寸,很難在消費級產(chǎn)品中使用。
目前使用在無人機中的三維感知主流方案是雙目相機,因為它的成本低,并且其被動接受光信號的原理可以確保室內(nèi)和室外的穩(wěn)定使用。針對一些無人機小型化的需求,我們也會希望雙目相機的尺寸更小,但是對應(yīng)基線長度的縮短也會提高算法實現(xiàn)的難度。
Vins-mono這一突破性的方案使我們可以使用單目相機和imu就可以實現(xiàn)較精準的定位。因此,單目相機在定位問題上已經(jīng)能滿足我們的一定需求,那單目相機是否可以進一步完成飛機的三維重建任務(wù)呢?

回答是可以,但目前還限于靜態(tài)場景。從直覺的角度思考單目進行三維重建的可能性,我們在玩一些賽車游戲的時候,通過來自一個視角的觀察,就可以實現(xiàn)對環(huán)境的感知和對車的操控,說明單目的三維感知是可以實現(xiàn)的,而從理性的角度分析這個問題,單目相機和雙目相機沒有本質(zhì)的區(qū)別,對于單目相機,在機器人移動中,相機在不同時刻也是處于不同位置。因此,如果我們能找到特征點在不同時序圖片上的位置,我們就可以通過三角化的方法估計相機位置,但是不同時刻像素或者特征的數(shù)據(jù)關(guān)聯(lián),有時候也是個很難的問題。
總之,不管是單目還是雙目相機,相對于激光雷達和RGBD相機而言,信息密度非常高,并且有成本低的優(yōu)勢,算法的實現(xiàn)效果上限很高,因此視覺深度感知以及很多的潛力值得我們?nèi)ネ诰颉?/p>
2?深度感知的一般流程
關(guān)于深度感知的一般流程,首先我們獲得的是一系列的圖像序列,vins算法會根據(jù)這些圖像推算機器人的空間位置,而深度估計模塊則會推斷每一個像素相對于相機的距離,也就是所謂的深度圖,它會和輸入圖像有相同的尺寸,每一個像素包含距離信息,接著,深度圖會被轉(zhuǎn)化為全局的三維地圖,而三維地圖有很多的表達方式,比如八叉樹,tsdf等方式。接著,三維模型可被用來執(zhí)行路徑規(guī)劃等下游任務(wù)。

針對深度圖估計,首先,我們需要找到對應(yīng)點,然后三角化估計深度。但是對應(yīng)點的尋找在沒有紋理或者有大量重復(fù)紋理的場景都會給特征匹配帶來很大的困難。造成這個問題的原因是算法往往對于場景只關(guān)注局部的特征,缺乏整體的感知,而不像人類一樣從全局特征出發(fā)。
為了解決這個問題,在2011的論文 Dense Tracking and Mapping in Real-Time中,作者提出了從圖像序列中估計出深度的方法。它的核心就是利用代價體積cost volume這一概念建立損失函數(shù),同時考慮每個像素自身的匹配誤差以及全局的平滑性,優(yōu)化整體的代價函數(shù)進而得到深度圖。
那么該如何去構(gòu)建代價體積呢?首先為了保證實時性,我們需要從一系列拍攝的圖片中進行篩選,而篩選得到的位置如果距離太遠或者太近都不是理想的觀測。此外,連續(xù)的圖像往往觀測的是同一場景,必然存在大量信息的冗余。如何利用這些信息進行降噪,去除異常點等也是一個值得思考的問題。
這里的介紹一個方法是利用深度濾波(depth filter)。它的引入就是就是為了解決剛剛提到的兩個問題,如何去選擇參考幀以及如何去融合深度圖。關(guān)于深度濾波,他首先需要實現(xiàn)“跟蹤”,也就是建立起不同幀圖像像素的關(guān)聯(lián),記錄下同一特征點在各幀的相對位置,并且生成Age-map來記錄同一點被觀測的時間,進而建立代價體積,和之前幀的信息相融合。通過時序融合,我們可以實現(xiàn)對于物體深度更穩(wěn)定準確的估計,并且可以實現(xiàn)對于噪聲和異常點的去除。

第二個要介紹的工作是關(guān)于深度圖提取算法的優(yōu)化。我們注意到深度圖中很多場景,比如白墻,高分辨率的圖像并不能帶來更精確的深度信息,那么該如何合理的分配算力,分別給值得優(yōu)化的像素以及沒有優(yōu)化必要的像素呢?這里用到的是一種四叉樹的數(shù)據(jù)結(jié)構(gòu),這種樹狀結(jié)構(gòu)將會在前后景交接以及紋理分布的細節(jié)區(qū)域展開更多的分支,提取出每個像素適合優(yōu)化的分支節(jié)點進一步優(yōu)化深度。

關(guān)于傳統(tǒng)方法,有些問題是無法回避的,比如有很多需要手動調(diào)試的參數(shù),又比如很多工作是基于場景平滑性(smoothness-term)的假設(shè),但是在前后景交接處,或者一些深度突然變化的場景,平滑性是否是一個很好的假設(shè),是值得商榷的。尤其是對一些邊緣的處理,我們希望保持它們的狀態(tài),而不是過度的平滑。而且,它的解空間非常大,針對每個像素分別進行處理會造成估算的計算量非常大。
3?基于學(xué)習(xí)的深度感知
面對傳統(tǒng)方法的不足,我們自然會考慮用深度神經(jīng)網(wǎng)絡(luò)去解決問題。
神經(jīng)網(wǎng)絡(luò)是基于數(shù)據(jù)驅(qū)動的方法,相比于傳統(tǒng)方案,它更好地引入了語義信息,在傳統(tǒng)方案中,平滑項的調(diào)整只能根據(jù)梯度和大量調(diào)參,而在深度學(xué)習(xí)的方案中,我們就可以讓網(wǎng)絡(luò)自己去判斷平滑項的大小。此外,通過了解可利用的算力大小,我們可以此為依據(jù)設(shè)計網(wǎng)絡(luò)進行優(yōu)化,達到精度與效率的平衡。
在基于深度學(xué)習(xí)的方案中,MVDepthNet是一個類似U-Net的網(wǎng)絡(luò),通過一系列卷積層將代價體積最后轉(zhuǎn)換為深度圖。而在訓(xùn)練時,我們也可以通過RGBD得到的深度值來訓(xùn)練網(wǎng)絡(luò)。此外MVDepthNet通過顯式的引入代價體積可以更有效的利用多視角的觀測。

另一個要介紹的深度學(xué)習(xí)方案叫Geometric-pretraining。它的工作出發(fā)點是考慮到深度網(wǎng)絡(luò)的訓(xùn)練過程中,我們總是需要RGBD數(shù)據(jù)。而此前的相關(guān)工作在進行深度估計時,通常基于的假設(shè)是場景中的物體都是靜止的,但是這在駕駛場景中很明顯是不成立的。
所以在Geometric-pretraining這個工作中,所基于的假設(shè)就是場景中可能存在動態(tài)物體。在網(wǎng)絡(luò)中,通過運動編碼器(motion encoder),我們以連續(xù)幀的圖片作為輸入,得到一個包含運動信息的向量。此外,通過單幀的圖像作為輸入,我們還可以利用結(jié)構(gòu)編碼(structure encoder)得到圖像中的結(jié)構(gòu)信息,通過結(jié)合結(jié)構(gòu)信息和運動信息,我們就可以得到場景中的光流信息。我們把訓(xùn)練好的結(jié)構(gòu)編碼器在monodepth任務(wù)上進行微調(diào),就可以得到一個泛化性更好的網(wǎng)絡(luò)。

4?深度圖的融合策略
接下來我們來討論一下深度圖該如何融合。
在機器人領(lǐng)域,我們希望深度圖的融合占用較小的計算量,并能實現(xiàn)實時的效果。為了展現(xiàn)融合效果,TSDF方案通過把三維空間劃分成很多小格子存儲表面信息,這在相對簡單的場景是沒有問題的。但是在較復(fù)雜的場景,當發(fā)生回環(huán)等情況時,TSDF生成的三維圖就會出現(xiàn)鬼影等錯誤。
為了解決這種問題,保證在回環(huán)的同時會對地圖更新主要有基于體素和基于點云的兩類方法,采用體素的方法一般分為chunk-based和BundleFusion兩種方式,但是第一種方法需要人工依靠經(jīng)驗的調(diào)參,而第二種方法則不能保證高效性。
而基于點云的方案會把場景表達成一個個無序的點,比較著名的方案有ElasticFusion。在我們的工作Surfel fusion中,我們把點云與vins系統(tǒng)的位姿圖直接關(guān)聯(lián),當位姿圖發(fā)生回環(huán)檢測時,3D圖也會相應(yīng)變化調(diào)整。

5?未來的發(fā)展機遇
最后我們來聊一下未來的發(fā)展機遇。
第一個趨勢是關(guān)于單目相機的深度估計(monodepth),傳統(tǒng)的基于多視角幾何的估計方案通常依賴系統(tǒng)的內(nèi)外參等標定信息,并且通過基于場景中都是靜態(tài)物體的假設(shè)進行估計,但這在很多場景下是無法滿足的。
此外,以往我們希望圖像的分辨率越高越好,但是高分辨率帶來的增益卻并不是線性增加的。而目前研究的主要進展包括通過與多視角幾何的結(jié)合,改善網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計,以及尋求對于特殊格式數(shù)據(jù)的應(yīng)用。
不過,個人認為最重要的還是對于動態(tài)物體的處理,因為動態(tài)物體是很多三維場景都存在并且相當重要的一部分。盡管目前來看還缺乏有效的理論指導(dǎo),但是一些論文已經(jīng)展示了一些有效的成果。
第二個趨勢就是隱式二維表達,不像傳統(tǒng)的用像素數(shù)量的信息表達深度圖,我們希望把數(shù)據(jù)進一步壓縮(128維的向量)來表達場景中的獨立特征,這樣可以有效降低自有變量的數(shù)目。
但是,這種思路的難點在于如何確保在隱式編碼(Latent Code)中的表達能力,目前的表達通常是線性的形式,線性的表達能力是相對較低的,如何轉(zhuǎn)化為非線性的表達是一個值得思考的問題。此外,如何保證映射的泛化能力也是我們需要關(guān)心的。
希望這次的講座內(nèi)容對各位的研究和工作有所幫助和啟發(fā)!
?感謝深藍學(xué)員何常鑫同學(xué)的整理,非常感謝王凱旋博士對本文章的審核與修改。
點擊鏈接即可觀看公開課:https://www.bilibili.com/video/BV18v411V7DA/