張玉河
(河北地質(zhì)大學(xué) 信息工程學(xué)院,河北 石家莊 050031)
SLAM(Simultaneous Localization and Mapping)即同時(shí)定位與地圖構(gòu)建,是指機(jī)器人搭載特定的傳感器在沒有環(huán)境先驗(yàn)信息的情況下,在運(yùn)動(dòng)過程中根據(jù)位置估計(jì)進(jìn)行自身定位并對(duì)周圍的環(huán)境進(jìn)行建圖。當(dāng)搭載的傳感器為相機(jī)時(shí),稱為“視覺SLAM”。視覺SLAM的工作流程如圖1所示。
圖1 視覺SLAM工作流程圖Fig.1 The flow chart of Visual SLAM
SLAM問題起源于1986年[1],文獻(xiàn)[1-2]全面回顧了SLAM近些年的發(fā)展并探討了SLAM的未來發(fā)展趨勢(shì);文獻(xiàn)[3]將SLAM的發(fā)展劃分為三個(gè)時(shí)代:classical age(1986-2004)、algorithmicanalysis age(20014-2015)以及robust-perception age(2015-現(xiàn)在),1986-2004年引入了SLAM的概率公式,包括擴(kuò)展卡爾曼濾波器和最大似然估計(jì)等;2004-2015年主要研究SLAM的基本性質(zhì),包括可觀測(cè)性、收斂性與一致性;目前這一時(shí)期對(duì) SLAM 系統(tǒng)的魯棒性等性能提出了更高的要求。視覺SLAM主要分為兩大類,一是基于圖像特征點(diǎn)的間接法,2007年 Davison[4]提出MonoSLAM,這是第一個(gè)實(shí)時(shí)單目視覺SLAM系統(tǒng),被認(rèn)為是許多工作的發(fā)源地[5];2015年Raul Mur-Artal和 Juan D.Tardos等人[6]提出 ORBSLAM,在這個(gè)系統(tǒng)中,作者首次使用三線程的方法完成 SLAM,而且作者還在對(duì)該系統(tǒng)進(jìn)行完善,分別于2017年和2020年推出ORB- SLAM2[7]和 ORB-SLAM3[8];另一類是根據(jù)像素亮度信息直接估計(jì)相機(jī)運(yùn)動(dòng)的直接法,直接法避免了圖像特征的計(jì)算,在一定程度上提升了SLAM系統(tǒng)的效率。2014年 J.Engel[9]等人提出 LSD-SLAM(Large Scale Direct monocular SLAM),LSDSLAM的提出標(biāo)志著單目直接法在SLAM的應(yīng)用中取得成功,在該系統(tǒng)中實(shí)現(xiàn)了半稠密場(chǎng)景的重建且保證了跟蹤的實(shí)時(shí)性與穩(wěn)定性。隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,將深度學(xué)習(xí)技術(shù)與視覺SLAM 結(jié)合成為一個(gè)研究熱點(diǎn),Gao[10]等人提出通過無監(jiān)督學(xué)習(xí)的方式,采用堆疊去噪自動(dòng)編碼器(Stacked Denoising Auto-encoder,SDA)的方式描述整幅圖像來進(jìn)行圖像的匹配實(shí)現(xiàn)回環(huán)檢測(cè),取得了較好的效果[11]。
視覺SLAM技術(shù)主要應(yīng)用于無人機(jī)、機(jī)器人以及虛擬現(xiàn)實(shí)等領(lǐng)域,在水下或惡劣環(huán)境中可以發(fā)揮巨大作用,方便人們對(duì)未知環(huán)境進(jìn)行探索。本文首先對(duì)視覺SLAM原理進(jìn)行介紹,將SLAM問題數(shù)學(xué)化,然后對(duì)具有代表性的特征法與直接法的視覺SLAM算法進(jìn)行分析討論,再對(duì)深度學(xué)習(xí)與視覺SLAM結(jié)合的現(xiàn)狀進(jìn)行討論,最后對(duì)視覺SLAM算法進(jìn)行總結(jié)與展望。
視覺SLAM以多視圖幾何[12]為基本原理,如圖2所示。視覺SLAM主要目的是恢復(fù)每幀圖像對(duì)應(yīng)的相機(jī)運(yùn)動(dòng)參數(shù)C1…Cm,同時(shí)恢復(fù)場(chǎng)景的三維結(jié)構(gòu)X1…Xn。相機(jī)運(yùn)動(dòng)參數(shù) Ci由3× 3的旋轉(zhuǎn)矩陣 Ri和一個(gè)三維位置變量pi組成,通過Ri、pi可以將世界坐標(biāo)系下的三維點(diǎn)Xj變換至相機(jī)坐標(biāo)系[13],其表達(dá)式為:
圖2 多視圖幾何原理Fig.2 The principle of multi-view geometry
進(jìn)而投影至圖像中,即變換至像素坐標(biāo)系:
其中,fx、fy分別為沿圖像x、y軸的焦距,(cx,cy)為鏡頭光心在圖像中的位置。由式(1)(2)可知,將世界坐標(biāo)系下的三維點(diǎn)投影到像素坐標(biāo)系[13]中可表示為:
其中,hij表示三維點(diǎn)投影在圖像中的位置,h表示由世界坐標(biāo)系變換至像素坐標(biāo)系的轉(zhuǎn)換函數(shù)。通過求解目標(biāo)函數(shù)得到最優(yōu)解:
其中,xij表示觀測(cè)到的圖像點(diǎn)位置。通過求解的目標(biāo)函數(shù)得到一組最優(yōu)解C1…Cm、X1…Xn,使得所有Xj在 Ci圖像中的投影位置 hij與觀測(cè)到的圖像點(diǎn)位置xij盡可能靠近[13]。
間接法是指首先提取圖像特征,然后在視覺里程計(jì)中根據(jù)圖像特征信息估計(jì)相機(jī)運(yùn)動(dòng)。該方法利用圖像特征提供的豐富信息計(jì)算相機(jī)位姿,性能比較穩(wěn)定,在視覺 SLAM 中一直占據(jù)主導(dǎo)地位。
單目視覺SLAM系統(tǒng)由Davison等人在2003年首次提出[14],2007年提出實(shí)時(shí)MonoSLAM系統(tǒng)。MonoSLAM證明了用一個(gè)可自由移動(dòng)的攝像機(jī)作為唯一數(shù)據(jù)源,可以實(shí)現(xiàn)實(shí)時(shí)定位和建圖。該系統(tǒng)的設(shè)計(jì)思路如下:首先給定從初始時(shí)刻到當(dāng)前時(shí)刻的控制輸入及觀測(cè)數(shù)據(jù);然后通過構(gòu)建聯(lián)合后驗(yàn)概率密度函數(shù)來描述攝像機(jī)姿態(tài)和地圖特征的空間位置,再通過遞歸的貝葉斯濾波方法對(duì)此概率密度函數(shù)加以估計(jì);最后實(shí)現(xiàn)對(duì)攝像機(jī)定位,同時(shí)構(gòu)建周圍環(huán)境地圖[15]。在單目視覺SLAM中常用擴(kuò)展卡爾曼濾波器實(shí)現(xiàn)同時(shí)定位和地圖構(gòu)建。MonoSLAM系統(tǒng)由以下兩部分組成:(1)通過已知的對(duì)象完成地圖初始化;(2)使用EKF估計(jì)相機(jī)運(yùn)動(dòng)和特征點(diǎn)的3D位置。
在該系統(tǒng)中計(jì)算復(fù)雜度隨環(huán)境規(guī)模增大而成比例的增大,因此,在較大環(huán)境中不能實(shí)時(shí)計(jì)算[16]。
為了解決 MonoSLAM 中計(jì)算復(fù)雜度高的問題,Klein[17]等人在2007年提出PTAM (Parallel Tracking and Mapping)算法。在PTAM中,后端模塊采用非線性優(yōu)化方法,首次將跟蹤和建圖分到兩個(gè)線程中并行執(zhí)行,同時(shí)首次使用 BA[18](Bundle Adjustment)技術(shù)處理關(guān)鍵幀。PTAM算法主要分為四步:(1)通過五點(diǎn)法[19]初始化地圖;(2)根據(jù)地圖點(diǎn)和輸入圖像之間匹配的特征點(diǎn)估計(jì)相機(jī)位姿;通過三角化估計(jì)特征點(diǎn)的 3D位置,利用BA對(duì)3D位置優(yōu)化;通過隨機(jī)樹的搜索方法恢復(fù)跟蹤過程[20]。
由于PTAM算法在相機(jī)快速移動(dòng)時(shí)會(huì)產(chǎn)生運(yùn)動(dòng)模糊,破壞圖像的角點(diǎn)特征,導(dǎo)致跟蹤失敗,一些研究者對(duì)PTAM算法做了擴(kuò)展,如Castle[21]等人開發(fā)出一個(gè)多地圖版本的 PTAM,以及Klein[22]等人開發(fā)出移動(dòng)版的PTAM。
PTAM 中首次引入基于關(guān)鍵幀建圖的方法并將跟蹤和建圖分離到不同的線程中并行處理,對(duì)視覺SLAM的發(fā)展具有重大意義?;赑TAM算法發(fā)展出許多開源視覺SLAM算法,最具代表性的為2015年提出的ORB-SLAM算法。
Mur-Artal等人2015年提出的ORB-SLAM系統(tǒng)是當(dāng)前視覺SLAM系統(tǒng)中最完善且易于使用的系統(tǒng)之一。最初的ORB-SLAM只可以用單目相機(jī)作為傳感器,2017年作者對(duì)其進(jìn)行改進(jìn)得到ORB-SLAM2系統(tǒng),在ORB-SLAM2中可以利用單目、雙目及RGB-D相機(jī)作為傳感器。2020年提出ORB-SLAM3,在ORB-SLAM3中不僅支持單目、雙目和RGB-D相機(jī),同時(shí)支持針孔相機(jī)、魚眼相機(jī)等,ORB-SLAM3是第一個(gè)同時(shí)具備純視覺數(shù)據(jù)處理、視覺與慣性傳感器數(shù)據(jù)處理和構(gòu)建多地圖功能的SLAM系統(tǒng)。ORB-SLAM系統(tǒng)由PTAM發(fā)展而來,將兩線程并行運(yùn)行改為三線程,三線程分別為Tracking、Local Mapping以及Loop Closing,如圖3所示。
圖3 ORB-SLAM 系統(tǒng)的三線程Fig.3 The three threads of the ORB-SLAM system
在整個(gè)ORB-SLAM系統(tǒng)中,均圍繞ORB[23]特征進(jìn)行計(jì)算。ORB特征是非常具有代表性的實(shí)時(shí)圖像特征,它使得 FAST[24]特征點(diǎn)具有方向性與旋轉(zhuǎn)不變性,并采用速度極快的BRIEF[25]描述子,相比于SIFT[26]和SURF[27]特征,ORB特征可以在CPU上實(shí)時(shí)計(jì)算,極大的提升了視覺SALM系統(tǒng)的性能。
在ORB-SLAM系統(tǒng)中,加入閉環(huán)檢測(cè)模塊是一大亮點(diǎn)。閉環(huán)檢測(cè)模塊通過判斷當(dāng)前設(shè)備之前是否到過當(dāng)前位置來消除位姿累積誤差形成的軌跡漂移,且可以在跟蹤丟失后快速找回,從而構(gòu)建全局一致性地圖。ORB-SLAM的不足之處在于跟蹤、建圖等過程都要用到ORB特征,雖然提取圖像的ORB特征速度較快,但對(duì)每一幅圖像都提取ORB特征,當(dāng)場(chǎng)景非常大時(shí)將特別耗時(shí),而且三線程同時(shí)執(zhí)行會(huì)加重CPU的負(fù)擔(dān),很難將其嵌入到移動(dòng)設(shè)備中。
與上文所述的間接法相比,直接法在視覺SLAM系統(tǒng)中直接使用輸入的圖像,不使用圖像的任何抽象特征。G.Silveira[28]等人于 2008年提出將直將接法用于視覺SLAM系統(tǒng),因其忽略了圖像特征點(diǎn)的提取與描述子的計(jì)算過程而節(jié)省了時(shí)間,基于直接法的視覺SLAM系統(tǒng)得到快速發(fā)展,隨后出現(xiàn)了 DTAM[29]、LSD-SLAM[30]以及DSO[31]等使用直接法的開源項(xiàng)目,使得直接法逐漸成為主流算法。
DTAM(Dense Tracking and Mapping)是Newcombe等人2011年提出的直接法視覺SLAM系統(tǒng)。它是一個(gè)實(shí)時(shí)跟蹤和重建的系統(tǒng),不使用提取的圖像特征,而是依賴于圖像中的每個(gè)像素。文獻(xiàn)[29]指出基于直接法的DTAM系統(tǒng)與基于特征法的SLAM系統(tǒng)相比,DTAM系統(tǒng)在設(shè)備快速移動(dòng)的情況下具有更好的跟蹤性能。DTAM系統(tǒng)由三部分組成:(1)通過立體測(cè)量完成地圖初始化;(2)根據(jù)重建的地圖估計(jì)相機(jī)運(yùn)動(dòng);(3)先對(duì)每個(gè)像素的深度信息進(jìn)行估計(jì),再通過空間連續(xù)性對(duì)其優(yōu)化。
DTAM算法在實(shí)時(shí)幾何視覺方面取得了重大進(jìn)展,在增強(qiáng)現(xiàn)實(shí)、機(jī)器人等領(lǐng)域具有潛在應(yīng)用價(jià)值,但DTAM算法在跟蹤和重建的過程中,需假設(shè)亮度恒定不發(fā)生變化,對(duì)周圍環(huán)境有較高的要求。
LSD-SLAM (Large Scale Direct monocular SLAM)是J.Engel等人在2014年提出的直接法SLAM系統(tǒng)。在LSD-SLAM系統(tǒng)中,可以在較大規(guī)模的環(huán)境中構(gòu)建一致性地圖,并且利用基于圖像對(duì)齊的高精度位姿估計(jì)方法,將三維環(huán)境實(shí)時(shí)重建為基于關(guān)鍵幀的位姿圖。在該算法中,主要包含兩個(gè)創(chuàng)新點(diǎn):一是創(chuàng)新的提出一種直接跟蹤算法,可以明確的檢測(cè)尺度漂移;另一個(gè)是通過概率的方法解決噪聲值對(duì)跟蹤的影響。
LSD-SLAM算法包括三個(gè)模塊:跟蹤、深度圖估計(jì)及地圖優(yōu)化。跟蹤模塊持續(xù)跟蹤相機(jī)拍攝的圖像;深度圖估計(jì)使用跟蹤幀來完善或替換當(dāng)前關(guān)鍵幀,如果相機(jī)移動(dòng)太快,則通過現(xiàn)有距離較近的關(guān)鍵幀中的投影點(diǎn)重新初始化一個(gè)新的關(guān)鍵幀;當(dāng)關(guān)鍵幀被跟蹤幀替換后,它的深度圖不被進(jìn)一步完善,而是通過地圖優(yōu)化模塊將其添加到全局地圖中。完整的LSD-SLAM算法流程圖如圖4所示[30]。
圖4 LSD-SLAM 算法流程圖Fig.4 The flowchart of LSD-SLAM algorithm
與其它直接法相比,LSD-SLAM算法可以在全局地圖上維護(hù)和跟蹤,包括關(guān)鍵幀的位姿圖和相關(guān)的概率半稠密深度地圖。通過考慮移動(dòng)設(shè)備的CPU架構(gòu)[32],對(duì)LSD-SLAM算法做進(jìn)一步優(yōu)化,將LSD-SLAM算法遷移到移動(dòng)設(shè)備上,獲得不錯(cuò)的效果。在單目相機(jī)的基礎(chǔ)上,J.Engel等人在2015年將LSD-SLAM算法擴(kuò)展到雙目[33]和全方位相機(jī)[34]。
近幾年深度學(xué)習(xí)技術(shù)發(fā)展迅速,在圖像識(shí)別、圖像分類以及目標(biāo)檢測(cè)等領(lǐng)域表現(xiàn)突出。視覺SLAM同樣以圖像為處理對(duì)象,將深度學(xué)習(xí)技術(shù)用到視覺 SLAM 系統(tǒng)中可以極大的促進(jìn)視覺SLAM的發(fā)展。
目前主要是將深度學(xué)習(xí)技術(shù)用于視覺 SLAM系統(tǒng)中的視覺里程計(jì)模塊和閉環(huán)檢測(cè)模塊。
視覺里程計(jì)通過分析關(guān)聯(lián)圖像間的幾何關(guān)系確定機(jī)器人的位姿信息,將位姿信息傳遞到后端優(yōu)化模塊進(jìn)行優(yōu)化,從而構(gòu)建全局一致性地圖?;谏疃葘W(xué)習(xí)的視覺里程計(jì)無需特征提取、特征匹配及復(fù)雜的幾何運(yùn)算,使得整個(gè)過程更加直觀簡(jiǎn)潔。
基于深度學(xué)習(xí)的視覺里程計(jì)中運(yùn)動(dòng)估計(jì)的準(zhǔn)確性和魯棒性依賴于神經(jīng)網(wǎng)絡(luò)估計(jì)器的設(shè)計(jì)和訓(xùn)練的圖像是否涵蓋待測(cè)場(chǎng)景的全部變化[35]。2015年,Konda[36]等人通過提取視覺運(yùn)動(dòng)和深度信息實(shí)現(xiàn)基于深度學(xué)習(xí)的視覺里程計(jì);Kendall[37]等人利用 CNN(卷積神經(jīng)網(wǎng)絡(luò))實(shí)現(xiàn)了輸入為 RGB圖像,輸出為相機(jī)位姿的端到端定位系統(tǒng),該系統(tǒng)提出了 23 層深度卷積網(wǎng)絡(luò)的 PoseNet網(wǎng)絡(luò)模型,利用遷移學(xué)習(xí)將分類問題的數(shù)據(jù)用于解決復(fù)雜的圖像回歸問題,其訓(xùn)練得到的圖像特征相較于傳統(tǒng)的手工特征,對(duì)光照、運(yùn)動(dòng)模糊以及相機(jī)內(nèi)參等具有更強(qiáng)的魯棒性。2017年,Wang[38]等人使用 RCNN(遞歸卷積神經(jīng)網(wǎng)絡(luò))提出一種新的端到端的單目視覺里程計(jì)框架,在該框架中可以利用CNN為視覺里程計(jì)問題提供特征表示,也可以利用RCNN模型對(duì)運(yùn)動(dòng)模型和數(shù)據(jù)關(guān)聯(lián)模型建模,實(shí)驗(yàn)結(jié)果表明該算法具有非常好的性能[35]。Costante G[39]等人構(gòu)建了一個(gè)自編碼深度網(wǎng)絡(luò)模型,用來學(xué)習(xí)產(chǎn)生光流的非線性潛在空間描述,將此自編碼網(wǎng)絡(luò)與其它神經(jīng)網(wǎng)絡(luò)模型聯(lián)合訓(xùn)練,從而估計(jì)相機(jī)的運(yùn)動(dòng)。
與傳統(tǒng)的視覺里程計(jì)相比,基于深度學(xué)習(xí)的視覺里程計(jì)更加直觀簡(jiǎn)潔,無需構(gòu)建復(fù)雜的幾何模型,但當(dāng)訓(xùn)練場(chǎng)景發(fā)生變化時(shí),視覺里程計(jì)會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,以及對(duì)視覺里程計(jì)更加深入的研究,將會(huì)進(jìn)一步提升各種網(wǎng)絡(luò)模型的泛化能力。
閉環(huán)檢測(cè)即檢測(cè)機(jī)器人是否經(jīng)過同一位置,通過檢測(cè)機(jī)器人獲取的當(dāng)前幀圖像與歷史幀圖像的相似性來實(shí)現(xiàn)。閉環(huán)檢測(cè)主要用于消除視覺里程計(jì)中機(jī)器人位姿累積誤差所造成的軌跡漂移,從而得到全局一致的軌跡和地圖。傳統(tǒng)的閉環(huán)檢測(cè)方法大多是基于詞袋模型來實(shí)現(xiàn),使用人工設(shè)計(jì)的特征描述圖像,不能充分利用圖像的深層信息,而基于深度學(xué)習(xí)的閉環(huán)檢測(cè)則通過神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖像的深層特征,以獲得更高的準(zhǔn)確率。
基于深度學(xué)習(xí)的閉環(huán)檢測(cè)主要利用預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型對(duì)圖像進(jìn)行特征提取,充分利用圖像深層次的特征信息。2015年國(guó)防科技大學(xué)[40]提出將深度學(xué)習(xí)用于閉環(huán)檢測(cè)模塊,將AlexNet[41]遷移到閉環(huán)檢測(cè)問題中,用中間層的輸出作為特征來描述整幅圖像,通過二范數(shù)進(jìn)行特征匹配來確定是否存在回環(huán)。Gao[42-43]等使用無監(jiān)督學(xué)習(xí)的方式,采用自編碼網(wǎng)絡(luò)提取圖像特征,并使用相似度矩陣檢測(cè)閉環(huán),在公開的數(shù)據(jù)集上取得了很好的效果[44];2019年Liu[45]等人提出基于改進(jìn)的混合深度學(xué)習(xí)結(jié)構(gòu)的閉環(huán)檢測(cè)方法,利用該網(wǎng)絡(luò)模型生成高層次的語義圖像特征,從而提高閉環(huán)檢測(cè)的準(zhǔn)確率和效率,利用該網(wǎng)絡(luò)模型進(jìn)行檢測(cè)閉環(huán)的過程如圖5所示。
圖5 利用改進(jìn)的混合深度學(xué)習(xí)模型檢測(cè)閉環(huán)的過程Fig.5 An improved hybrid deep learning model is used to detect the closed-loop process
對(duì)于第 k個(gè)關(guān)鍵幀,首先對(duì)其進(jìn)行預(yù)處理,然后利用訓(xùn)練好的網(wǎng)絡(luò)模型提取特征,將提取的高層次語義特征作為圖像向量輸出,最后將提取的圖像向量與關(guān)鍵幀特征向量庫比較,計(jì)算相似矩陣檢測(cè)閉環(huán)。實(shí)驗(yàn)結(jié)果表明,該方法具有較高的準(zhǔn)確率。
基于深度學(xué)習(xí)的閉環(huán)檢測(cè)利用神經(jīng)網(wǎng)絡(luò)提取圖像特征,獲取的圖像信息更豐富。當(dāng)光照、季節(jié)等因素變化時(shí),提取的特征信息仍然具有較好的魯棒性。
隨著機(jī)器人、虛擬現(xiàn)實(shí)等領(lǐng)域的快速發(fā)展,視覺SLAM技術(shù)發(fā)展迅速。最初由利用圖像特征的間接法占主導(dǎo),但隨著直接法的不斷發(fā)展完善,兩種方法相互促進(jìn),共同發(fā)展,提升了視覺SLAM系統(tǒng)的性能?;谏疃葘W(xué)習(xí)的視覺SLAM方法當(dāng)前正處于快速發(fā)展階段,將深度學(xué)習(xí)技術(shù)用于SLAM系統(tǒng)中,不僅能推動(dòng)視覺SLAM技術(shù)的發(fā)展,也可以促進(jìn)深度學(xué)習(xí)技術(shù)的發(fā)展。
多傳感器融合是視覺SLAM未來發(fā)展的一個(gè)重要方向,將視覺與慣性傳感器結(jié)合可以得到更完善的視覺SLAM系統(tǒng),目前深度學(xué)習(xí)技術(shù)只是應(yīng)用在視覺SLAM系統(tǒng)的中局部模塊,隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,研究人員對(duì)視覺SLAM技術(shù)的深入研究,將會(huì)進(jìn)一步促進(jìn)深度學(xué)習(xí)與視覺SLAM的融合。