「學(xué)習(xí)路線」SLAM/深度估計(jì)/三維重建/標(biāo)定/傳感器融合...(本文較長(zhǎng),建議收藏)
經(jīng)常有粉絲問視覺/激光/SLAM、三維重建等方向的學(xué)習(xí)路線,這里我再總結(jié)給大家,如下所示:



隨著最近幾年智能機(jī)器人、自動(dòng)駕駛、AR/MR等領(lǐng)域的快速發(fā)展,企業(yè)對(duì)3D視覺算法及SLAM算法需求越來越強(qiáng)烈,該領(lǐng)域迎來了爆發(fā)式發(fā)展。
按照應(yīng)用不同我們把3D視覺及SLAM算法分為如下方向:
視覺深度估計(jì)
視覺(慣性)SLAM
激光/多傳感器融合SLAM
幾何/深度學(xué)習(xí)三維重建
視覺傳感器標(biāo)定
下面分別介紹(本文較長(zhǎng),建議收藏):
視覺深度估計(jì)
視覺深度估計(jì)的目的就是估計(jì)圖像中場(chǎng)景的深度,即場(chǎng)景中各點(diǎn)像素到相機(jī)成像平?的垂直距離,分為絕對(duì)距離和相對(duì)距離。我們看下面這個(gè)例子,左邊是原圖,右邊是算法估計(jì)的對(duì)應(yīng)深度圖:

最近?年,?動(dòng)駕駛 、?機(jī)交互、虛擬現(xiàn)實(shí)、機(jī)器?等領(lǐng)域發(fā)展極為迅速,尤其是視覺?案在?動(dòng)駕駛中取得驚艷的效果,在這些應(yīng)?場(chǎng)景中,如何獲取場(chǎng)景中的深度信息是關(guān)鍵且必須的。同時(shí),從深度圖中獲得前后的關(guān)系更容易分辨出物體的邊界,簡(jiǎn)化了CV中很多任務(wù)的算法,例如3D?標(biāo)檢測(cè)和分割、場(chǎng)景理解等。相?于激光雷達(dá)測(cè)距,相機(jī)價(jià)格低廉、體積小巧,操作簡(jiǎn)單等優(yōu)點(diǎn),目前視覺深度估計(jì)是三維視覺最重要的基礎(chǔ)模塊之一,不僅在學(xué)術(shù)屆各大CV頂會(huì)上有很多深度估計(jì)相關(guān)新的論文,在工業(yè)界應(yīng)用也非常廣泛,是比較熱門的研究?向。

深度估計(jì)在自動(dòng)駕駛領(lǐng)域的應(yīng)用

