0. 筆者個(gè)人體會(huì)
深度學(xué)習(xí)在其他CV領(lǐng)域可以說已經(jīng)完全碾壓了傳統(tǒng)圖像算法,例如語義分割、目標(biāo)檢測、實(shí)例分割、全景分割。但是在VSLAM領(lǐng)域,似乎還是ORB-SLAM3、VINS-Fusion、DSO、SVO這些傳統(tǒng)SLAM算法占據(jù)領(lǐng)導(dǎo)地位。那么這背后的原因是什么?基于深度學(xué)習(xí)的VO目前已經(jīng)發(fā)展到了什么程度?
本文將帶領(lǐng)讀者探討基于學(xué)習(xí)的VO難以訓(xùn)練的真正原因,并分析幾個(gè)目前SOTA的學(xué)習(xí)VO,深入淺出理解基于學(xué)習(xí)的VO和傳統(tǒng)VSLAM算法之間的區(qū)別是什么。當(dāng)然筆者水平有限,如果有不同見解歡迎大家一起討論,共同學(xué)習(xí)!
1. 為什么基于學(xué)習(xí)的VO很難超過傳統(tǒng)VSLAM?
最早的基于學(xué)習(xí)的VO應(yīng)該是2017年ICRA論文“DeepVO: Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks”,這個(gè)架構(gòu)也非常直觀,就是將圖片序列利用CNN提取特征,然后借助RNN輸出位姿。之后它們團(tuán)隊(duì)也在2018年ICRA發(fā)表了“End-to-end, sequence-to-sequence probabilistic visual odometry through deep neural networks”,提出了DeepVO的改進(jìn)版本ESP-VO,但可以看出它們?cè)谝恍﹫鼍暗男Ч€是不太好的。
我認(rèn)為基于學(xué)習(xí)的VO之所以失敗,主要有六點(diǎn)原因。
首先就是數(shù)據(jù)量的問題,深度學(xué)習(xí)是非常吃數(shù)據(jù)的。
模型越大,想讓網(wǎng)絡(luò)權(quán)重收斂所需的數(shù)據(jù)規(guī)模也就越大。近些年隨著Transformer的橫空出世,深度網(wǎng)絡(luò)的參數(shù)量幾乎是呈幾何倍數(shù)增長,動(dòng)不動(dòng)就出現(xiàn)上億參數(shù)的大模型。
但目前VSLAM的評(píng)估場景主要是KITTI (22個(gè)序列)、EuRoC (11個(gè)序列)和TUM (24個(gè)序列)這三個(gè)數(shù)據(jù)集。
即使是三個(gè)數(shù)據(jù)集加起來,也沒有ImageNet這一個(gè)數(shù)據(jù)集大。因此想使用深度學(xué)習(xí)直接定位建圖的話,模型根本喂不飽,訓(xùn)練就顯得非常困難。
但僅僅如此嗎?
如果只是數(shù)據(jù)集規(guī)模的問題,那直接在車上放一個(gè)攝像頭,開車出去采個(gè)十幾萬張圖片不就可以輕松解決問題了嗎?或者說根本不需要自己采集數(shù)據(jù)集,直接使用其他CV領(lǐng)域的數(shù)據(jù)集,比如伯克利自動(dòng)駕駛BDD數(shù)據(jù)集里面有10萬個(gè)視頻序列,不一樣可以用嗎? 這里就需要說到另一個(gè)很少有人關(guān)注的點(diǎn),就是空間位姿中的主成分問題。
KITTI數(shù)據(jù)集是用無人車采集的,EuRoC是用無人機(jī)采集的,TUM是用手持相機(jī)采集的。這里不可避免得就涉及到六個(gè)自由度的分布問題,顯然KITTI數(shù)據(jù)集中的位姿基本都是繞Z軸的旋轉(zhuǎn)和水平方向的平移(顯然車不可能無緣無故翻滾和上升),EuRoC和TUM數(shù)據(jù)集中的位姿也是繞Z軸的旋轉(zhuǎn)和水平方向的平移占主導(dǎo)(這個(gè)也很容易理解,錄制視頻的時(shí)候也很難有特別復(fù)雜的雜技運(yùn)動(dòng))。
這是什么意思呢?
就是說,目前SLAM算法中常用的數(shù)據(jù)集,基本上只有兩個(gè)方向的運(yùn)動(dòng),其他4個(gè)自由度的運(yùn)動(dòng)很少或基本為0。這就導(dǎo)致基于學(xué)習(xí)的方法在訓(xùn)練過程中,只能學(xué)習(xí)到繞Z軸的旋轉(zhuǎn)和水平方向的平移這兩個(gè)方向的運(yùn)動(dòng),其他4個(gè)方向很難得到充分學(xué)習(xí)。不僅如此,其他4個(gè)方向還會(huì)帶來大量噪聲,導(dǎo)致本來學(xué)好的位姿也不準(zhǔn)了!
第三點(diǎn)原因也相當(dāng)重要,就是圖像分辨率和內(nèi)參的問題!深度模型在訓(xùn)練之前,輸入數(shù)據(jù)會(huì)統(tǒng)一Resize為固定的大小,也就是說基于學(xué)習(xí)的VO在訓(xùn)練過程中學(xué)到的是這一固定分辨率下的位姿估計(jì)結(jié)果。
當(dāng)網(wǎng)絡(luò)換一個(gè)數(shù)據(jù)集進(jìn)行測試的時(shí)候,由于圖片分辨率變了,網(wǎng)絡(luò)沒學(xué)習(xí)過這種設(shè)置下的位姿,所以輸出結(jié)果非常受影響。但是傳統(tǒng)SLAM算法不會(huì)有這種問題,因?yàn)樗峭耆趯?duì)極幾何和PNP進(jìn)行求解的,即使換一個(gè)數(shù)據(jù)集,結(jié)果也不會(huì)受到太大影響。
第四點(diǎn)原因,就是所有單目算法都會(huì)面臨的尺度模糊問題。單目算法的尺度不確定性在此不做過多贅述。需要注意的是,基于學(xué)習(xí)的VO在一個(gè)數(shù)據(jù)集上會(huì)學(xué)習(xí)到這個(gè)數(shù)據(jù)集所對(duì)應(yīng)的尺度,這個(gè)尺度還是一個(gè)相對(duì)尺度。當(dāng)我們希望將網(wǎng)絡(luò)遷移到另一個(gè)數(shù)據(jù)集時(shí),由于這個(gè)尺度變化,會(huì)導(dǎo)致網(wǎng)絡(luò)估計(jì)出的位姿非常不準(zhǔn)。
第五,基于學(xué)習(xí)的VO很難實(shí)現(xiàn)回環(huán)檢測。
熟悉ORB-SLAM3的同學(xué)知道,ORB-SLAM3中是存在短期、中期、長期、多地圖這四種數(shù)據(jù)關(guān)聯(lián)的。短期數(shù)據(jù)關(guān)聯(lián)對(duì)應(yīng)跟蹤線程,也是大多數(shù)VO使用的唯一數(shù)據(jù)關(guān)聯(lián)類型,一旦地圖元素從視野中消失,就會(huì)被丟棄,即使回到原來的地方,也會(huì)造成持續(xù)的位姿漂移。中期數(shù)據(jù)關(guān)聯(lián)對(duì)應(yīng)局部建圖,通過BA優(yōu)化可以約束具有共視關(guān)系的關(guān)鍵幀。長期數(shù)據(jù)關(guān)聯(lián)指回環(huán)和重定位,可以拉回大幅度的累計(jì)漂移。
多地圖數(shù)據(jù)關(guān)聯(lián)可以使用之前已經(jīng)建立的多塊地圖來實(shí)現(xiàn)地圖中的匹配和BA優(yōu)化。通過這四種數(shù)據(jù)關(guān)聯(lián)模型,ORB-SLAM3實(shí)現(xiàn)了非常強(qiáng)的全局一致性約束,使得整體的位姿估計(jì)非常準(zhǔn)。但是對(duì)于基于學(xué)習(xí)的VO來說,僅有幀間匹配,很難去實(shí)現(xiàn)回環(huán)這種長期數(shù)據(jù)關(guān)聯(lián),位姿漂移的問題非常嚴(yán)重。
最后一個(gè)問題就是,現(xiàn)有的深度學(xué)習(xí)方法非常吃計(jì)算資源。2022年了,基本上3090顯卡只能勉強(qiáng)達(dá)到深度學(xué)習(xí)的入門門檻,沒有幾塊A100的話,大模型想都不要想。目前效果最好DROID-SLAM甚至需要4塊3090才能達(dá)到實(shí)時(shí)運(yùn)行。但SLAM算法的最終目標(biāo)還是落地,要求的是能在低功耗的嵌入式設(shè)備上實(shí)時(shí)運(yùn)行。
目前大公司的SLAM算法都在做減法來盡可能縮減算力要求,這時(shí)候突然要求GPU加速就有點(diǎn)令人難以接受,畢竟誰也不可能真的給自動(dòng)駕駛汽車或者配送無人機(jī)裝4塊A100吧?
2. 傳統(tǒng)VSLAM就一定穩(wěn)定嗎?
我們所熟知的ORB-SLAM、VINS等算法在KITTI、EuRoC、TUM這些靜態(tài)場景中都已經(jīng)實(shí)現(xiàn)了非常好的效果。但問題是這些場景的規(guī)模還是太小了,很少有什么運(yùn)動(dòng)模糊的情況,并且也沒有什么動(dòng)態(tài)物體。即使它們之中有一些動(dòng)態(tài)序列,動(dòng)態(tài)物體所占的圖像范圍也沒有多大。
當(dāng)涉及到一些高動(dòng)態(tài)、無紋理、大范圍遮擋等挑戰(zhàn)性的場景時(shí),傳統(tǒng)的VSLAM算法很容易崩潰。如下圖所示,測試ORB-SLAM在挑戰(zhàn)性數(shù)據(jù)集Tartan Air中的運(yùn)行結(jié)果時(shí)發(fā)現(xiàn),ORB-SLAM平均只能跑完一半的序列,平均絕對(duì)軌跡誤差A(yù)TE甚至達(dá)到了27.67m,雙目比單目的效果好一些,但也沒有好太多。
現(xiàn)有的傳統(tǒng)方法也基本都是加入點(diǎn)線面特征,或者引入IMU/激光雷達(dá)/輪速計(jì)/GNSS等多傳感器來輔助定位和建圖。
但現(xiàn)有算法也基本都是針對(duì)特定場景才能運(yùn)行的,針對(duì)這些挑戰(zhàn)性場景,始終都沒有一個(gè)統(tǒng)一且完善的解決方案。 但在深度學(xué)習(xí)領(lǐng)域,這些都不是問題!目前YOLO已經(jīng)出到了v7版本,可以輕輕松松檢測上千種不同目標(biāo),基于Transformer語義分割/實(shí)例分割的IoU也已經(jīng)不停漲點(diǎn)。
不用說檢測出一個(gè)動(dòng)態(tài)物體,就是多目標(biāo)跟蹤的算法現(xiàn)在也已經(jīng)非常成熟。 所以說,深度學(xué)習(xí)結(jié)合SLAM是一個(gè)非常有價(jià)值的大方向!雖然現(xiàn)有的深度學(xué)習(xí)方法也都有不同的問題,但相信隨著時(shí)間變化,這些問題都可以被解決。
3. TartanVO
TartanVO來源于2020年CoRL論文“TartanVO: A Generalizable Learning-based VO”,作者是卡內(nèi)基梅隆大學(xué)的王雯珊。
前面說到,ORB-SLAM在挑戰(zhàn)性數(shù)據(jù)集Tartan Air上運(yùn)行很容易崩潰,Tartan Air數(shù)據(jù)集也是王雯珊團(tuán)隊(duì)的工作。
Tartan Air是一個(gè)大規(guī)模、多場景、高動(dòng)態(tài)的仿真數(shù)據(jù)集,里面包含20種不同的環(huán)境、500+個(gè)軌跡以及40萬+幀圖像。雖然Tartan Air并不來源于真實(shí)傳感器,只是一個(gè)仿真場景,但其實(shí)內(nèi)部的圖像已經(jīng)足夠真實(shí)。
我們沿著TartanVO作者的設(shè)計(jì)思路來進(jìn)行分析,首先TartanVO設(shè)計(jì)了一個(gè)簡單并傳統(tǒng)的網(wǎng)絡(luò)架構(gòu),思路也非常簡單,輸入是連續(xù)的兩幀圖像。網(wǎng)絡(luò)首先會(huì)提取特征并估計(jì)光流,之后利用Pose網(wǎng)絡(luò)估計(jì)出位姿。
但TartanVO的作者發(fā)現(xiàn),訓(xùn)練過程中的損失一直降不下來!通過分析發(fā)現(xiàn)這是由于平移位姿估計(jì)差引起的,那原因就顯而易見了,還是單目尺度不確定問題!為了解決這個(gè)問題,作者設(shè)計(jì)了對(duì)應(yīng)的尺度一致性損失,只估計(jì)相對(duì)尺度:
同時(shí)TartanVO的另一個(gè)重要?jiǎng)?chuàng)新點(diǎn)在于,通用性非常強(qiáng)!前面說到,不同數(shù)據(jù)集的圖像分辨率和內(nèi)參不一致,這影響了網(wǎng)絡(luò)的泛化性能。
因此TartanVO又加入了內(nèi)參層,在訓(xùn)練過程中同時(shí)估計(jì)相機(jī)內(nèi)參矩陣。同時(shí)在訓(xùn)練過程中對(duì)Tartan Air數(shù)據(jù)集的圖像進(jìn)行隨機(jī)裁剪和縮放,以此來模擬不同的內(nèi)參。
定量結(jié)果也證明了網(wǎng)絡(luò)的有效性,雖然訓(xùn)練損失提高了(模型任務(wù)復(fù)雜了),但測試損失還是得到了明顯降低。
下表是在KITTI數(shù)據(jù)集上的測試結(jié)果,注意TartanVO并沒有進(jìn)行Finetune,但是效果比其他基于學(xué)習(xí)的VO方法好。值得一提的是,TartanVO的平移精度很高,但是相較于ORB-SLAM的旋轉(zhuǎn)精度較低,這是因?yàn)镺RB-SLAM具有回環(huán)檢測模塊。
4. 基于TartanVO的動(dòng)態(tài)稠密RGB-D SLAM
這篇論文是今年5月上傳到arXiv的,論文名為“Dynamic Dense RGB-D SLAM using Learning-based Visual Odometry”,同樣是卡內(nèi)基梅隆大學(xué)的研究成果。
這個(gè)網(wǎng)絡(luò)是基于TartanVO進(jìn)行的,相當(dāng)于TartanVO在動(dòng)態(tài)環(huán)境中的改進(jìn),輸出是沒有動(dòng)態(tài)對(duì)象的稠密全局地圖。
算法的主要思想是從兩個(gè)連續(xù)的RGB圖像中估計(jì)光流,并將其傳遞到視覺里程計(jì)中,以通過匹配點(diǎn)作為直接法來預(yù)測相機(jī)運(yùn)動(dòng)。然后通過利用光流來執(zhí)行動(dòng)態(tài)分割,經(jīng)過多次迭代后,移除動(dòng)態(tài)像素,這樣僅具有靜態(tài)像素的RGB-D圖像就被融合到全局地圖中。
不過不知為何,這篇論文沒有進(jìn)行定量評(píng)估,沒有和其他SLAM算法的一些ATE、RTE等參數(shù)的對(duì)比,只有一些定量對(duì)比,可能是工作還在進(jìn)一步優(yōu)化。
5. DytanVO
DytanVO算是目前最前沿的成果了,論文名“DytanVO: Joint Refinement of Visual Odometry and Motion Segmentation in Dynamic Environments”,同樣是卡內(nèi)基梅隆大學(xué)王雯珊團(tuán)隊(duì)的工作,該論文已經(jīng)提交到2023 ICRA。 DytanVO的整個(gè)網(wǎng)絡(luò)架構(gòu)還是基于TartanVO進(jìn)行優(yōu)化的。
DytanVO由從兩幅連續(xù)圖像中估計(jì)光流的匹配網(wǎng)絡(luò)、基于無動(dòng)態(tài)運(yùn)動(dòng)的光流估計(jì)位姿的位姿網(wǎng)絡(luò)和輸出動(dòng)態(tài)概率掩碼的運(yùn)動(dòng)分割網(wǎng)絡(luò)組成。
匹配網(wǎng)絡(luò)僅向前傳播一次,而位姿網(wǎng)絡(luò)和分割網(wǎng)絡(luò)被迭代以聯(lián)合優(yōu)化位姿估計(jì)和運(yùn)動(dòng)分割。停止迭代的標(biāo)準(zhǔn)很簡單,即兩個(gè)迭代之間旋轉(zhuǎn)和平移差異小于閾值,并且閾值不固定,而是預(yù)先確定一個(gè)衰減參數(shù),隨著時(shí)間的推移,經(jīng)驗(yàn)地降低輸入閾值,以防止在早期迭代中出現(xiàn)不準(zhǔn)確的掩碼,而在后期迭代中使用改進(jìn)的掩碼。
下圖所示是DytanVO的運(yùn)行示例,包含兩個(gè)輸入的圖像幀、估計(jì)的光流、運(yùn)動(dòng)分割以及在高動(dòng)態(tài)AirDOS-Shibuya數(shù)據(jù)集上的軌跡評(píng)估結(jié)果。結(jié)果顯示DytanVO精度超越TartanVO達(dá)到了最高,并且漂移量很小。
下表是在AirDOS-Shibuya的七個(gè)序列上,DytanVO與現(xiàn)有最先進(jìn)的VO算法進(jìn)行的定量對(duì)比結(jié)果。
七個(gè)序列分為三個(gè)難度等級(jí):大多數(shù)人站著不動(dòng),很少人在路上走來走去,穿越(容易)包含多個(gè)人類進(jìn)出相機(jī)的視野,而在穿越道路(困難)中,人類突然進(jìn)入相機(jī)的視野。
除了VO方法之外,作者還將DytanVO與能夠處理動(dòng)態(tài)場景的SLAM方法進(jìn)行了比較,包括DROID-SLAM、AirDOS、VDO-SLAM以及DynaSLAM。
6. 總結(jié)
深度學(xué)習(xí)已經(jīng)廣泛應(yīng)用到了各個(gè)領(lǐng)域,但在SLAM領(lǐng)域卻沒有取得很好的效果。本文深入探討了為什么基于學(xué)習(xí)的VO效果不如傳統(tǒng)的SLAM算法,并介紹了三種基于學(xué)習(xí)的VO的算法原理。
總之,深度學(xué)習(xí)與SLAM結(jié)合是一個(gè)大趨勢,現(xiàn)階段無論是基于學(xué)習(xí)的VO還是傳統(tǒng)SLAM算法都有各自的問題,但兩者結(jié)合就可以解決很多困難。
審核編輯:劉清
-
ESP
+關(guān)注
關(guān)注
0文章
179瀏覽量
33739 -
VSLAM算法
+關(guān)注
關(guān)注
0文章
5瀏覽量
2225
原文標(biāo)題:基于學(xué)習(xí)的VO距離傳統(tǒng)VSLAM還有多遠(yuǎn)?
文章出處:【微信號(hào):3D視覺工坊,微信公眾號(hào):3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論