張小勇,張 洪,高清源,湯多良,曹 毅
(1.江南大學(xué) 機(jī)械工程學(xué)院,江蘇 無錫 214122; 2.淮南職業(yè)技術(shù)學(xué)院 機(jī)電工程學(xué)院,安徽 淮南 232001)
隨著研究的不斷深入,移動(dòng)機(jī)器人的應(yīng)用場景變得愈加廣泛[1-2]。作為移動(dòng)機(jī)器人實(shí)現(xiàn)智能導(dǎo)航的基礎(chǔ)的同時(shí)定位與建圖(simultaneous localization and mapping,SLAM),其與機(jī)器視覺相結(jié)合的視覺SLAM逐漸成為移動(dòng)機(jī)器人領(lǐng)域的研究熱點(diǎn)[3-5]。傳統(tǒng)視覺SLAM算法雖在靜態(tài)場景中表現(xiàn)出較好的性能,但對動(dòng)態(tài)對象的感知能力存在不足,若建圖時(shí)處于動(dòng)態(tài)場景,可能出現(xiàn)動(dòng)態(tài)特征點(diǎn)的誤匹配,影響定位精度,甚至出現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤丟失的問題[6-7]。因此,研究動(dòng)態(tài)場景下的高精度定位對移動(dòng)機(jī)器人的應(yīng)用至關(guān)重要[8]。
針對動(dòng)態(tài)場景下的視覺SLAM算法的研究方法可分為兩類:一是基于多視幾何、光流等傳統(tǒng)幾何方法檢測異常點(diǎn)[8-11];二是基于深度學(xué)習(xí)方法對先驗(yàn)的運(yùn)動(dòng)對象進(jìn)行檢測分割[13-19]。
基于幾何的檢測方法在耗時(shí)方面存在優(yōu)勢。例如:Zhang等[8]使用密集光流殘差檢測場景中的動(dòng)態(tài)區(qū)域,同時(shí)使用與靜態(tài)特征融合的框架重建靜態(tài)背景,提出FlowFusion算法;Dai等[9]基于靜態(tài)特征之間相對位置各時(shí)刻恒定不變的特點(diǎn),利用點(diǎn)相關(guān)性區(qū)分靜態(tài)和動(dòng)態(tài)地圖點(diǎn);Li等[10]對深度圖的邊緣點(diǎn)進(jìn)行靜態(tài)加權(quán),提出基于深度邊緣特征的實(shí)時(shí)RGB-D SLAM算法;Palazzolo等[11]基于截?cái)喾柧嚯x函數(shù)(truncated signed distance function, TSDF),利用純幾何的濾波方法去除動(dòng)態(tài)目標(biāo),提出ReFusion算法。但是基于幾何檢測的方法在復(fù)雜環(huán)境下無法完整檢測潛在的動(dòng)態(tài)對象,難以保證算法的定位精度[12]。
基于深度學(xué)習(xí)的方法以圖像分割算法為主、幾何檢測為輔。例如:Yu等[13]利用SegNet圖像分割網(wǎng)絡(luò)和運(yùn)動(dòng)一致性檢測的方法剔除動(dòng)態(tài)特征點(diǎn),提出DS-SLAM算法;Bescos等[14]利用Mask R-CNN實(shí)例分割網(wǎng)絡(luò)與多視幾何的方法,完成運(yùn)動(dòng)物體的檢測,提出動(dòng)態(tài)視覺SLAM中經(jīng)典的Dyna-SLAM算法;Zhong等[15]利用SSD目標(biāo)檢測網(wǎng)絡(luò)對關(guān)鍵幀的動(dòng)態(tài)對象進(jìn)行檢測,根據(jù)檢測結(jié)果將特征點(diǎn)分為4種狀態(tài)并傳播至普通幀,提出Detect-SLAM算法;Cheng等[16]將具有深度信息的特征點(diǎn)重新投影到當(dāng)前幀上,利用重投影偏移向量來檢測動(dòng)態(tài)點(diǎn),提出DM-SLAM算法;Ji等[17]利用SegNet圖像分割網(wǎng)絡(luò)對關(guān)鍵幀進(jìn)行檢測以降低計(jì)算成本,通過深度圖像聚類與重投影誤差的方法識別動(dòng)態(tài)區(qū)域以檢測未知的運(yùn)動(dòng)目標(biāo),提出TRS-SLAM算法。但是基于深度學(xué)習(xí)的方法跟蹤線程耗時(shí)多,難以保證算法的實(shí)時(shí)性[19]。
針對現(xiàn)有動(dòng)態(tài)視覺SLAM算法難以同時(shí)兼顧算法定位精度與實(shí)時(shí)性問題,本研究提出一種基于稀疏光流與實(shí)例分割網(wǎng)絡(luò)的動(dòng)態(tài)視覺SLAM算法。針對算法定位精度,利用Mask R-CNN實(shí)例分割網(wǎng)絡(luò)和Lucas-Kanade稀疏光流的方法剔除異常特征點(diǎn);針對算法的實(shí)時(shí)性,設(shè)計(jì)異常特征點(diǎn)二次剔除模塊,降低實(shí)例分割網(wǎng)絡(luò)對跟蹤線程耗時(shí)的影響;最后通過公開數(shù)據(jù)集進(jìn)行試驗(yàn)驗(yàn)證。
針對動(dòng)態(tài)場景的視覺SLAM算法大多建立在ORB-SLAM2算法[20]的基礎(chǔ)上。相比傳統(tǒng)視覺SLAM算法,ORB-SLAM2算法先將視覺SLAM算法劃分為3個(gè)線程,即Tracking、Local Mapping、Loop Closing,再通過System總線程實(shí)現(xiàn)機(jī)器人的位姿估計(jì)與地圖構(gòu)建,算法框架圖如圖1所示。其中Tracking線程負(fù)責(zé)相機(jī)的定位,主要包括ORB(oriented fast and rotated brief)特征點(diǎn)提取、相機(jī)位姿初始化、相機(jī)位姿估計(jì)及關(guān)鍵幀選取等步驟。
圖1 ORB-SLAM2算法框架圖Fig.1 System structure diagram of ORB-SLAM2
ORB-SLAM2的特征點(diǎn)提取算法為ORB算法。相比SIFT(scale-invariant feature transform)和SURF(speeded up robust features)算法,ORB算法在保證匹配準(zhǔn)確性的前提下,運(yùn)算速度得到大幅提高,算法特點(diǎn)如下:
ORB算法使用強(qiáng)度重心的方法,利用重心計(jì)算來明確特征點(diǎn)的方向,得到ORB的特征描述向量,使得ORB特征點(diǎn)具有旋轉(zhuǎn)不變性。
ORB算法利用BruteForceMatcher類中的match函數(shù),對兩特征點(diǎn)的描述子進(jìn)行“異”“或”運(yùn)算得到它們之間的漢明距離,實(shí)現(xiàn)特征點(diǎn)幀間的匹配。漢明距離表示兩特征點(diǎn)之間的相似程度,如式(1)所示。
(1)
式中:d(A,B)為A和B特征點(diǎn)之間的漢明距離;Ai和Bi分別為A和B特征點(diǎn)的二進(jìn)制描述符;⊕為“異”“或”運(yùn)算符。
采用隨機(jī)采樣一致性算法(rand sample consensus,RANSAC)剔除特征匹配結(jié)果中的異常特征點(diǎn),從而減少特征點(diǎn)的誤匹配,提高幀間匹配的準(zhǔn)確率。
Tracking線程用于在視覺SLAM算法中估計(jì)相機(jī)的位姿。工作原理是:先從圖像幀提取特征點(diǎn),通過重定位來初始化位姿或是根據(jù)前一幀進(jìn)行位姿估計(jì);再將局部地圖與當(dāng)前幀進(jìn)行匹配,根據(jù)最小化投影誤差優(yōu)化當(dāng)前幀位姿;最后,根據(jù)關(guān)鍵幀選擇條件確定新的關(guān)鍵幀,將關(guān)鍵幀傳給Local Mapping線程。
為解決動(dòng)態(tài)場景對定位精度造成的影響,傳統(tǒng)動(dòng)態(tài)視覺SLAM算法通常在Tracking線程中融入幾何檢測算法或圖像分割網(wǎng)絡(luò),這使得SLAM算法在高動(dòng)態(tài)場景下難以兼顧算法的定位精度與實(shí)時(shí)性。本文基于Mask R-CNN實(shí)例分割網(wǎng)絡(luò)與Lucas-Kanade稀疏光流對傳統(tǒng)動(dòng)態(tài)視覺SLAM算法的Tracking線程進(jìn)行改進(jìn),以降低圖像分割網(wǎng)絡(luò)對Tracking耗時(shí)的影響。改進(jìn)算法示意圖如圖2所示。
圖2 改進(jìn)Tracking線程示意圖Fig.2 Schematic diagram of improved tracking algorithm
由圖2可知,Tracking線程的改進(jìn)主要包括以下3點(diǎn):
——在Tracking線程中融入Lucas-Kanade稀疏光流,通過連續(xù)幀特征點(diǎn)光流檢測異常特征點(diǎn),完成異常特征點(diǎn)初步剔除,以保證算法的定位精度。
——基于ROS通信,將Mask R-CNN實(shí)例分割網(wǎng)絡(luò)獨(dú)立于Tracking線程之外,完成動(dòng)態(tài)對象的檢測并保存動(dòng)態(tài)圖像幀,以此降低圖像分割網(wǎng)絡(luò)對Tracking耗時(shí)的影響,提高算法實(shí)時(shí)性。
——異常特征點(diǎn)的二次剔除。先根據(jù)圖像分割模塊動(dòng)態(tài)圖像幀對動(dòng)態(tài)特征點(diǎn)容器進(jìn)行更新,再利用容器進(jìn)行特征點(diǎn)匹配,最后根據(jù)匹配結(jié)果完成異常特征點(diǎn)的二次剔除,進(jìn)一步提高算法的定位精度。
為增強(qiáng)視覺SLAM算法對先驗(yàn)動(dòng)態(tài)對象的感知能力,從而提高算法在動(dòng)態(tài)場景中的定位精度,在算法框架中融入圖像分割網(wǎng)絡(luò)。為便于與Dyna-SLAM算法進(jìn)行對比,選取Mask R-CNN網(wǎng)絡(luò)對先驗(yàn)動(dòng)態(tài)對象進(jìn)行檢測,基本框架如圖3所示。Mask R-CNN網(wǎng)絡(luò)在Faster R-CNN網(wǎng)絡(luò)的基礎(chǔ)上添加了預(yù)測目標(biāo)掩膜的分支網(wǎng)絡(luò),可在實(shí)現(xiàn)目標(biāo)檢測的同時(shí)進(jìn)行語義分割,具有準(zhǔn)確率高、簡單直觀、易于使用等優(yōu)點(diǎn)[21]。Mask R-CNN網(wǎng)絡(luò)選擇在COCO數(shù)據(jù)集[22]上進(jìn)行預(yù)訓(xùn)練,該數(shù)據(jù)集包含80多類對象,可滿足試驗(yàn)動(dòng)態(tài)對象檢測的要求。
圖3 Mask R-CNN算法框架圖Fig.3 Schematic diagram of Mask R-CNN framework
為消除動(dòng)態(tài)場景對算法定位精度的影響,傳統(tǒng)基于深度學(xué)習(xí)的動(dòng)態(tài)視覺SLAM算法通常在Tracking中加入圖像分割網(wǎng)絡(luò)來檢測并剔除動(dòng)態(tài)特征點(diǎn),以此保證動(dòng)態(tài)場景下算法的定位精度。但此類算法在對每幀圖像進(jìn)行位姿估計(jì)前需等待圖像的分割結(jié)果,使得算法跟蹤線程的耗時(shí)較多,故算法實(shí)時(shí)性不佳[19]。
為降低圖像分割對跟蹤線程耗時(shí)的影響,基于Mask R-CNN網(wǎng)絡(luò)提出異常特征點(diǎn)的二次剔除算法,如圖2所示。改進(jìn)算法將圖像分割模塊置于Tracking線程之外,使得Tracking線程當(dāng)前幀無需等待圖像分割模塊的動(dòng)態(tài)幀檢測結(jié)果,直接調(diào)用動(dòng)態(tài)特征點(diǎn)容器完成異常特征點(diǎn)的二次剔除并進(jìn)行后續(xù)位姿估計(jì)。因此,改進(jìn)算法能有效降低圖像分割網(wǎng)絡(luò)對Tracking線程耗時(shí)的影響,提高算法的實(shí)時(shí)性。異常特征點(diǎn)的二次剔除算法主要分為圖像分割模塊和異常特征點(diǎn)的二次剔除模塊兩部分。
圖像分割模塊。該模塊接收圖像幀并進(jìn)行語義分割,完成先驗(yàn)動(dòng)態(tài)對象的檢測,為動(dòng)態(tài)特征點(diǎn)容器的更新提供動(dòng)態(tài)圖像幀,但不直接參與異常特征點(diǎn)的二次剔除。圖像分割模塊工作流程如圖4所示。圖像分割模塊接收Tracking線程當(dāng)前RGB圖像幀,利用圖像分割網(wǎng)絡(luò)完成語義分割,語義分割圖如圖4(b)所示。對得到的語義分割結(jié)果圖進(jìn)行圖像閾值分割,得到閾值分割圖(圖4(c))。將閾值分割圖與輸入圖像進(jìn)行圖像的“與”運(yùn)算,運(yùn)算規(guī)則如式(2)所示,得到僅有動(dòng)態(tài)對象的動(dòng)態(tài)圖像幀,如圖4(d)所示。
圖4 圖像分割模塊示意圖Fig.4 Schematic diagram of image segmentation module
(2)
式中:Iinput、Ioutput和Imask分別為輸入圖像幀、動(dòng)態(tài)圖像幀和閾值分割圖中目標(biāo)位置的像素值。
異常特征點(diǎn)的二次剔除模塊。該模塊更新并利用動(dòng)態(tài)特征點(diǎn)容器二次剔除當(dāng)前圖像幀中存在的動(dòng)態(tài)特征點(diǎn),以降低動(dòng)態(tài)特征點(diǎn)對算法定位精度的影響。異常特征點(diǎn)的二次剔除模塊處于Tracking線程中,此模塊執(zhí)行前會(huì)判斷是否接收到新的動(dòng)態(tài)圖像幀。若是,先對新的動(dòng)態(tài)圖像幀進(jìn)行ORB特征提取,再將提取的特征點(diǎn)與容器特征點(diǎn)進(jìn)行匹配,篩選合適的特征點(diǎn)對容器進(jìn)行更新后完成異常特征點(diǎn)的二次剔除;若否(即圖像分割模塊還沒有完成語義分割任務(wù)),則無需等待語義分割的完成,直接跳過容器的更新步驟,完成異常特征點(diǎn)的二次剔除。相比傳統(tǒng)基于深度學(xué)習(xí)的方法,基于Mask R-CNN實(shí)例分割網(wǎng)絡(luò)的二次剔除算法將圖像分割網(wǎng)絡(luò)置于Tracking線程之外,圖像分割模塊的耗時(shí)不會(huì)影響Tracking線程,只會(huì)影響二次剔除模塊動(dòng)態(tài)特征點(diǎn)容器的更新頻率。因此,改進(jìn)算法可在保留算法對動(dòng)態(tài)對象感知能力的前提下,保證算法的實(shí)時(shí)性。由于圖像分割模塊耗時(shí)高于Tracking線程耗時(shí),圖像分割模塊更新的動(dòng)態(tài)圖像幀往往滯后于Tracking線程當(dāng)前幀,具體滯后情況如圖5所示。平均滯后時(shí)間主要取決于圖像分割模塊選取的網(wǎng)絡(luò)模型,本文選取的Mask R-CNN網(wǎng)絡(luò)模型的平均滯后時(shí)間約為7幀。
圖5 動(dòng)態(tài)圖像幀滯后示意圖Fig.5 Schematic diagram of lag of dynamic image frame
低動(dòng)態(tài)場景中動(dòng)態(tài)圖像幀的更新滯后對二次剔除算法的剔除結(jié)果影響較小,但高動(dòng)態(tài)場景中的更新滯后對二次剔除算法的剔除結(jié)果影響較大,這將影響算法的定位精度。本文在Tracking線程的二次剔除模塊前融入Lucas-Kanade稀疏光流,通過檢測相鄰幀的異常特征點(diǎn),完成潛在動(dòng)態(tài)特征點(diǎn)的初步剔除,以保證算法的定位精度。
Lucas-Kanade稀疏光流[23]基于3大假設(shè):一是亮度恒定,即同一像素點(diǎn)在不同幀的亮度不變;二是運(yùn)動(dòng)微小,即相鄰幀的運(yùn)動(dòng)較小;三是空間一致,即目標(biāo)區(qū)域內(nèi)的像素點(diǎn)有相似的運(yùn)動(dòng)。
Lucas-Kanade稀疏光流通過對相鄰幀圖像中的特征點(diǎn)進(jìn)行跟蹤,計(jì)算各特征點(diǎn)的光流矢量,由此判斷是否存在異常特征點(diǎn)?;诹炼群愣ㄅc運(yùn)動(dòng)微小兩個(gè)假設(shè),得到圖像的約束方程,如式(3)所示。
Ixu+Iyv+It=0
(3)
式中:u和v分別為像素點(diǎn)沿x和y軸的速度矢量;Ix和Iy分別為圖像在x和y軸方向的梯度;It為時(shí)間方向的梯度。
基于空間一致性的假設(shè),即鄰域內(nèi)的光流為固定值,鄰域內(nèi)像素點(diǎn)具有相似的運(yùn)動(dòng)。選取3×3的鄰域范圍,鄰域內(nèi)所有像素點(diǎn)的運(yùn)動(dòng)可用式(4)表示。
(4)
選取ORB特征點(diǎn)作為跟蹤特征點(diǎn),此特征點(diǎn)為變化明顯的角點(diǎn),可有效避免跟蹤過程中出現(xiàn)的孔徑問題。再利用最小二乘法進(jìn)行擬合優(yōu)化求得速度矢量,可用式(5)表示。
(5)
基于ORB特征點(diǎn)與Lucas-Kanade稀疏光流,利用OpenCV庫的calcOpticalFlowPyrLK()函數(shù),設(shè)計(jì)異常特征點(diǎn)的剔除算法。異常特征點(diǎn)的剔除流程如圖6所示。
圖6 基于Lucas-Kanade稀疏光流剔除算法的流程圖Fig.6 Flow chart of culling algorithm based on Lucas-Kanade sparse optical flow
異常特征點(diǎn)的剔除算法的具體步驟為:
Step1:接收當(dāng)前輸入幀的RGB圖像,記為prevImg。檢測prevImg圖像幀的ORB特征點(diǎn),完成稀疏光流點(diǎn)的初始化,再保存圖像幀與特征點(diǎn)的坐標(biāo)數(shù)據(jù)。
Step2:接收下一幀的RGB圖像,記為nextImg。調(diào)用calcOpticalFlowPyrLK()函數(shù),對nextImg和prevImg計(jì)算光流,進(jìn)行ORB特征點(diǎn)跟蹤,得到特征點(diǎn)的跟蹤狀態(tài)status及其位置相對偏移誤差值errors。再根據(jù)誤差值errors完成誤差值閾值errors_value的設(shè)定。
其中,errors為特征點(diǎn)在前后兩幀圖像中位置的相對偏移誤差值。特征點(diǎn)位置的相對偏移誤差值及位置的偏移量定義可由式(6)和(7)表示。
(6)
dist[k]=abs(pre_keypoints[k].x-
next_keypoints[k].x)+abs(pre_keypoints[k].y-
next_keypoints[k].y)
(7)
式中:errors為特征點(diǎn)在前后兩幀圖像中位置的相對偏移誤差值;dist為特征點(diǎn)在前后兩幀圖像中位置的偏移量;pre_keypoints為前一幀圖像的特征點(diǎn);next_keypoints為當(dāng)前幀圖像的特征點(diǎn)。
誤差閾值errors_value的設(shè)定依據(jù)還包括跟蹤成功的特征點(diǎn)剩余的數(shù)量、位置相對偏移誤差值。誤差閾值的設(shè)定可在保證有充足的特征點(diǎn)用于位姿估計(jì)的情況下,盡可能地剔除所有的異常特征點(diǎn)。
Step3:根據(jù)nextImg的光流跟蹤結(jié)果,剔除跟蹤失敗的特征點(diǎn),再對跟蹤成功的特征點(diǎn)進(jìn)行篩選。若特征點(diǎn)的誤差值errors大于設(shè)定誤差值閾值errors_value,則視為異常特征點(diǎn),剔除此類特征點(diǎn)。
Step4:檢查二次剔除后的剩余特征點(diǎn)是否充足,將nextImg剩余的ORB特征點(diǎn)數(shù)量與預(yù)設(shè)的特征點(diǎn)數(shù)量閾值進(jìn)行比較。若nextImg剩余的ORB特征點(diǎn)數(shù)量小于閾值,則對nextImg圖像幀進(jìn)行ORB特征提取,完成跟蹤特征點(diǎn)的補(bǔ)充。
Step5:如果當(dāng)前幀圖像不是最后一幀,則將nextImg定義為prevImg,繼續(xù)執(zhí)行步驟Step2~Step4完成特征點(diǎn)的光流跟蹤,否則退出算法循環(huán)。
為驗(yàn)證基于Lucas-Kanade稀疏光流的剔除算法的有效性,在公開數(shù)據(jù)集上進(jìn)行測試,特征點(diǎn)跟蹤效果的試驗(yàn)結(jié)果如圖7所示。由圖7可知,在動(dòng)態(tài)場景中,無論動(dòng)態(tài)對象是否為先驗(yàn)對象,在其發(fā)生明顯位移的情況下,基于Lucas-Kanade稀疏光流的剔除算法都可有效剔除大部分的異常特征點(diǎn)。
圖7 特征點(diǎn)跟蹤試驗(yàn)結(jié)果圖Fig.7 Experiment results of feature point tracking
綜上,改進(jìn)算法在傳統(tǒng)算法框架中融入Lucas-Kanade稀疏光流與Mask R-CNN圖像分割網(wǎng)絡(luò),相比基于幾何檢測的算法,改進(jìn)算法能有效提高算法定位精度。改進(jìn)算法利用ROS通信將圖像分割模塊置于Tracking線程之外,可降低圖像分割網(wǎng)絡(luò)對Tracking線程耗時(shí)的影響。相比基于深度學(xué)習(xí)的算法,改進(jìn)算法可大幅降低Tracking線程耗時(shí),從而提高算法的實(shí)時(shí)性。
為驗(yàn)證改進(jìn)算法在試驗(yàn)場景中對定位精度與實(shí)時(shí)性的兼顧效果,通過公開數(shù)據(jù)集進(jìn)行試驗(yàn)驗(yàn)證。
試驗(yàn)采用的評價(jià)指標(biāo)包括相機(jī)的絕對軌跡誤差A(yù)TE(absolute trajectory error)、Tracking線程單幀圖像的平均耗時(shí)。其中,相機(jī)的絕對軌跡誤差A(yù)TE為相機(jī)估計(jì)位姿與真實(shí)位姿的直接差值,ATE越小,算法的定位精度越高。其中,第i幀的ATE定義可由式(8)表示。
(8)
式中:Fi為第i幀的絕對軌跡誤差;Qi為真實(shí)位姿;Pi為估計(jì)位姿;S為估計(jì)到真實(shí)位姿的相似旋轉(zhuǎn)矩陣。
使用RMSE(root mean square error)對ATE進(jìn)行統(tǒng)計(jì)分析,如式(9)所示。
(9)
試驗(yàn)平臺為搭載Ubuntu16.04操作系統(tǒng)的筆記本電腦,處理器的型號為i7-8550U,主頻1.80 GHz,64位操作系統(tǒng),運(yùn)行內(nèi)存為8 GB,顯卡為NVIDIA GeForce MX 150。
TUM RGB-D[24-25]公開數(shù)據(jù)集是德國慕尼黑工業(yè)大學(xué)提出的標(biāo)準(zhǔn)RGB-D數(shù)據(jù)集,常用于評估SLAM算法在各種場景下的性能。該數(shù)據(jù)集利用運(yùn)動(dòng)視覺捕捉系統(tǒng)記錄相機(jī)在真實(shí)場景中的連續(xù)軌跡數(shù)據(jù),可提供序列對齊的RGB圖像、深度圖像和真實(shí)軌跡。
選取TUM RGB-D freiburg3數(shù)據(jù)集下6組子數(shù)據(jù)集進(jìn)行試驗(yàn),即sitting_xyz(S_xyz)、sitting_halfsphere(S_half)、walking_static(W_static)、walking_xyz(W_xyz)、walking_rpy(W_rpy)、walking_halfsphere(W_half)。其中,walking和sitting分別表示高動(dòng)態(tài)與低動(dòng)態(tài)場景數(shù)據(jù)集。選用ORB-SLAM2、ReFuison、Dyna-SLAM、DM-SLAM、TRS-SLAM算法和本文算法進(jìn)行對比試驗(yàn),試驗(yàn)選取絕對軌跡誤差A(yù)TE的RMSE值作為評價(jià)指標(biāo)。表1為各種算法下相機(jī)關(guān)鍵幀的絕對軌跡誤差。
表1 TUM數(shù)據(jù)集下相機(jī)關(guān)鍵幀絕對軌跡誤差的RMSE值Table 1 RMSE values of absolute trajectory error of camera key frame in TUM database m
分析表1可得:在TUM數(shù)據(jù)集下,相比ORB-SLAM2算法,本文算法在低動(dòng)態(tài)場景中的相機(jī)關(guān)鍵幀絕對軌跡誤差的RMSE值依次降低30.20%、15.33%,在高動(dòng)態(tài)環(huán)境中依次降低93.94%、93.49%、94.26%、98.31%。相比ReFusion算法,本文算法在低動(dòng)態(tài)場景中依次降低81.28%、68.98%,在高動(dòng)態(tài)環(huán)境中依次降低80.24%、84.79%、64.48%、80.49%。相比Dyna-SLAM算法,本文算法在S_xyz、W_half、W_xyz場景中依次降低6.45%、5.31%、3.43%,在W_rpy場景中受動(dòng)態(tài)特征點(diǎn)容器的滯后效應(yīng)影響較大,存在剔除不徹底的情況,定位精度下降。相比DM-SLAM和TRS-SLAM算法,本文算法在W_half場景中分別降低21.90%、26.21%,在W_static場景中分別降低17.72%、41.44%。
為進(jìn)一步驗(yàn)證試驗(yàn)的結(jié)果,對部分算法在高動(dòng)態(tài)場景中的相機(jī)絕對軌跡誤差對比圖進(jìn)行分析。絕對軌跡誤差對比圖如圖8所示,每行的4幅分圖依次對應(yīng)基于W_half、W_rpy、W_static、W_xyz數(shù)據(jù)集的分析結(jié)果,圖中黑色曲線為相機(jī)運(yùn)動(dòng)軌跡的真實(shí)值(groundtruth),藍(lán)色曲線為相機(jī)運(yùn)動(dòng)軌跡的算法估計(jì)值(estimated),紅色直線為相機(jī)運(yùn)動(dòng)軌跡真實(shí)值與估計(jì)值的差值(difference)。由圖8可知,在高動(dòng)態(tài)場景中:ORB-SLAM2算法下的相機(jī)運(yùn)動(dòng)軌跡誤差最大,相機(jī)軌跡出現(xiàn)明顯偏移;ReFusion算法下的運(yùn)動(dòng)軌跡誤差相比ORB-SLAM2算法有所降低,但仍存在偏移情況;Dyna-SLAM算法與本文算法下的運(yùn)動(dòng)軌跡誤差相比其他兩種算法明顯降低,相機(jī)軌跡偏移量小。
圖8 TUM數(shù)據(jù)集下高動(dòng)態(tài)場景下相機(jī)絕對軌跡誤差對比Fig.8 Comparison of absolute trajectory error of the camera in high dynamic scene under TUM database
Bonn RGB-D Dynamic Dataset[11]是用于評估RGB-D SLAM與三維重建的公開數(shù)據(jù)集,數(shù)據(jù)集的序列格式與TUM RGB-D相同。本文選取Bonn RGB-D公開數(shù)據(jù)集下的6組子數(shù)據(jù)集rgbd_bonn_crowd (Crowd)、rgbd_bonn_crowd2 (Crowd2)、rgbd_bonn_placing_nonobstructing_box (P_no_box)、rgbd_bonn_person_tracking (P_Tracking)、rgbd_bonn_removing_nonobstructing_box (R_no_box)、rgbd_bonn_person_tracking2 (P_Tracking2)進(jìn)行試驗(yàn)。以絕對軌跡誤差A(yù)TE的RMSE值和Mean值(均值)為評價(jià)指標(biāo),選取ORB-SLAM2、Refusion、Dyna-SLAM算法與本文算法進(jìn)行對比試驗(yàn)。表2為各種算法下相機(jī)關(guān)鍵幀的絕對軌跡誤差。
表2 Bonn數(shù)據(jù)集下相機(jī)關(guān)鍵幀的絕對軌跡誤差RMSE值Table 2 RMSE values of absolute trajectory error of camera key frame in Bonn database m
分析表2可得:相比ORB-SLAM2算法,本文算法的相機(jī)關(guān)鍵幀絕對軌跡誤差RMSE值在Bonn數(shù)據(jù)集的6個(gè)子集中依次降低98.62%、97.76%、93.76%、91.52%、96.32%、30.77%。相比ReFusion算法,本文算法依次降低83.57%、96.18%、86.55%、78.89%、70.10%、81.63%。相比Dyna-SLAM算法,改進(jìn)算法在P_Tracking2和Crowd場景中受動(dòng)態(tài)容器更新滯后效應(yīng)影響較大,精度有所下降;在Crowd2、P_Tracking、P_no_box、R_no_box場景中依次降低14.28%、35.09%、30.77%、91.82%。
除定位精度外,視覺SLAM算法的實(shí)時(shí)性也是評價(jià)其算法優(yōu)劣的重要性能指標(biāo)。TUM與Bonn數(shù)據(jù)集下各種算法的跟蹤線程耗時(shí)如圖9所示。由圖9可知:Dyna-SLAM算法跟蹤線程耗時(shí)最多,且單幀圖像的耗時(shí)情況波動(dòng)嚴(yán)重。ReFusion算法跟蹤線程耗時(shí)情況相比Dyna-SLAM算法有所降低,耗時(shí)波動(dòng)情況有所改善。本文算法在TUM與Bonn數(shù)據(jù)集下跟蹤線程平均耗時(shí)分別為98.25與91.38 ms。相比ORB-SLAM2算耗時(shí)法,為提高算法的定位精度,改進(jìn)算法耗時(shí)分別增加40.04與43.65 ms;相比ReFusion算法耗時(shí)分別降低77.33%與83.32%,相比Dyna-SLAM算法耗時(shí)分別降低88.72%與86.70%;算法的耗時(shí)波動(dòng)情況相比ReFusion和Dyna-SLAM算法得到明顯改善,能夠保證算法的穩(wěn)定運(yùn)行。
圖9 TUM與Bonn數(shù)據(jù)集下不同算法跟蹤線程的單幀耗時(shí)Fig.9 Single-frame time cost of different algorithms in Tracking process under TUM and Bonn databases
綜上,在TUM與Bonn公開數(shù)據(jù)集中的各種動(dòng)態(tài)場景下,本文改進(jìn)算法的相機(jī)絕對軌跡誤差與跟蹤線程的耗時(shí)情況,相比傳統(tǒng)視覺SLAM算法明顯降低。說明改進(jìn)算法可在保證算法定位精度的前提下,有效提高算法的實(shí)時(shí)性。
本文提出一種基于實(shí)例分割網(wǎng)絡(luò)與稀疏光流的動(dòng)態(tài)視覺SLAM算法。在傳統(tǒng)SLAM算法的框架上對Tracking線程進(jìn)行優(yōu)化。改進(jìn)算法利用稀疏光流完成異常特征點(diǎn)初步剔除,通過實(shí)例分割網(wǎng)絡(luò)設(shè)計(jì)異常特征點(diǎn)的二次剔除算法,使圖像分割網(wǎng)絡(luò)獨(dú)立于Tracking線程。該算法可降低圖像分割網(wǎng)絡(luò)對Tracking線程耗時(shí)的影響,提高算法的實(shí)時(shí)性。在TUM與Bonn公開數(shù)據(jù)集下,本文算法的定位精度有所提高;兩種數(shù)據(jù)集下跟蹤線程耗時(shí)相比ReFusion算法降低77.33%與83.32%,相比Dyna-SLAM算法降低88.72%與86.70%。