視覺(慣性)SLAM
SLAM是指某種移動(dòng)設(shè)備(如機(jī)器人、無人機(jī)、手機(jī)、汽車、智能 穿戴設(shè)備等) 從一個(gè)未知環(huán)境里的未知地點(diǎn)出 發(fā), 在運(yùn)動(dòng)過程中通過傳感器(如相 機(jī)、激光雷達(dá)、 IMU等)觀測(cè)定位 自身位置和姿態(tài),再根據(jù)自身位 姿進(jìn)行增量式的地圖構(gòu)建, 從而達(dá)到同時(shí)定位和地圖構(gòu)建的 目的。SLAM技術(shù)是智能機(jī)器人、自動(dòng)駕駛汽車、AR/MR等領(lǐng)域的底層核心技術(shù)之一。
如果SLAM過程使用的主要是視覺相關(guān)的傳感器(如單目、雙目、RGB-D、魚眼、全景相機(jī)),一般稱之為視覺SLAM。目前最知名的、效果最好的視覺SLAM是ORB-SLAM2/3系列和VINS-Mono/Fusion系列。
2015年,西班牙薩拉戈薩大學(xué)機(jī)器人感知與實(shí)時(shí)研究組開源了ORB-SLAM第一個(gè)版本,由于其出色的效果受到廣泛關(guān)注。該團(tuán)隊(duì)分別在2016年和2020年開源了第二個(gè)版本ORB-SLAM2和第三個(gè)版本ORB-SLAM3。
其中ORB-SLAM2是業(yè)內(nèi)最知名、應(yīng)用最廣泛的開源代碼。它有如下優(yōu)點(diǎn):
支持單目,雙目和RGB-D相機(jī)的完整開源SLAM方案,能夠?qū)崿F(xiàn)地圖重用、回環(huán)檢測(cè)和重新定位的功能。
支持輕量級(jí)定位模式,可以達(dá)到零漂移,此時(shí)不使用局部建圖和回環(huán)檢測(cè)的線程,可以用視覺里程計(jì)來跟蹤未建圖區(qū)域。
采用ORB特征,具有旋轉(zhuǎn)不變性、光照不變性、尺度不變性,匹配速度快,適合實(shí)時(shí)應(yīng)用。無論是在室內(nèi)的小型手持設(shè)備,還是到工廠環(huán)境的無人機(jī)和城市里駕駛的汽車,ORB-SLAM2都能夠在CPU上進(jìn)行實(shí)時(shí)工作。
跟蹤、局部地圖、閉環(huán)、重定位等所有的任務(wù)都采用相同的ORB特征,使得系統(tǒng)內(nèi)數(shù)據(jù)交互更高效、穩(wěn)定可靠。
單目初始化和應(yīng)用場(chǎng)景解耦,不管是平面還是非平面場(chǎng)景,都可以自動(dòng)初始化,無需人工干預(yù)。
地圖點(diǎn)和關(guān)鍵幀創(chuàng)建比較寬松,但后續(xù)會(huì)進(jìn)行嚴(yán)格篩選,剔除冗余關(guān)鍵幀和誤差大的地圖點(diǎn),增加建圖過程的彈性,在大旋轉(zhuǎn)、快速運(yùn)動(dòng)、紋理不足等惡劣情況下可以提高跟蹤的魯棒性。
采用共視圖,使得跟蹤和建圖控制在局部共視區(qū)域,與全局地圖大小無關(guān),可以在大場(chǎng)景下運(yùn)行。
使用本質(zhì)圖(Essential Graph)來優(yōu)化位姿實(shí)現(xiàn)回環(huán)檢測(cè),耗時(shí)少精度高 。
相比于直接法,可以用于寬基線特征匹配,更適合于對(duì)深度精度要求較高的場(chǎng)景,比如三維重建。
定位精度高,可達(dá)厘米級(jí),是特征點(diǎn)法SLAM的經(jīng)典代表作品。
代碼可讀性強(qiáng),包含很多工程化技巧,非常實(shí)用。
下面是ORB-SLAM2的算法框架

ORB-SLAM2 在汽車上應(yīng)用

ORB-SLAM2 用于室內(nèi)三維重建


ORB-SLAM3是在特征點(diǎn)法SLAM經(jīng)典之作ORB-SLAM2的基礎(chǔ)上開發(fā)的,于2020年7月發(fā)布。它在定位精度和效果上幾乎碾壓了同類的開源算法,被稱為VIO算法的巔峰之作。受到極大關(guān)注。該算法流程圖如下所示

該算法的特點(diǎn)如下所示:
1、 第一個(gè)可以運(yùn)行視覺、視覺慣性和多地圖,支持單目、雙目和RGB-D相機(jī),且支持針孔和魚眼鏡頭模型的SLAM系統(tǒng)。
2、該算法可以在不同大小,室內(nèi)和室外環(huán)境中魯棒、實(shí)時(shí)的運(yùn)行,精度上相比于以前的方法提升了2~5倍。
3、?多地圖系統(tǒng)可以讓系統(tǒng)在視覺信息缺乏的場(chǎng)景下長(zhǎng)時(shí)間運(yùn)行。比如當(dāng)跟蹤丟失的時(shí)候,它會(huì)重新建立新的地圖,并在重新訪問之前的地圖時(shí),無縫地與之前的地圖合并。
4、實(shí)驗(yàn)結(jié)果證明,雙目慣性模式下,該算法在無人機(jī)數(shù)據(jù)集EuRoC上可以達(dá)到平均3.6cm的定位精度,在手持設(shè)備快速移動(dòng)的室內(nèi)數(shù)據(jù)集TUM-VI上達(dá)到了9mm的定位精度。
先來直觀的看看視覺效果
看 ORB-SLAM3 瘋狂繞圈,穩(wěn)的很!甚至滑滑梯從黑管子中穿過!

