李少朋,張 濤
同時(shí)定位與地圖構(gòu)建(SLAM)是智能體攜帶其傳感器在運(yùn)動(dòng)過(guò)程中對(duì)自身進(jìn)行定位,同時(shí)以合適的方式描述周?chē)沫h(huán)境[1].SLAM能夠比傳統(tǒng)的文字、圖像和視頻等方式更高效、直觀地呈現(xiàn)信息;在GPS不能正常使用的環(huán)境中,SLAM也可以作為一種有效的替代方案實(shí)現(xiàn)在未知環(huán)境中的實(shí)時(shí)導(dǎo)航.SLAM技術(shù)在服務(wù)機(jī)器人、無(wú)人駕駛汽車(chē)、增強(qiáng)現(xiàn)實(shí)等諸多領(lǐng)域發(fā)揮著越來(lái)越重要的作用.
如圖1所示,一個(gè)完整的SLAM框架由以下4個(gè)方面組成:前端跟蹤、后端優(yōu)化、回環(huán)檢測(cè)、地圖重建.跟蹤前端即視覺(jué)里程計(jì)負(fù)責(zé)初步估計(jì)相機(jī)幀間位姿狀態(tài)及地圖點(diǎn)的位置;后端優(yōu)化負(fù)責(zé)接收視覺(jué)里程計(jì)前端測(cè)量的位姿信息并計(jì)算最大后驗(yàn)概率估計(jì);回環(huán)檢測(cè)負(fù)責(zé)判斷機(jī)器人是否回到了原來(lái)的位置,并進(jìn)行回環(huán)閉合修正估計(jì)誤差;地圖重建負(fù)責(zé)根據(jù)相機(jī)位姿和圖像,構(gòu)建與任務(wù)要求相適應(yīng)的地圖.
圖1 SLAM流程示意圖Fig.1 Workflow of SLAM
近年來(lái),視覺(jué)SLAM技術(shù)得到了廣泛的研究和長(zhǎng)足的發(fā)展.目前,較為先進(jìn)的視覺(jué)SLAM方案在公開(kāi)數(shù)據(jù)集及實(shí)際物理實(shí)驗(yàn)中均取得了較高的精度.傳統(tǒng)的視覺(jué)SLAM方案分為特征點(diǎn)法和直接法兩類(lèi).特征點(diǎn)法從每幀圖片中提取穩(wěn)定的特征點(diǎn),通過(guò)這些特征點(diǎn)具有不變性的描述子完成相鄰幀的匹配;然后通過(guò)對(duì)極幾何較為魯棒地恢復(fù)相機(jī)的姿態(tài)和地圖點(diǎn)坐標(biāo),最后通過(guò)最小化投影誤差完成相機(jī)位姿和地圖結(jié)構(gòu)的微調(diào),每幀所提取的特征點(diǎn)通過(guò)聚類(lèi)等操作進(jìn)行回環(huán)檢測(cè)或重定位.但是特征點(diǎn)的提取及匹配是較為耗時(shí)的工作,使得經(jīng)典的特征點(diǎn)法比直接法運(yùn)行速度要慢.PTAM[2]是早期較為典型的特征點(diǎn)法,該方法基于非線性優(yōu)化后端采用了基于關(guān)鍵幀的Bundle Adjustment (BA)[3]來(lái)求解位姿與地圖結(jié)構(gòu),之后的很多的特征點(diǎn)法都是該方法的改進(jìn)版本,其中最為成功的一個(gè)就是ORB-SLAM[4],這也是目前效果最好的特征點(diǎn)法.直接法不再提取特征點(diǎn),直接通過(guò)光度誤差來(lái)恢復(fù)相機(jī)的姿態(tài)和地圖結(jié)構(gòu),不用計(jì)算關(guān)鍵點(diǎn)和描述子.由于直接法中未提取特征點(diǎn),沒(méi)有能夠表征一幀圖像的全局特征,直接法的回環(huán)檢測(cè)還是一個(gè)開(kāi)放的話題,所以長(zhǎng)時(shí)間導(dǎo)航的漂移問(wèn)題是直接法所面臨的主要問(wèn)題.LSD-SLAM[5]是典型的直接法SLAM,該方法能夠在無(wú)GPU加速的情況下實(shí)時(shí)運(yùn)行.DSO-SLAM[6]以LSD-SLAM為基礎(chǔ),通過(guò)光度修正在一定程度上彌補(bǔ)了未提取穩(wěn)定特征點(diǎn)的不足,滑動(dòng)窗口優(yōu)化及邊緣化策略充分利用的各幀圖像的信息.DSO-SLAM無(wú)論在估計(jì)精度還是運(yùn)行效率上都有非常優(yōu)異的表現(xiàn).
但自2017年以來(lái),傳統(tǒng)的視覺(jué)SLAM方案再?zèng)]有取得實(shí)質(zhì)性的進(jìn)展,傳統(tǒng)視覺(jué)SLAM方法有以下幾個(gè)方面的問(wèn)題還沒(méi)有較為完備的解決方案:
(1)在光照條件惡劣或光照變化較大等不利條件下,算法的魯棒性還不是很高;
(2)在相機(jī)運(yùn)動(dòng)較大的情況,傳統(tǒng)算法容易出現(xiàn)“跟丟”的情況;
(3)傳統(tǒng)算法不能識(shí)別前景物體,即對(duì)場(chǎng)景中運(yùn)動(dòng)的物體只能當(dāng)作 “壞點(diǎn)”來(lái)處理,沒(méi)有較好的解決方案.
隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)領(lǐng)域的發(fā)展,越來(lái)越多的視覺(jué)問(wèn)題都通過(guò)深度學(xué)習(xí)的方式取得了更高的突破.目前深度學(xué)習(xí)在圖像分類(lèi)、識(shí)別、物體檢測(cè)、圖像分割等幾大領(lǐng)域的表現(xiàn)都遠(yuǎn)遠(yuǎn)高于傳統(tǒng)人工設(shè)計(jì)的算法.視覺(jué)SLAM同樣以圖像為處理對(duì)象,這為神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力在該領(lǐng)域的應(yīng)用提供了很大的可能.深度學(xué)習(xí)與SLAM的結(jié)合在改善了視覺(jué)里程計(jì)和場(chǎng)景識(shí)別等由于手工設(shè)計(jì)特征而帶來(lái)的應(yīng)用局限性,潛在提高了機(jī)器人的學(xué)習(xí)能力和智能化水平.采用深度學(xué)習(xí)方式處理SLAM問(wèn)題,有以下幾個(gè)研究層面的優(yōu)勢(shì):
(1)基于深度學(xué)習(xí)的SLAM方案對(duì)光照有較好的不變性,能夠在光照條件較為惡劣的條件下工作;
(2)基于深度學(xué)習(xí)的SLAM方案能夠識(shí)別并提取環(huán)境中移動(dòng)的物體,可以進(jìn)行動(dòng)態(tài)環(huán)境下的SLAM建模;
(3)通過(guò)深度學(xué)習(xí)的方式可以提取高層語(yǔ)義信息,為語(yǔ)義SLAM的構(gòu)建以及場(chǎng)景語(yǔ)義信息的理解及使用提供了更大的幫助;
(4)采用深度學(xué)習(xí)的方式更有利于信息及知識(shí)的壓縮保存,更有益于機(jī)器人知識(shí)庫(kù)的構(gòu)建;
(5)基于深度學(xué)習(xí)的SLAM方案更符合人類(lèi)認(rèn)知及環(huán)境交互的規(guī)律,有更大的研究及發(fā)展的潛力.
基于前述分析,本文對(duì)基于深度學(xué)習(xí)的SLAM方案做了廣泛調(diào)研.重點(diǎn)在基于深度學(xué)習(xí)的視覺(jué)里程計(jì)、回環(huán)檢測(cè)方法兩個(gè)方面做了綜述.并指出了未來(lái)基于深度學(xué)習(xí)的視覺(jué)SLAM方案的研究趨勢(shì)與發(fā)展方向.
視覺(jué)里程計(jì)(VO)是通過(guò)分析關(guān)聯(lián)圖像之間的多視幾何關(guān)系確定機(jī)器人位置與姿態(tài)過(guò)程.相較于傳統(tǒng)的視覺(jué)里程計(jì)方法,基于深度學(xué)習(xí)的方法無(wú)需特征提取,也無(wú)需特征匹配和復(fù)雜幾何運(yùn)算,使得整個(gè)計(jì)算過(guò)程更加直觀簡(jiǎn)潔.根據(jù)訓(xùn)練方法和數(shù)據(jù)集標(biāo)簽化程度的不同,將基于深度學(xué)習(xí)的視覺(jué)里程計(jì)方法分為監(jiān)督學(xué)習(xí),無(wú)監(jiān)督學(xué)習(xí),半監(jiān)督學(xué)習(xí)三類(lèi)分別進(jìn)行討論.
監(jiān)督學(xué)習(xí)方法的基本思路為通過(guò)圖片幀的輸入來(lái)映射出該幀的位置和姿態(tài),自卷積神經(jīng)網(wǎng)絡(luò)(CNN)得到大規(guī)模應(yīng)用以來(lái),基于監(jiān)督學(xué)習(xí)的視覺(jué)里程計(jì)設(shè)計(jì)方法就得到了學(xué)者的廣泛關(guān)注和研究,最早的研究通過(guò)分類(lèi)網(wǎng)絡(luò)末端用Softmax層來(lái)輸出各幀的速度大小和方向,雖然效果不理想,但是說(shuō)明了深度學(xué)習(xí)在該領(lǐng)域應(yīng)用的可行性[7].
PoseNet[8]為早期監(jiān)督學(xué)習(xí)方法的典型代表,其通過(guò)SFM對(duì)所采集圖像進(jìn)行批處理,計(jì)算出其對(duì)應(yīng)的位姿作為數(shù)據(jù)集的標(biāo)簽.然后建立由圖片到六自由度位姿的回歸模型,模型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)借鑒了GoogleLeNet[9]的網(wǎng)絡(luò)結(jié)構(gòu)及參數(shù),并在此基礎(chǔ)上做了相應(yīng)的修改和在訓(xùn)練.PoseNet通過(guò)遷移學(xué)習(xí),在無(wú)大量標(biāo)簽數(shù)據(jù)集的支持下,得到了精度較高的位姿定位.然而這種以圖片幀為輸入,以絕對(duì)位姿為輸出模式在泛化能力上有一定的不足.文獻(xiàn)[10]采用Siamese網(wǎng)絡(luò)分別從相鄰圖像提取特征估計(jì)了圖像間的相對(duì)位姿.文獻(xiàn)[11]在原有研究成果的基礎(chǔ)上,以圖像幀之間的稠密光流作為輸入,以圖像幀之間的相對(duì)位姿進(jìn)行訓(xùn)練.首先將對(duì)稠密光流圖像進(jìn)行降采樣學(xué)習(xí)其較“粗略”的全局特征,同時(shí)將原圖像進(jìn)行分割,學(xué)習(xí)其較“精細(xì)”的局部特征,之后通過(guò)局部特征與全局特征相結(jié)合的方式來(lái)表征整個(gè)圖像,之后以圖像特征為輸入,相對(duì)位姿為輸出訓(xùn)練整個(gè)網(wǎng)絡(luò).網(wǎng)絡(luò)的訓(xùn)練是分步進(jìn)行的,該方法與PoseNet相比無(wú)論在精度還是在泛化能力上都有了一定的提高.這種局部特征與全局特征共同學(xué)習(xí)的方式為該領(lǐng)域的研究提供了很好的思路.
在基于監(jiān)督學(xué)習(xí)的視覺(jué)里程計(jì)方法中,目前效果最好且應(yīng)用較為廣泛的為 DeepVO[12],DeepVO能夠從序列原始圖像直接映射出其對(duì)應(yīng)的位姿,它不僅能夠通過(guò)卷積神經(jīng)網(wǎng)絡(luò)(CNN)學(xué)習(xí)圖像的特征,而且能夠通過(guò)深度遞歸神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)(RNN)隱式地學(xué)習(xí)圖像間的動(dòng)力學(xué)關(guān)系及內(nèi)在聯(lián)系.在特征提取方面,相鄰兩幀圖像在通道上進(jìn)行組合,堆疊成六通道的圖像(每個(gè)圖像有RGB三通道),然后通過(guò)多層CNN網(wǎng)絡(luò)對(duì)圖像進(jìn)行提取,將提取的特征輸入到RNN網(wǎng)絡(luò)中,Long short-term memory(LSTM)在一定的滑動(dòng)窗口同時(shí)訓(xùn)練連續(xù)的圖像幀最后輸出圖像位姿.這種CNN+RNN的結(jié)構(gòu)充分利用了當(dāng)前幀圖像和之前某一區(qū)域幀的信息,符合人類(lèi)認(rèn)知及信息處理的流程,整個(gè)過(guò)程不涉及任何幾何計(jì)算,可以行端到端的學(xué)習(xí),由于模型學(xué)習(xí)的是各幀之間的位姿關(guān)系,該模型也有較好的泛化能力,可以在陌生的環(huán)境下使用.DeepVO與經(jīng)過(guò)精細(xì)設(shè)計(jì)和優(yōu)化的傳統(tǒng)方法相比在精度上沒(méi)有絕對(duì)的優(yōu)勢(shì),但因其巨大的研究?jī)r(jià)值得到了廣泛的關(guān)注,VINet[13]采用類(lèi)似的結(jié)構(gòu)將通過(guò)CNN提取的圖像間的特征與IMU數(shù)據(jù)同時(shí)輸入到RNN網(wǎng)絡(luò)進(jìn)行訓(xùn)練并輸出位姿.Deep EndoVO[14]將該結(jié)構(gòu)應(yīng)用在了內(nèi)鏡膠囊機(jī)器人上進(jìn)行定位,取得了較好的效果并證明該方法的實(shí)用價(jià)值.
無(wú)監(jiān)督學(xué)習(xí)在視覺(jué)里程計(jì)中應(yīng)用較早,起初無(wú)監(jiān)督學(xué)習(xí)在該領(lǐng)域的應(yīng)用是提取穩(wěn)定的特征點(diǎn),通過(guò)特征點(diǎn)的匹配來(lái)求解相對(duì)位姿.近年來(lái),隨著深度學(xué)習(xí)技術(shù)的發(fā)展,研究者逐步把側(cè)重點(diǎn)放在了直接的位姿估計(jì)上.文獻(xiàn)[15]較早地采用自編碼的方式同時(shí)估計(jì)圖像的深度及圖像間的運(yùn)動(dòng).文獻(xiàn)[16]通過(guò)無(wú)監(jiān)督學(xué)習(xí)的方式進(jìn)行單一圖像的深度估計(jì),該方法采用雙目數(shù)據(jù)集,通過(guò)多重目標(biāo)損失訓(xùn)練網(wǎng)絡(luò)產(chǎn)生視差圖.如圖2所示,以訓(xùn)練雙目數(shù)據(jù)集左側(cè)圖像為例,左側(cè)圖像通過(guò)網(wǎng)絡(luò)訓(xùn)練分別產(chǎn)生左側(cè)視差圖和右側(cè)視差圖,左側(cè)視差圖與右側(cè)圖像通過(guò)幾何計(jì)算產(chǎn)生右側(cè)左側(cè)圖像,右側(cè)視差圖和左側(cè)圖像通過(guò)幾何計(jì)算產(chǎn)生右側(cè)圖像,則訓(xùn)練誤差由3個(gè)部分組成:(1)重建誤差,即重建出的圖像與真實(shí)圖像的差;(2)視差圖平滑誤差;(3)左右視差圖一致性誤差.通過(guò)模型的訓(xùn)練,該網(wǎng)絡(luò)對(duì)單個(gè)圖像深度估計(jì)達(dá)到了非常高精度,超過(guò)了最先進(jìn)的監(jiān)督學(xué)習(xí)方法.這種估計(jì)深度的無(wú)監(jiān)督學(xué)習(xí)方法為基于無(wú)監(jiān)督學(xué)習(xí)的視覺(jué)里程計(jì)設(shè)計(jì)提供了很好的思路.
圖2 網(wǎng)絡(luò)訓(xùn)練示意圖(左側(cè)為訓(xùn)練損失、右側(cè)為數(shù)據(jù)傳輸流程)[27]Fig.2 Network training diagram of Literature[27]
參照文獻(xiàn)[17]中的思路與方法,文獻(xiàn)[18]通過(guò)無(wú)監(jiān)督學(xué)習(xí)的方式同時(shí)估計(jì)出了圖像的深度、圖像間的位姿狀態(tài)以及圖像中的動(dòng)態(tài)物體,該方法以單幀圖像通過(guò)Depth CNN網(wǎng)絡(luò)生成深度圖,相鄰兩幀圖像通過(guò)Pose CNN生成圖像間的位姿,根據(jù)深度圖與位姿將原圖像投射到目標(biāo)圖像上,最后通過(guò)真實(shí)目標(biāo)圖像與投射產(chǎn)生目標(biāo)圖像的重建誤差來(lái)訓(xùn)練網(wǎng)絡(luò).在重建誤差計(jì)算的過(guò)程中,會(huì)出現(xiàn)一些“壞點(diǎn)”,這些“壞點(diǎn)”會(huì)被給予一定的權(quán)值來(lái)減小“壞點(diǎn)”對(duì)整個(gè)系統(tǒng)的影響.然而這些被給予權(quán)值的“壞點(diǎn)”就是圖像中動(dòng)態(tài)物體所代表的點(diǎn).該方法在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、初值設(shè)定和訓(xùn)練方法上都采用了較為合適策略,是目前效果最好的無(wú)監(jiān)督學(xué)習(xí)方法.之后也有基于該方法的改進(jìn)算法,其中UnDeepVO提出了一種基于雙目數(shù)據(jù)集的無(wú)監(jiān)督學(xué)習(xí)方法[19],其在對(duì)雙目相機(jī)左右側(cè)圖像進(jìn)行位姿和深度學(xué)習(xí)的同時(shí),又針對(duì)雙目相機(jī)某一側(cè)的圖像進(jìn)行幀間位姿的學(xué)習(xí),與單目的學(xué)習(xí)方案相比,該方法能夠真實(shí)地恢復(fù)位姿的尺度.
GeoNet在文獻(xiàn)[20]的基礎(chǔ)上做了較大的改進(jìn)[21-22],其在計(jì)算圖像重構(gòu)誤差的過(guò)程中分兩步進(jìn)行,首先假設(shè)圖像之間是剛性變換,不存在動(dòng)態(tài)的前景物體,通過(guò)生成圖像與真實(shí)圖像間結(jié)構(gòu)誤差[23]及像素誤差的加權(quán)和來(lái)進(jìn)行光流的預(yù)測(cè).然后以此為初值,通過(guò)FlowNet2.0[24]進(jìn)行場(chǎng)景中運(yùn)動(dòng)物體的光流計(jì)算.除此之 外GeoNet在進(jìn)行圖像投影計(jì)算時(shí),將多個(gè)圖像在通道上融合,通過(guò)求解多幀之間的位姿,提升了位姿估計(jì)的精度.
在單目相機(jī)深度預(yù)測(cè)領(lǐng)域,文獻(xiàn)[21]采用一種半監(jiān)督學(xué)習(xí)方法,在無(wú)深度圖像作為監(jiān)督數(shù)據(jù)時(shí),采用了與文獻(xiàn)[16]類(lèi)似的方法,以圖像的重構(gòu)誤差以及估計(jì)深度圖像的平滑誤差作為損失函數(shù),在深度圖像存在時(shí),可以再加上真實(shí)深度圖像與估計(jì)深度圖像的誤差作為損失函數(shù).這種半監(jiān)督方式加速了模型的收斂,并且解決了無(wú)監(jiān)督學(xué)習(xí)的不適定問(wèn)題.
監(jiān)督學(xué)習(xí)和無(wú)(半)監(jiān)督學(xué)習(xí)在該領(lǐng)域均取得了一定的成果,從現(xiàn)有的成果來(lái)看,無(wú)(半)監(jiān)督學(xué)習(xí)在數(shù)據(jù)集采集、網(wǎng)路訓(xùn)練的可操作性以及最終的估計(jì)精度和泛化能力方面均有一定的優(yōu)勢(shì).重要的是,無(wú)(半)監(jiān)督學(xué)習(xí)以位姿為輸入量,通過(guò)位姿變換后的圖像與實(shí)際圖像的吻合程度為監(jiān)督信息進(jìn)行學(xué)習(xí),這更符合我們?nèi)祟?lèi)認(rèn)知的規(guī)律,具有較大的發(fā)展?jié)摿?由于半監(jiān)督學(xué)習(xí)通過(guò)部分人工標(biāo)定或測(cè)量的信息,能夠較好的恢復(fù)場(chǎng)景的尺度,與無(wú)監(jiān)督相比有較大優(yōu)勢(shì).然而在特定任務(wù)的限制環(huán)境中,可以采用監(jiān)督學(xué)習(xí)的方式,采集特定環(huán)境下的數(shù)據(jù)集進(jìn)行訓(xùn)練,與無(wú)(半)監(jiān)督方法相比會(huì)得到更好的效果.
回環(huán)檢測(cè)是判斷機(jī)器人回到了原來(lái)的位置并將累計(jì)誤差合理的分配到回環(huán)的軌跡上,圖像之間的描述和匹配是回環(huán)檢測(cè)的關(guān)鍵技術(shù).在傳統(tǒng)方法中,研究者們通常涉及人工的特征(hand-crafted features)來(lái)描述一幅圖像.人工特征分為局部特征和全局特征,局部特征包括ORB,SIFT,SURF等,詞袋法(bag of-visual-words)[25]通過(guò)局部特征的統(tǒng)計(jì)數(shù)據(jù)來(lái)描述整個(gè)圖像.全局特征包括GIST[26]、Vector of locally aggregated descriptors (VLAD)[27]、Fisher vector[28]等分別以不同的計(jì)算方式描述整幅圖像的特征.
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,越來(lái)越多的研究?jī)A向于采用深度神經(jīng)網(wǎng)絡(luò)特征來(lái)描述一幅圖像進(jìn)行回環(huán)檢測(cè);近兩年也有不少研究者通過(guò)對(duì)三維點(diǎn)云學(xué)習(xí)方式提取其特征,為基于三維點(diǎn)云的回環(huán)檢測(cè)提供了可能.
隨著Places數(shù)據(jù)集[29]的提出與應(yīng)用,深度神經(jīng)網(wǎng)絡(luò)具備了強(qiáng)大的場(chǎng)景描述和識(shí)別能力,而這正是回環(huán)檢測(cè)所需要的.國(guó)防科技大學(xué)[30]較早地將深度學(xué)習(xí)應(yīng)用在回環(huán)檢測(cè)中,其將AlexNet[17]遷移到回環(huán)檢測(cè)問(wèn)題中,用其中間層的輸出作為特征來(lái)描述整幅圖像,通過(guò)二范數(shù)進(jìn)行特征匹配來(lái)確定是否存在回環(huán).之后研究者還通過(guò)LSH數(shù)據(jù)壓縮、圖像幀的管理[31]或主成分分析(principal component analysis,PCA)[32-33]來(lái)增強(qiáng)匹配的效率.清華大學(xué)高翔等[34]提出通過(guò)無(wú)監(jiān)督學(xué)習(xí)的方式,采用堆疊去噪自動(dòng)編碼器(stacked denoising auto-encoder,SDA)的方式描述整幅圖像來(lái)進(jìn)行圖像的匹配實(shí)現(xiàn)回環(huán)檢測(cè),并取得了較好的效果.仿真結(jié)果表明,初期的基于深度學(xué)習(xí)的回環(huán)檢測(cè)方法與傳統(tǒng)方法相比具有較強(qiáng)的魯棒性,但是這些方法并未有針對(duì)性設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu),也未進(jìn)一步地進(jìn)行網(wǎng)絡(luò)的訓(xùn)練,在回環(huán)檢測(cè)的精度及效率上沒(méi)有明顯的提高.
之后有不少研究者針對(duì)回環(huán)檢測(cè)問(wèn)題在網(wǎng)絡(luò)訓(xùn)練和數(shù)據(jù)處理方面都進(jìn)行了相應(yīng)的改進(jìn)性設(shè)計(jì).文獻(xiàn)[37]沒(méi)有直接對(duì)整幅圖像進(jìn)行特征提取,而是根據(jù)預(yù)訓(xùn)練的結(jié)構(gòu)提取圖像中的路標(biāo)區(qū)域,之后通過(guò)ConvNet計(jì)算每塊區(qū)域的特征并將特征進(jìn)行壓縮.通過(guò)特征匹配完成路標(biāo)區(qū)域的匹配,通過(guò)各個(gè)路標(biāo)區(qū)域的相似性來(lái)計(jì)算整幅圖像之間的相似性.除此之外,該方法還將路標(biāo)區(qū)域框的大小作為監(jiān)督條件以減小出現(xiàn)假陽(yáng)性的概率.方法設(shè)計(jì)顯著地提高了對(duì)場(chǎng)景中視點(diǎn)變化或局部遮擋的魯棒性.文獻(xiàn)[38]用Places數(shù)據(jù)集訓(xùn)練了網(wǎng)絡(luò),通過(guò)局部敏感Hashing變換在精度損失較小的情況下將匹配速度加快了兩個(gè)數(shù)量級(jí);并將特征輸出編碼成語(yǔ)義信息來(lái)劃分搜索空間大大減小場(chǎng)景了搜索的時(shí)間.這種根據(jù)兩層特征劃分搜搜空間實(shí)現(xiàn)“由粗到細(xì)”的場(chǎng)景匹配的方法,可以很好的應(yīng)用在圖像庫(kù)的搜索過(guò)程中.
同時(shí)也有研究者采用了網(wǎng)絡(luò)學(xué)習(xí)特征與人工設(shè)計(jì)特征相結(jié)合的方式進(jìn)行場(chǎng)景識(shí)別[39-40],其中NetVLAD[40]是目前在場(chǎng)景識(shí)別領(lǐng)域識(shí)別效果最好的網(wǎng)絡(luò),其通過(guò)CNN特征與局部聚合描述向量(vector of locally aggregated descriptors,VLAD)相結(jié)合的方式構(gòu)建神經(jīng)網(wǎng)絡(luò),并通基于Google Street View Time Machine數(shù)據(jù)集[35-36]對(duì)網(wǎng)絡(luò)進(jìn)行弱監(jiān)督學(xué)習(xí).圖像輸入后經(jīng)過(guò)一系列卷積操作生成W×H×D維的特征,這些特征可看作N(N=W×H)個(gè)D維的局部特征,這些局部特征通過(guò)NetVLAD層進(jìn)行類(lèi)似于VLAD操作,產(chǎn)生整個(gè)圖像的特征向量.NetVLAD層對(duì)傳統(tǒng)VLAD算法做了相應(yīng)的改進(jìn),傳統(tǒng)VLAD算法如式(1)所示,其中權(quán)重ak(xi)是與局部向量和聚合簇(cluster)ck相關(guān)的量.
(1)
在NetVLAD層中將權(quán)重的相關(guān)參數(shù)wk、bk和聚合簇向量ck均設(shè)為需要學(xué)習(xí)的參數(shù),如式(2)所示,這種設(shè)計(jì)保證了計(jì)算的平滑性,能夠順利地計(jì)算梯度,保證了模型能夠進(jìn)行端到端的學(xué)習(xí).
(2)
傳統(tǒng)VLAD是無(wú)監(jiān)督的分類(lèi)學(xué)習(xí),由于NetVLAD中存在監(jiān)督數(shù)據(jù)(即兩幅圖像是否來(lái)自同一位置是已知的),這樣在學(xué)習(xí)聚合簇向量ck位置時(shí),比傳統(tǒng)VLAD方法更有優(yōu)勢(shì).最后經(jīng)過(guò)正則化操作NetVLAD層輸出了D×K維向量,用以描述圖像的全局特征.模型的訓(xùn)練采用的谷歌街景數(shù)據(jù)集,該數(shù)據(jù)集用GPS標(biāo)注了圖像對(duì)應(yīng)的位置,由于在同一位置由于視角或方向的不同,場(chǎng)景也是不同的,但可以肯定的是不在同一地方(GPS位置相差較遠(yuǎn))描述的肯定不是同一場(chǎng)景,在同一地方描述可能是同一場(chǎng)景.所以,模型采用了弱監(jiān)督學(xué)習(xí)的方式:
(3)
由于三維點(diǎn)云的無(wú)序性、坐標(biāo)系統(tǒng)難統(tǒng)一等問(wèn)題一直沒(méi)有得到很好的解決,對(duì)于基于三維點(diǎn)云的回環(huán)檢測(cè)問(wèn)題僅停留于理論研究的階段.其中文獻(xiàn)[41]以三維體素(voxel)網(wǎng)格模型為對(duì)象用于判斷點(diǎn)云是否來(lái)自同一位置為目標(biāo),首先提取體素網(wǎng)格模型中的人工統(tǒng)計(jì)特征,然后將人工特征編碼為向量輸入到神經(jīng)網(wǎng)絡(luò)中以數(shù)據(jù)集中點(diǎn)云是否匹配為監(jiān)督信息進(jìn)行學(xué)習(xí)訓(xùn)練.該方法是該領(lǐng)域?yàn)閿?shù)不多的方法中的一個(gè),其在點(diǎn)云匹配的精度及效率上都有待進(jìn)一步的提高.但其基于深度學(xué)習(xí)的三維點(diǎn)云位姿配準(zhǔn)及分類(lèi)方法對(duì)該領(lǐng)域提供了很多可供借鑒的方法.
在基于三維點(diǎn)云的位姿配準(zhǔn)方面,傳統(tǒng)的基于點(diǎn)云人工特征的配準(zhǔn)方法已取得不俗的效果[42-44],在深度學(xué)習(xí)領(lǐng)域,文獻(xiàn)[45]通過(guò)對(duì)三維點(diǎn)云特征的學(xué)習(xí)實(shí)現(xiàn)了位姿的配準(zhǔn),該方法首先通過(guò)隨機(jī)球面覆蓋集(random sphere cover set,RSCS)算法將點(diǎn)云劃分為獨(dú)立的小塊點(diǎn)云,劃分后的局部點(diǎn)云命名為超點(diǎn)(super-point);然后為超點(diǎn)選擇歸一化的局部坐標(biāo)系,將超點(diǎn)數(shù)據(jù)投影到當(dāng)前2D深度圖像中并做顯著性檢驗(yàn)和過(guò)濾;之后通過(guò)深度學(xué)習(xí)自編碼的方式將提取超點(diǎn)特征,通過(guò)超點(diǎn)的特征匹配完成當(dāng)前幀的初定位,最后通過(guò)ICP算法對(duì)位姿進(jìn)行微調(diào)得到相機(jī)的位姿.該方法對(duì)三維點(diǎn)云回環(huán)檢測(cè)在點(diǎn)云劃分管理以及檢測(cè)回環(huán)后的位姿矯正方面有很大的借鑒意義.
在點(diǎn)云分類(lèi)及特征提取方面,3Dmatch[46]首先將點(diǎn)云轉(zhuǎn)換為三維體素網(wǎng)格模型,體素網(wǎng)格模型較為有序的數(shù)據(jù)為輸入通過(guò)Siamese網(wǎng)絡(luò)判斷點(diǎn)云是否匹配,根據(jù)監(jiān)督數(shù)據(jù)集完成訓(xùn)練.由于體素網(wǎng)格模型中網(wǎng)格的有序性,大部分對(duì)于三維點(diǎn)云模型的處理也都是基于此模型,然而向三維體素網(wǎng)格模型的轉(zhuǎn)換會(huì)造成一定程度的失真,而且付出較大的計(jì)算代價(jià).2017年P(guān)ointNet[47]有針對(duì)性地設(shè)計(jì)了網(wǎng)絡(luò)直接用歐式空間中的點(diǎn)云作為輸入進(jìn)行學(xué)習(xí),歐式空間中的點(diǎn)云具有無(wú)序性、單位點(diǎn)之間相互聯(lián)系、對(duì)旋轉(zhuǎn)有不變性等特點(diǎn),PointNet進(jìn)行了有針對(duì)性的設(shè)計(jì),以點(diǎn)云n個(gè)點(diǎn)云為輸入(每個(gè)點(diǎn)包含三通道的位置信息),首先通過(guò)空間變換網(wǎng)絡(luò)進(jìn)行訓(xùn)練出一個(gè)空間變換矩陣(T-Net)(通過(guò)正則化項(xiàng)使其保持正交性),在空間位置上對(duì)點(diǎn)云進(jìn)行規(guī)范化,然后每個(gè)點(diǎn)通過(guò)多層感知機(jī)(multi-layer perceptron,MLP)進(jìn)行特征學(xué)習(xí)是每個(gè)點(diǎn)賦予了64維的特征,之后再通過(guò)特征空間變換(64維)和多層感知機(jī)學(xué)習(xí)是每個(gè)點(diǎn)具有1024維的特征,然后通過(guò)最大池(MaxPooling)完成特征壓縮,之后再通過(guò)多層感知機(jī)完成類(lèi)別的輸出;在語(yǔ)義分割方面,由于語(yǔ)義信息與局部信息和全局信息都有關(guān),所以通過(guò)局部特征和全局特征的融合完成語(yǔ)義識(shí)別.該方法利用MaxPooling函數(shù)與參數(shù)順序無(wú)關(guān)的特點(diǎn)成功的處理了點(diǎn)云的無(wú)序性,并且通過(guò)空間變換網(wǎng)絡(luò)(T-Net)規(guī)范化了空間點(diǎn)云的空間一致性問(wèn)題.最后結(jié)果表明PointNet能夠有效的識(shí)別出點(diǎn)云中信息豐富的物體的骨架(skeleton)信息,達(dá)到了很好的效果.在PointNet作者之后的研究中,PointNet++[48]采用PointNet的基本思路進(jìn)行點(diǎn)云的局部特征提取,首先通過(guò)最遠(yuǎn)點(diǎn)法分割點(diǎn)云(點(diǎn)云區(qū)域可重復(fù)),然后對(duì)局部點(diǎn)云進(jìn)行特征提取生成規(guī)模更小的點(diǎn)云,以此類(lèi)推直至點(diǎn)云規(guī)模小于一定值時(shí)通過(guò)全連接層(FCN)輸出點(diǎn)云的類(lèi)別;當(dāng)以點(diǎn)云分割為目標(biāo)是則需要恢復(fù)點(diǎn)云規(guī)模給出語(yǔ)義信息.PointNet的出現(xiàn)一定程度上改變了針對(duì)三維點(diǎn)云研究的格局,使得模型的研究不再依賴(lài)于體素網(wǎng)格模型,加快了三維點(diǎn)云特征提取、識(shí)別等技術(shù)的發(fā)展.
傳統(tǒng)的三維重建方法中,比較典型的方法為KinectFusion[49]和ElasticFusion[50],深度學(xué)習(xí)對(duì)于三維重建的貢獻(xiàn)主要集中正在單目圖像的深度點(diǎn)云估計(jì)上[51-52].文獻(xiàn)[53]將深度學(xué)習(xí)應(yīng)用到了Structure from Motion領(lǐng)域,進(jìn)行了初步探索.CodeSLAM[54]為首個(gè)基于深度學(xué)習(xí)的實(shí)時(shí)三維重建方案,也是目前僅有的基于深度學(xué)習(xí)的完整方案.其以單目光度圖像的深度估計(jì)為基礎(chǔ),提出了一種緊湊、密集的幾何場(chǎng)景表示方案.CodeSLAM根據(jù)每幀圖像生成可進(jìn)行參數(shù)優(yōu)化的點(diǎn)云表示,結(jié)合每幀圖像對(duì)應(yīng)的位姿對(duì)場(chǎng)景統(tǒng)一優(yōu)化以實(shí)現(xiàn)全局的一致性.
深度學(xué)習(xí)在實(shí)時(shí)三維重建中的應(yīng)用處于初步探索階段,隨著CodeSLAM的提出與實(shí)現(xiàn),深度學(xué)習(xí)在該領(lǐng)域應(yīng)用的可行性得到了驗(yàn)證.深度三維重建將會(huì)憑借其巨大的研究?jī)r(jià)值引來(lái)更多的關(guān)注,深度三維重建方案也會(huì)得到進(jìn)一步的提升和改進(jìn).
在人類(lèi)的認(rèn)知中,我們看到場(chǎng)景中的事物時(shí),除了知道其位置信息外(3通道),還知道其顏色信息(3通道),除此之外還知道其語(yǔ)義信息以及是否可觸碰、柔軟堅(jiān)硬等一系列的信息.然而我們深度SLAM方法僅僅構(gòu)建的三維點(diǎn)云信息,這是不夠的,所以需要在更高的維度上構(gòu)建更為豐富的更高階的地圖從而適應(yīng)多樣化的任務(wù),也反過(guò)來(lái)幫助機(jī)器人的自我導(dǎo)航.SLAM創(chuàng)始人Andrew J.Davison在他近期的綜述Future Mapping[55]中也有了類(lèi)似的設(shè)想.
由于深度SLAM采用了智能的方式,其之后的發(fā)展方向會(huì)越來(lái)越接近人類(lèi)的感知和思考模式,其中文獻(xiàn)[56]做了類(lèi)似的探索,其構(gòu)建了一個(gè)完全端到端的模型,該模型以序列圖像為輸入,首先根據(jù)Local Pose Estimation Network求圖像間的相對(duì)位姿,之后通過(guò)Pose Aggregation對(duì)相對(duì)位姿信息進(jìn)行壓縮,然后將處理后的相對(duì)位姿信息傳入Neural Graph Optimization網(wǎng)絡(luò),該網(wǎng)絡(luò)根據(jù)輸入的相對(duì)位姿信息輸出全局的絕對(duì)位姿信息,并通過(guò)大腦的Soft Attention 模型提取路徑關(guān)鍵信息并通過(guò)信息搜索生成各幀之間的相似性矩陣,通過(guò)相似性矩陣完成SLAM中的回環(huán)檢測(cè)功能,最后輸出了整個(gè)行走的路徑,該路徑與真實(shí)路徑的差異作為損失函數(shù)對(duì)網(wǎng)絡(luò)的進(jìn)行訓(xùn)練.最后該網(wǎng)絡(luò)在游戲的模擬環(huán)境中達(dá)到了較好的效果,并且驗(yàn)證了Soft Attention模型執(zhí)行回環(huán)檢測(cè)對(duì)全局位姿估計(jì)的作用.根據(jù)現(xiàn)有的深度學(xué)習(xí)技術(shù)發(fā)展程度,該方法并沒(méi)有在真實(shí)環(huán)境中,達(dá)到較好的效果,但是這種端對(duì)端的訓(xùn)練模式,以及整個(gè)網(wǎng)絡(luò)的信息處理的過(guò)程,符合我們?nèi)祟?lèi)認(rèn)知的流程,具有很大的發(fā)展?jié)摿?
人類(lèi)到了陌生的環(huán)境,會(huì)主動(dòng)的去環(huán)顧四周來(lái)更好地完成自我的定位和環(huán)境的感知.當(dāng)我們迷路是會(huì)主動(dòng)地去尋找自己記得的標(biāo)志物或者退回到原來(lái)的地方從而確定自己的位置,未來(lái)智能機(jī)器人也應(yīng)該有類(lèi)似的能力.其中,文獻(xiàn)[57]做了初步的探索,其通過(guò)深度學(xué)習(xí)的方式進(jìn)行了Active SLAM初步的嘗試,該模型在進(jìn)行學(xué)習(xí)的過(guò)程中除了輸出相機(jī)當(dāng)前位姿外還輸出相機(jī)運(yùn)動(dòng)的策略,該策略用以輔助相機(jī)的下一步更好的定位,該網(wǎng)絡(luò)模型在模擬的環(huán)境中進(jìn)行了驗(yàn)證,并取得了一定的效果.
定位與感知不是最終目的,最終目的是通過(guò)精確的定位及感知完成多樣化的任務(wù).這對(duì)深度SLAM提出了更高的要求,在對(duì)深度SLAM網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)訓(xùn)練時(shí),需要以任務(wù)的完成情況為指標(biāo)進(jìn)行訓(xùn)練.Google的DeepMind做了類(lèi)似的嘗試[58],其利用谷歌街景數(shù)據(jù)集,在采集到圖像輸出行動(dòng)策略以智能機(jī)器人是否能夠到達(dá)預(yù)定位置為目標(biāo)進(jìn)行學(xué)習(xí)訓(xùn)練,從而完成機(jī)器人在無(wú)地圖等先驗(yàn)信息下的導(dǎo)航.
在回環(huán)檢測(cè)方面,無(wú)論二維圖像或是三維點(diǎn)云隨著場(chǎng)景規(guī)模的增加其數(shù)據(jù)量也會(huì)越來(lái)越大,一直保存大量的圖片或點(diǎn)云顯然是不行的.涉及到知識(shí)的壓縮與提取,人類(lèi)不會(huì)記住自己看到過(guò)的每一幀圖象或點(diǎn)云,但是也能夠在自己到了之前到過(guò)的地方后完成識(shí)別或回環(huán)檢測(cè),因?yàn)槿祟?lèi)有更高級(jí)的知識(shí)、有城市、景點(diǎn)、區(qū)域等概念可以幫助我們完成區(qū)域劃分,我們能夠記住到過(guò)哪個(gè)城市、哪條街就足夠了,未來(lái)深度SLAM也需要將感知信息壓縮,劃分搜索空間完成回環(huán)檢測(cè).另外,人類(lèi)隨著記憶量的增加也會(huì)忘記具體信息甚至到了自己曾經(jīng)到過(guò)的地方也不會(huì)察覺(jué),在固定存儲(chǔ)空間條件下需要進(jìn)行非關(guān)鍵信息的剔除.另外,類(lèi)似人類(lèi)用谷歌地圖等,長(zhǎng)期定位可以借助云存儲(chǔ)的方式完成大量信息的儲(chǔ)存.
除以上深度學(xué)習(xí)在視覺(jué)里程計(jì)、回環(huán)檢測(cè)方面的應(yīng)用外,其在語(yǔ)義SLAM[59]、圖像局部特征提取及匹配[60]、配準(zhǔn)尺度學(xué)習(xí)[61]等方面均取得可觀的實(shí)驗(yàn)結(jié)果.目前,傳統(tǒng)的SLAM方案研究較為成熟,基于深度學(xué)習(xí)的SLAM技術(shù)處于一個(gè)剛剛起步、漸有起色的階段.隨著人工智能技術(shù)的發(fā)展,未來(lái)視覺(jué)SLAM中的各個(gè)關(guān)鍵技術(shù)將部分或全部被深度學(xué)習(xí)所取代.基于深度學(xué)習(xí)的視覺(jué)SLAM方法具有巨大的研究空間,也將會(huì)在工程中發(fā)揮越來(lái)越大的作用.