傘紅軍,王汪林,陳久朋,謝飛亞,徐洋洋,陳 佳
(1.昆明理工大學(xué) 機電工程學(xué)院,云南 昆明 650500; 2.中國人民解放軍第78098部隊,四川 眉山 620031)
同步定位和建圖(Simultaneous Localization and Mapping,SLAM)是智能移動機器人的核心技術(shù),它利用視覺或激光傳感器來實現(xiàn)機器人的定位和環(huán)境地圖構(gòu)建。通過相機采集環(huán)境信息,并將其作為主要輸入的SLAM系統(tǒng)被稱為視覺SLAM(Visual SLAM,VSLAM),其因能感知環(huán)境的紋理信息和豐富的色彩而逐漸成為了主流的SLAM系統(tǒng)。根據(jù)視覺里程計計算方式的不同,可以將VSLAM分為特征點法和直接法[1]?;谔卣鼽c法的SLAM系統(tǒng)主要有:MonoSLAM(Monocular SLAM)[2]、PTAM(Parallel Tracking and Mapping)[3]、ORB-SLAM2(Oriented FAST and Rotated BRIEF-SLAM2)[4]?;谥苯臃ǖ腟LAM系統(tǒng)主要有:LSD-SLAM(Large Scale Direct Monocular-SLAM)[5]、SVO(Semi-Direct Monocular Visual Odometry)[6]、DSO(Direct Sparse Odometry)[7]。特征點法通過對圖像中特征點的提取和匹配來計算相機的位置和姿態(tài),這種方法對特征點的提取和匹配精度要求較高。如果存在過多的誤匹配,則相機的位置和姿態(tài)估計會產(chǎn)生較大的偏差。直接法不計算關(guān)鍵點或描述子,其基于灰度不變假設(shè),直接根據(jù)圖像的像素信息來計算相機運動軌跡,在高光環(huán)境中存在退化或失效等現(xiàn)象。目前,基于特征點法和直接法的VSLAM系統(tǒng)大多基于靜態(tài)場景實現(xiàn),動態(tài)場景中的動態(tài)物體會使系統(tǒng)發(fā)生誤匹配,導(dǎo)致相機位姿估計退化,甚至出現(xiàn)錯誤,這也使得目前魯棒性較高的SLAM系統(tǒng)無法在動態(tài)環(huán)境中發(fā)揮其正常的功能。
隨著深度學(xué)習的快速發(fā)展,研究者們結(jié)合深度學(xué)習識別動態(tài)物體,并剔除動態(tài)物體來實現(xiàn)動態(tài)場景SLAM。文獻[8]通過結(jié)合卷積神經(jīng)網(wǎng)絡(luò) Fast R-CNN(Fast Region-Convolutional Neural Networks)[9]提出了一種動態(tài)的RGB-D SLAM(Red,Green and Blue-Depth SLAM)。文獻[10]將ORB-SLAM2與RGB-D 相機深度值相結(jié)合來確定動態(tài)物體并移。文獻[11]提出了自適應(yīng)窗格匹配模型,并利用Mask R-CNN(Mask Region-Convolutional Neural Networks)實現(xiàn)語義信息識別,從而實現(xiàn)動態(tài)場景的三維重建。文獻[12]結(jié)合多視圖幾何以及Mask R-CNN去識別動態(tài)場景物體。文獻[13]提出的DS-SLAM(Dense Semantic-SLAM)利用 YOLO(You Only Look Once)深度學(xué)習模型和對極約束去識別動態(tài)特征點。
圖1 本文SLAM系統(tǒng)流程Figure 1. Process of the proposed SLAM system
本文所提出方法的大致步驟為:首先利用目標檢測語義分割算法對關(guān)鍵幀進行預(yù)處理,剔除位于潛在動態(tài)物體或者動態(tài)物體上的顯著特征點;然后利用ORB-SLAM2框架進行優(yōu)化,降低相機位姿估計的影響;最終建立無動態(tài)特征點干擾的三維稀疏點云地圖。本文針對現(xiàn)有ORB-SLAM2算法在動態(tài)場景下的相機位姿估計精度差、魯棒性差、特征點易丟失和誤匹配等缺點進行改進,并完成了以下工作:
(1)對ORB-SLAM2算法進行改進,新增語義分割模塊,較大幅度提升了ORB-SLAM2在動態(tài)環(huán)境下相機位姿估計的精度和魯棒性;
(2)利用Mask R-CNN[14]對RGB-D相機讀取的每一幀圖像進行語義分割,剔除位于人身上的特征點,提高了特征點匹配的速度和精度;
(3)在德國慕尼黑工業(yè)大學(xué)的TUM數(shù)據(jù)集上進行實驗,并將本文所提出的算法與ORB-SLAM2算法進行比較以評價本文算法的性能。
本文算法以O(shè)RB-SLAM2為視覺SLAM的后端,在跟蹤、局部建圖、回環(huán)檢測以及回環(huán)檢測后的全局BA(Bound Adjustment)優(yōu)化的基礎(chǔ)上新增了語義分割線程。系統(tǒng)首先接收RGB-D相機采集的關(guān)鍵幀,然后對關(guān)鍵幀進行預(yù)處理,通過語義分割模塊和ORB-SLAM2模塊建立無動態(tài)特征點干擾的三維稀疏點云地圖。數(shù)據(jù)處理流程為:利用RGB-D相機采集彩色圖和深度圖,并將其輸入Mask R-CNN模塊;隨后,采用Mask R-CNN模塊對彩色圖進行語義分割,提取位于動態(tài)環(huán)境中的人、狗、貓等動態(tài)物體并將其標注為黑色;然后,采用ORB-SLAM2模塊中的跟蹤線程對彩色圖進行特征點提取,并將其與Mask R-CNN模塊黑色區(qū)域進行對比,剔除位于動態(tài)物體上的動態(tài)特征點,只保留靜態(tài)特征點用于跟蹤、回環(huán)檢測以及建圖。算法總體流程如圖2所示。
圖2 本文SLAM系統(tǒng)框架Figure 2. Framework of the proposed SLAM system
目標檢測的目的是從不同的視覺信息中心識別圖像中所要確定對象的大小及位置情況,并將其從不同背景圖像中分離出來[15]。為了提高動態(tài)物體目標檢測算法的實時性和魯棒性,本文采用YOLOv4進行動態(tài)物體檢測。YOLOv4[16]是一款輕量級網(wǎng)絡(luò)模型,集成了大量優(yōu)秀的方法,主要由3個組件組成:(1)在不同圖像細粒度上聚合并形成圖像特征的卷積神經(jīng)網(wǎng)絡(luò)Backbone;(2)一系列組合圖像特征的網(wǎng)絡(luò)層,并將圖像特征傳遞到預(yù)測層的Neck;(3)對圖像特征進行預(yù)測,生成邊界框和并預(yù)測類別的Head。選取PASCAL VOC數(shù)據(jù)集中包含“Person”類的圖片對網(wǎng)絡(luò)進行訓(xùn)練,訓(xùn)練后隨機對數(shù)據(jù)集中的一張RGB圖像進行檢測,結(jié)果如圖3所示,YOLOv4可以檢測圖像中的行人并添加邊界框和檢測的概率。
圖3 動態(tài)物體檢測結(jié)果Figure 3. Dynamic objects detection results
為了檢測動態(tài)物體并獲取像素級的圖像語義分割,研究人員通過對多個R-CNN(Region-Convolutional Neural Networks)[17]進行分析后發(fā)現(xiàn)Mask R-CNN是一種先進的對象實例分割技術(shù),既可以獲得像素級的語義分割,又可以獲得實例標簽。本文使用像素級語義分割對關(guān)鍵幀進行分割,未來的工作中可以使用實例標簽對不同物體進行跟蹤。本文選取MS-COCO數(shù)據(jù)集中包含“Person”類的圖片對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,訓(xùn)練后隨機對數(shù)據(jù)集中的一張RGB圖像進行檢測,結(jié)果如圖4所示。Mask R-CNN可以檢測行人并對圖像進行語義分割。
圖4 語義分割結(jié)果Figure 4. Semantic segmentation results
本文的實驗環(huán)境為Ubuntu18.04、Intel i7-8750H CPU、NVIDIA GTX1060 GPU、8 GB顯存。本文采用德國慕尼黑工業(yè)大學(xué)開源的TUM RGB-D數(shù)據(jù)集的8個動態(tài)幀中的4個動態(tài)幀來驗證本文算法在動態(tài)場景下的魯棒性和定位精度。該數(shù)據(jù)集提供了精確的相機實際運動軌跡以及完備的評估方案。本文中,8個動態(tài)幀按照動態(tài)幀高低分為4個低動態(tài)幀數(shù)據(jù)集(freiburg_sitting_static、freiburg_sitting_halfspere、freiburg_sitting_rpy、freiburg_sitting_xyz)和4個高動態(tài)幀數(shù)據(jù)集(freiburg_walking_static、freiburg_ walking_halfspere、freiburg_walking_rpy、freiburg_ walking_xyz)。本文所使用的兩個評價指標分別是絕對軌跡誤差(Abosolute Trajectory Error,ATE)和相對位姿誤差(Relative Pose Error,RPE)[18-19]。ATE是相機真實位姿和SLAM系統(tǒng)估計位姿的直接差值,以圖表的形式展示,可直觀地反映SLAM算法精度和軌跡全局一致性。第i幀的絕對軌跡誤差A(yù)TEi的定義為
(1)
式中,i=1,2,…,n;Qi,Pi∈SE(3)分別表示第i幀的相機真實位姿和SLAM系統(tǒng)估計位姿;S∈SE(3) 表示從相機真實位姿到SLAM系統(tǒng)估計位姿的變換矩陣。
RPE主要描述兩個相鄰固定時間戳的位姿變化量的差值,等同于直接測量視覺里程計的誤差,可用于估計系統(tǒng)的漂移量。第i幀的相對位姿誤差RPEi為
(2)
式中,i=1,2,…,m,Qi,Pi∈SE(3)分別表示第i幀的相機真實位姿和SLAM系統(tǒng)估計位姿;Δ表示兩個相鄰固定時間戳。
每個指標分別用其對應(yīng)的均方根誤差(Root Mean Square Error,RMSE)、平均誤差(Mean)、中值誤差(Medium)以及標準誤差(Standard Deviation,SD)進行評估,其中均方根誤差(RMSE)的計算式為
(3)
(4)
其中,trans(·)表示只取位移中的平移部分。
本文算法在ORB-SLAM2的基礎(chǔ)上新增語義分割線程。Mask R-CNN對每一幀圖像的檢測可以分割圖像中的物體,本文方案直接標注檢測到的行人等動態(tài)物體,并在跟蹤線程運行時剔除了每一幀圖像中的動態(tài)特征點,只對靜態(tài)特征點進行跟蹤、建圖和定位。
動態(tài)特征點剔除前后的效果如圖5所示。圖5(a)中提取了位于行人身上的動態(tài)特征點,這部分動態(tài)特征點將會影響相機的位姿估計,導(dǎo)致移動機器人無法準確定位并構(gòu)建環(huán)境地圖。圖5(b)中剔除了位于行人身上的動態(tài)特征點,可以利用剩余的靜態(tài)特征點實現(xiàn)SLAM,從而有效提高SLAM的魯棒性和定位精度。
圖5 動態(tài)特征點剔除(a)剔除前 (b)剔除后Figure 5. Dynamic feature point elimination (a)Before culling (b)After culling
本實驗采用TUM數(shù)據(jù)集中的兩個高動態(tài)幀數(shù)據(jù)集walking_rpy(簡稱w_r)、walking_static(簡稱w_s)和兩個低動態(tài)幀數(shù)據(jù)集sitting_rpy(簡稱s_r)、sitting_static(簡稱s_s)來進行測試。
表1、表2分別為本文算法和ORB-SLAM2在4個動態(tài)數(shù)據(jù)集中的絕對軌跡誤差對比和相對軌跡誤差對比,其中Improvements的計算式為式(5)。
表1 絕對軌跡誤差對比Table 1. Absolute trajectory error comparison
表2 絕對軌跡誤差提升率Table 2. Absolute trajectory error improvement rate
(5)
從表1和表3可以看出,本文算法在TUM兩個高動態(tài)幀數(shù)據(jù)集w_r和w_s中的位姿估計精度相對于ORB-SLAM2有顯著的改善。walking_static高動態(tài)幀數(shù)據(jù)集只有兩個高動態(tài)行走的人,相機的位姿沒有移動,因此此數(shù)據(jù)集能夠體現(xiàn)動態(tài)環(huán)境。從表2和表4可以看出,在ATE方面,RMSE提升了高達96.3%;在RPE方面,RMSE提升了高達41.2%。
表3 相對軌跡平移誤差對比Table 3. Comparison of relative trajectory translation error
表4 相對軌跡平移誤差提升率Table 4. Relative trajectory translation error improvement rate
為了直觀地觀察實驗結(jié)果,將本文算法與ORB-SLAM2算法分別在w_s序列中運行。如圖6所示,虛線表示相機軌跡計算值,實線表示相機軌跡的真值。顯然,圖6(a)中實線與虛線相差較大,表示相機運動軌跡與真實軌跡漂移量較大。圖6(b)中實線與虛線相差較小,表示相機運動軌跡與真實軌跡漂移量較小,相機位姿估計精度較高。由此可見本文SLAM算法的相機位姿估計精度要高于ORB-SLAM2。
(a)
TUM高動態(tài)幀數(shù)據(jù)集w_r中有兩個行人圍繞辦公桌行走,而相機也在空間的各個角度旋轉(zhuǎn),相比于其他的高動態(tài)幀數(shù)據(jù)集可以更好地反映動態(tài)特征點剔除情況。因此,本文選取TUM高動態(tài)幀數(shù)據(jù)集w_r作為構(gòu)建三維稀疏點云地圖的圖像序列。如圖7(a)所示,SLAM系統(tǒng)不考慮行人的影響,提取了位于行人身上的動態(tài)特征點,密集特征點出在相機前面,移動機器人會使用靜態(tài)和動態(tài)特征點進行錯誤的位姿估計。如圖7(b)所示,Mask R-CNN語義分割線程將行人身上的動態(tài)特征點剔除后構(gòu)建了靜態(tài)的三維稀疏點云地圖,與圖7(a)進行對比,圖7(b)中行人身上的動態(tài)特征點被濾除,更有利于智能移動機器人的路徑規(guī)劃和導(dǎo)航等任務(wù)。
(a)
本文提出了一種面向室內(nèi)動態(tài)場景的VSLAM方法。該方法在ORB-SLAM2系統(tǒng)的基礎(chǔ)上融合了Mask R-CNN神經(jīng)網(wǎng)絡(luò),新增語義分割模塊,將室內(nèi)動態(tài)場景下的動態(tài)特征點剔除,建立了只含有靜態(tài)特征點的三維稀疏點云地圖,提高了系統(tǒng)在室內(nèi)動態(tài)場景下的位姿估計精度和魯棒性,更加有效地為智能移動機器人提供了路徑規(guī)劃和導(dǎo)航的路線。但本算法仍然有改進空間,Mask R-CNN網(wǎng)絡(luò)不僅有語義分割功能還有語義識別功能,后期可以結(jié)合稠密點云地圖對環(huán)境建立語義地圖,增加智能移動機器人的感知能力。在目前,本算法只適用于室內(nèi)動態(tài)場景,未來會進一步提高其性能,使其可面向室外真實環(huán)境。