從室內(nèi)到室外,絲滑閉環(huán)

ORB-SLAM3效果展示
上面是定性的結(jié)果,下圖是量化結(jié)果。

從統(tǒng)計(jì)數(shù)據(jù)來看,ORB-SLAM3確實(shí)碾壓同類算法。功能強(qiáng)大到讓SLAM算法研究者感慨“把自己想做的都做了”

VINS即Visual-Inertial navigation Systems,是視覺慣性導(dǎo)航系統(tǒng)的統(tǒng)稱,不過我們平時(shí)所說的一般是指VINS-Mono/Fusion。香港科技大學(xué)飛行機(jī)器人實(shí)驗(yàn)室(沈邵劼團(tuán)隊(duì))在2018年開源了VINS-Mono算法。第一作者秦通(2019華為天才少年),該論文獲2018年機(jī)器人頂級(jí)期刊IEEE Transactions on Robotics最佳論文獎(jiǎng)。它用一個(gè)單目相機(jī)+慣性測(cè)量單元(Inertial Measurement Unit,簡(jiǎn)稱IMU)實(shí)現(xiàn)了緊耦合的視覺和慣性聯(lián)合狀態(tài)估計(jì),在保證高精度里程計(jì)效果的同時(shí),還可以同時(shí)估計(jì)出傳感器外參,IMU零偏以及傳感器時(shí)延。2019年該團(tuán)隊(duì)開源了VINS-Mono的升級(jí)版VINS-Fusion,它支持多種視覺慣性傳感器類型,包括單目+IMU,雙目+IMU,以及純雙目。VINS-Mono和VINS-Fusion在當(dāng)年一騎絕塵,是非常經(jīng)典且優(yōu)秀的VIO框架。
以下是VINS-Mono效果展示,在室外大尺度效果也非常魯棒,以下是它在香港科技大學(xué)操場(chǎng)的SLAM效果:

在手機(jī)AR上應(yīng)用,該算法完勝當(dāng)前最先進(jìn)的Google Tango效果如下:

以下是VINS-Fusion在汽車SLAM上的效果:


激光/多傳感器融合SLAM
如果SLAM過程使用的主要是激光雷達(dá)相關(guān)的傳感器,一般稱之為激光SLAM。目前最知名的、效果最好的激光SLAM是Google發(fā)布的Cartographer,以及LOAM、LEGO-LOAM。
Cartographer是Google推出的一套基于圖優(yōu)化的激光SLAM算法,它同時(shí)支持2D和3D激光SLAM,可以跨平臺(tái)使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多種傳感器配置。是目前落地應(yīng)用最廣泛的激光SLAM算法之一。

Cartographer建圖過程
Cartographer代碼最重要的 貢獻(xiàn)不僅僅是算法,而是工程實(shí)現(xiàn)實(shí)在是太優(yōu)秀了!它不依賴PCL,g2o, iSAM, sophus, OpenCV等第三方庫(kù),所有輪子都是自己造的,2D/3D的SLAM的核心部分僅僅依賴于Boost、Eigen(線性代數(shù)庫(kù))、Ceres(Google開源的非線性優(yōu)化庫(kù))等幾個(gè)底層的庫(kù)。
這明顯不是搞科研的玩兒法,就是奔著產(chǎn)品去的!因?yàn)?strong>依賴庫(kù)少,可以直接在產(chǎn)品級(jí)嵌入式系統(tǒng)上應(yīng)用,關(guān)鍵是開源免費(fèi),而且效果還針不戳!極大的降低了開發(fā)者的門檻。目前在GitHub的star數(shù)目是非常高的。
因此Cartographer非常適合于掃地/清潔機(jī)器人、倉(cāng)儲(chǔ)物流機(jī)器人、送餐機(jī)器人等室內(nèi)服務(wù)機(jī)器人場(chǎng)景的實(shí)時(shí)定位和建圖。

如果SLAM過程使用了3種以上傳感器,比如視覺、激光、IMU、GPS等,一般稱之為多傳感器融合SLAM。比較知名的是LIO-SAM、LVI-SAM、R3LIVE等。
LIO-SAM 是Tixiao Shan在LeGO-LOAM的擴(kuò)展,添加了IMU預(yù)積分因子和GPS因子:前端使用緊耦合的IMU融合方式,替代原有的幀間里程計(jì),使得前端更輕量;后端沿用LeGO-LOAM,在此基礎(chǔ)上融入了GPS觀測(cè)。同時(shí)前端后端相互耦合,提高系統(tǒng)精度。

LIO-SAM效果展示

幾何/深度學(xué)習(xí)三維重建
指用相機(jī)拍攝真實(shí)世界的物體、場(chǎng)景,并通過計(jì)算機(jī)視覺技術(shù)進(jìn)行處理,從而得到物體的三維模型。常見的重建方法包括視覺幾何三維重建,以及最近的基于?深度學(xué)習(xí)的三維重建。它是增強(qiáng)現(xiàn)實(shí)(AR)、混合現(xiàn)實(shí)(MR)、機(jī)器人導(dǎo)航、自動(dòng)駕駛等領(lǐng)域的核心技術(shù)之一。三維重建通常需要SFM或者SLAM得到的位姿和地圖點(diǎn)作為輸入條件,下圖是視覺三維重建的基本流程:


視覺幾何三維重建效果展示
根據(jù)不同的實(shí)現(xiàn)方法,我們可以將三維重建分為:傳統(tǒng)基于幾何的三維重建和深度學(xué)習(xí)方法三維重建。具體細(xì)分如下所示:


傳統(tǒng)的重建方法是使用光度一致性等來計(jì)算稠密的三維信息。雖然這些方法在理想的Lambertian場(chǎng)景下,精度已經(jīng)很高。但也有一些常見的局限性,例如弱紋理,高反光和重復(fù)紋理等,使得重建困難或重建的結(jié)果不完整。因此,傳統(tǒng)三維重建方法在重建的完整性等方面仍有很大的改進(jìn)空間。
近年來深度學(xué)習(xí)在三維重建上取得了很大的成功?;趯W(xué)習(xí)的方法可以引入比如鏡面先驗(yàn)和反射先驗(yàn)等全局語(yǔ)義信息,使匹配更加魯棒,從而解決傳統(tǒng)方法無法克服的難題。因此掌握基于深度學(xué)習(xí)的三維重建前沿算法非常重要。另外,在這個(gè)大數(shù)據(jù)時(shí)代,深度學(xué)習(xí)已經(jīng)是大家必須掌握的技能,傳統(tǒng)視覺算法已經(jīng)很難有新的突破,各個(gè)領(lǐng)域都在朝深度學(xué)習(xí)方向研究,近幾年各大視覺會(huì)議論文都是基于深度學(xué)習(xí)來實(shí)現(xiàn)三維重建,各個(gè)大廠招聘也越來越看重深度學(xué)習(xí)三維重建方法。

下圖是我們整理的獨(dú)家深度學(xué)習(xí)MVS網(wǎng)絡(luò)演化圖:

下面學(xué)習(xí)路線以深度學(xué)習(xí)MVS網(wǎng)絡(luò)演化圖為主線,重點(diǎn)講解三個(gè)優(yōu)秀的開源框架?MVSNet(經(jīng)典的深度學(xué)習(xí)MVS開源庫(kù))、PatchMatchNet(有監(jiān)督MVS網(wǎng)絡(luò)中最新最佳)、JDACS-MS(無監(jiān)督MVS網(wǎng)絡(luò)中最新最佳),并梳理各種變種網(wǎng)絡(luò),覆蓋目前深度學(xué)習(xí)MVS最前沿、最優(yōu)秀的技術(shù)。

視覺傳感器標(biāo)定
包括常見的單目/魚眼/雙目/陣列相機(jī)標(biāo)定。相機(jī)標(biāo)定是指借助專用的標(biāo)志物(如棋盤格)來估計(jì)相機(jī)的圖像傳感器參數(shù)(內(nèi)參、外參)和鏡頭參數(shù)(畸變系數(shù))。相機(jī)標(biāo)定是一切三維視覺的基礎(chǔ)。它廣泛應(yīng)用于雙目視覺、手眼機(jī)械臂、機(jī)器人定位建圖、圖像拼接、三維重建等場(chǎng)景。

相機(jī)標(biāo)定學(xué)習(xí)路線

以上所有教程,我們都有對(duì)應(yīng)的源碼解析課程。
歡迎進(jìn)入店鋪查看↓
店鋪鏈接:「學(xué)習(xí)路線」SLAM/深度估計(jì)/三維重建/標(biāo)定/傳感器融合...(本文較長(zhǎng),建議收藏)
https://mp.weixin.qq.com/s/7XPcG4eCENlGFBiMrtmvOg
獨(dú)家重磅課程!
1、詳解Cartographer源碼:多LiDAR時(shí)間同步/去畸變、IMU里程計(jì)融合、點(diǎn)云匹配、分支定界。。。
2、深度學(xué)習(xí)三維重建?詳解深度學(xué)習(xí)三維重建網(wǎng)絡(luò):MVSNet、PatchMatchNet、JDACS-MS
3、三維視覺基礎(chǔ)?詳解視覺深度估計(jì)算法(單/雙目/RGB-D+特征匹配+極線矯正+代碼實(shí)戰(zhàn))
4、視覺SLAM必備基礎(chǔ)?詳解視覺SLAM核心:地圖初始化、實(shí)時(shí)跟蹤、局部建圖、回環(huán)檢測(cè)、BA優(yōu)化,工程技巧
5、?VINS:Mono+Fusion?SLAM面試官:看你簡(jiǎn)歷上寫精通VINS,麻煩現(xiàn)場(chǎng)手推一下預(yù)積分!
6、VIO進(jìn)階:ORB-SLAM3(單/雙目/RGBD+魚眼+IMU緊耦合+多地圖+閉環(huán))獨(dú)家70+講全部上線!
7、圖像三維重建課程:視覺幾何三維重建教程(第2期):稠密重建,曲面重建,點(diǎn)云融合,紋理貼圖
8、重磅來襲!基于LiDAR的多傳感器融合SLAM 系列教程:LOAM、LeGO-LOAM、LIO-SAM
9、系統(tǒng)全面的相機(jī)標(biāo)定課程:單目/魚眼/雙目/陣列 相機(jī)標(biāo)定:原理與實(shí)戰(zhàn)
鏈接:「學(xué)習(xí)路線」SLAM/深度估計(jì)/三維重建/標(biāo)定/傳感器融合...(本文較長(zhǎng),建議收藏)
https://mp.weixin.qq.com/s/7XPcG4eCENlGFBiMrtmvOg
全國(guó)最棒的SLAM、三維視覺學(xué)習(xí)社區(qū)↓
鏈接:「學(xué)習(xí)路線」SLAM/深度估計(jì)/三維重建/標(biāo)定/傳感器融合...(本文較長(zhǎng),建議收藏)
https://mp.weixin.qq.com/s/7XPcG4eCENlGFBiMrtmvOg