方寶富 張 旭 王 浩
近年來,隨著人工智能與機(jī)器人技術(shù)的深入發(fā)展,自主移動機(jī)器人受到越來越多研究人員的關(guān)注,而同時定位與建圖(Simultaneous Localization and Mapping, SLAM)[1]是這一領(lǐng)域的重要技術(shù),主要研究機(jī)器人在未知環(huán)境中自主探索、確定自己位置并對周圍的環(huán)境建立地圖.早期的SLAM技術(shù)大多采用聲吶及激光雷達(dá)等傳感器實現(xiàn),經(jīng)過多年發(fā)展,已得到深入研究并形成穩(wěn)定的框架,能精確測量機(jī)器人周圍的環(huán)境,但由于其成本高昂和應(yīng)用場景不足的局限性,很難大規(guī)模地使用,于是基于單目、雙目及RGB-D等相機(jī)作為傳感器的視覺SLAM[2]開始成為研究的主要方向.隨著學(xué)者們提出越來越多的視覺方法,視覺SLAM技術(shù)在室內(nèi)靜態(tài)環(huán)境下在自身的定位和建圖精度方面已取得不錯成果.
視覺SLAM按照視覺里程計的具體實現(xiàn)算法可分為基于特征點法和基于直接法.Mur-Artal等[3]提出ORB-SLAM2,匹配當(dāng)前幀和前一幀中的ORB特征點以估計相機(jī)運(yùn)動,能適應(yīng)單眼、雙眼及RGB-D相機(jī)三種設(shè)備,在廣泛多樣的環(huán)境中都能保證實時性.在ORB-SLAM2的基礎(chǔ)上,Campos等[4]提出ORB-SLAM3,完全依賴于最大后驗估計的基于特征、緊耦合的視覺慣性SLAM,及基于路標(biāo)識別方法的多地圖系統(tǒng).相比特征點法,徐浩楠等[5]提出半直接法系統(tǒng),采用增量式光束法平差進(jìn)行相機(jī)位姿優(yōu)化,為跟蹤線程提供精確信息,同時將各個圖像像素反投影到三維空間中,得到高精度的稠密三維地圖.
上述視覺SLAM算法在靜態(tài)的室內(nèi)環(huán)境中具有較優(yōu)性能,但是:1)由于真實世界的復(fù)雜性,動態(tài)物體的存在在很大程度上干擾SLAM系統(tǒng)的位姿估計與建圖效果;2)越來越高級的任務(wù)被提出,獲取周圍環(huán)境中的語義信息也成為SLAM技術(shù)的熱門話題.降低環(huán)境中動態(tài)物體的影響和增強(qiáng)機(jī)器人對世界信息的理解正逐漸成為SLAM技術(shù)研究的重點.因此,學(xué)者們提出語義SLAM[6].
目前語義SLAM系統(tǒng)主要采取在傳統(tǒng)視覺SLAM系統(tǒng)的基礎(chǔ)上添加深度學(xué)習(xí)算法檢測物體的方式以獲取語義信息,得益于近年來深度學(xué)習(xí)在計算機(jī)視覺領(lǐng)域的發(fā)展,各種基于RGB-D相機(jī)結(jié)合深度學(xué)習(xí)的語義SLAM相繼出現(xiàn).Yu等[7]提出DS-SLAM(A Complete Semantic SLAM System in Dyna-mic Environments),結(jié)合SegNet(Deep Fully Convolu-tional Neural Network Architecture for Semantic Pixel-Wise Segmentation)[8]和運(yùn)動一致性檢測方法,降低動態(tài)目標(biāo)的影響,并建立語義八叉樹地圖.Bescos等[9]提出DynaSLAM(Tracking, Mapping and Inpain-ting in Dynamic Scenes),同樣基于ORB-SLAM2,添加Mask R-CNN(Mask Region-Based Convolutional Neu-ral Network)和背景修復(fù)功能,在單眼、雙眼和RGB-D的動態(tài)序列上具有較好的魯棒性.該團(tuán)隊發(fā)布DynaSLAM II(Tightly-Coupled Multi-object Tracking and SLAM in Dynamic Scenes)[10],在原來的基礎(chǔ)上加入多目標(biāo)跟蹤功能,但只對剛性物體有效.Zhong等[11]提出Detect-SLAM(Making Object Detection and SLAM Mutually Beneficial),將單幀多邊界框檢測方法(Single Shot MultiBox Detector, SSD)[12]融入傳統(tǒng)視覺SLAM系統(tǒng),實現(xiàn)SLAM技術(shù)與目標(biāo)檢測之間的相互促進(jìn).付豪等[13]提出基于語義和光流約束的動態(tài)環(huán)境下的SLAM,采用DeepLab v3語義分割網(wǎng)絡(luò)獲取語義信息,結(jié)合光流信息,提出動態(tài)特征點過濾算法,并提出動態(tài)環(huán)境下的靜態(tài)語義地圖構(gòu)建方法,大幅降低存儲空間的需求.Fan等[14]采用BlizNet(A Real-Time Deep Network for Scene Understanding)[15]獲取圖像中動態(tài)物體的語義分割結(jié)果,提出可在高度動態(tài)的環(huán)境下建立具有更高精度的點云地圖的語義SLAM.Qi等[16]基于圖方法,將3D點云分割為多個集群,同時將YOLO V3(You Only Look Once: Unified, Real-Time Object Detection)[17]目標(biāo)檢測方法添加到傳統(tǒng)ORB-SLAM2系統(tǒng)中,并把語義信息投影到相應(yīng)三維點,建立帶有語義標(biāo)簽的3D稠密點云地圖.
在上述語義SLAM系統(tǒng)常用的網(wǎng)絡(luò)中,語義分割或?qū)嵗指罹W(wǎng)絡(luò)可獲得像素級別的分割結(jié)果,在剔除動態(tài)物體和添加地圖語義信息時具有較高精度,但一般運(yùn)算量較大,難以保證SLAM系統(tǒng)對實時性的要求.基于目標(biāo)檢測的方法運(yùn)算速度較快,卻只能得到物體所在的矩形邊界框,限制分割結(jié)果的精度.
針對上述問題,同時為了提高對深度圖像的利用率,本文提出聯(lián)合深度圖聚類與目標(biāo)檢測的像素級分割算法,在保證實時性的前提下,提高當(dāng)前語義SLAM系統(tǒng)的定位精度.首先,采用均值濾波算法對深度圖的無效點進(jìn)行修復(fù),使深度信息更真實可靠.然后,分別對RGB圖像和對應(yīng)的深度圖像進(jìn)行目標(biāo)檢測和K-means聚類處理,結(jié)合兩者結(jié)果得出像素級的物體分割結(jié)果.最后,利用上述過程的結(jié)果剔除周圍環(huán)境中的動態(tài)點,建立完整、不含動態(tài)物體的語義地圖.為了驗證算法的可行性,以TUM數(shù)據(jù)集和真實家居場景作為實驗環(huán)境,分別進(jìn)行深度圖修復(fù)、像素級分割、估計相機(jī)軌跡與真實相機(jī)軌跡對比的實驗.整個實驗表明,本文算法在公開數(shù)據(jù)集和真實環(huán)境上均具有較好的實時性與魯棒性.
ORB特征點作為SLAM中的經(jīng)典方法,采用FAST(Features from Accelerated Segment Test)檢測特征點,同時采用BRIEF(Binary Robust Independent Elementary Features)計算描述子,具有穩(wěn)定的旋轉(zhuǎn)不變性和光照不變性,結(jié)合BA(Bundle Adjustment)優(yōu)化等算法,本文基于ORB-SLAM2,設(shè)計聯(lián)合深度圖聚類與目標(biāo)檢測的像素級分割算法.在ORB-SLAM2系統(tǒng)的跟蹤線程、局部建圖、回環(huán)檢測及建圖等基礎(chǔ)線程上加入語義分割線程,用于獲取環(huán)境中的語義信息和剔除動態(tài)特征點,并在最終的地圖中加入語義標(biāo)簽,建立三維語義點云地圖.具體系統(tǒng)布局如圖1所示.
圖1 系統(tǒng)結(jié)構(gòu)圖
在語義分割線程中,首先將深度圖像進(jìn)行均值濾波修復(fù).然后采用目標(biāo)檢測算法處理RGB圖像,將得到的目標(biāo)邊界框結(jié)果融入深度圖中進(jìn)行聚類,得到物體的語義分割結(jié)果.結(jié)合DS-SLAM中提到的運(yùn)動一致性檢測方法剔除動態(tài)點,減少其對視覺里程計的干擾.最后將靜態(tài)物體的語義信息映射到點云地圖中,得到語義地圖并存儲.
深度圖像是構(gòu)建地圖的前提,在語義SLAM系統(tǒng)中,讀取深度圖像的信息獲取像素點和相機(jī)之間的距離,進(jìn)而得出其在世界坐標(biāo)系中的坐標(biāo),同時由于本文算法對深度圖依賴性較高,因此深度圖像質(zhì)量的優(yōu)劣是決定性能好壞的重要因素.
在實際應(yīng)用的Kinect V2相機(jī)中采用TOF(Time of Flight)[18]計算深度,開始時深度相機(jī)向外發(fā)射紅外線束,在接觸到障礙物時這些紅外線會被反射回相機(jī)接收器,通過從發(fā)出到被接收之間飛行的時間即可計算像素點和相機(jī)之間的距離.這種方法對于結(jié)果測量較精確,但受限于環(huán)境和設(shè)備的局限性,在某些特殊情況下測量精度會急劇下降甚至失效.
在公開數(shù)據(jù)集與真實場景中,出現(xiàn)無效黑洞值的原因主要有如下3種.1)物體材質(zhì).某些物體的材質(zhì)較光滑以至于紅外線發(fā)生鏡面反射,這時只有當(dāng)發(fā)射器和接收器在鏡面的中垂線上時才能接收到發(fā)出的紅外線并計算深度值,同時由于深色物體(尤其是黑色物體)對紅外光吸收能力較強(qiáng),在對黑色物體的測量中有時會因為光線無法被反射接收而出現(xiàn)無效點.2)發(fā)射器和接收器存在一定距離,由于視差原因在某些物體的輪廓邊緣會出現(xiàn)視覺盲區(qū),根據(jù)光學(xué)理論,這種影響在較近的物體邊緣較明顯,距離越遠(yuǎn)的輪廓誤差越小.3)深度相機(jī)自身磨損與老化情況嚴(yán)重,紅外線發(fā)射器或接收器存在部分故障,如TUM數(shù)據(jù)集的某些序列上在深度圖像四周總存在黑邊.
為了使深度圖的可信度及所建地圖比真實環(huán)境的還原度更高,本文算法結(jié)合RGB圖像轉(zhuǎn)換之后的灰度圖,在分割線程中加入基于均值濾波的修復(fù)方法.首先綜合對比均值濾波算法、雙邊濾波算法及中值濾波算法的原理與時間性能,并進(jìn)行實驗的對比分析.由于均值濾波本身原理較簡單,在3種濾波算法中的時間復(fù)雜度最低.同時還對比3種算法的原理.雙邊濾波是一種非線性的濾波算法,修復(fù)值取決于兩點之間的空間距離和灰度距離的權(quán)值,得到的修復(fù)值存在一定波動.中值濾波僅取一個點作為修補(bǔ)值,存在較大的偶然性.均值濾波是線性濾波算法,在修復(fù)過程中如果處理每個像素,可能會造成整體圖像的模糊,破壞原有圖像細(xì)節(jié).因此本文在傳統(tǒng)的均值濾波算法中添加謹(jǐn)慎的篩選策略進(jìn)行深度圖修復(fù),策略設(shè)計如下所述:1)跳過存在深度值的有效點.如果某一像素點的深度值大于設(shè)置閾值θ1,認(rèn)為此點深度值可信并跳過,保護(hù)原有像素點不被破壞.2)跳過獨立于物體之外的點.如果某一像素點的對應(yīng)灰度值與滑動窗口內(nèi)所有有效點的灰度值之差均小于設(shè)置閾值θ2,認(rèn)為此點為正常無效點并跳過,保護(hù)真實無效值不被破壞.經(jīng)過兩步篩選,僅對存在于物體上的無效點進(jìn)行修復(fù),有效保護(hù)圖像細(xì)節(jié).經(jīng)過實驗得出,上述策略中θ1=0,θ2=5較合適.
本文采用的修復(fù)算法如下:首先使用YOLO V3目標(biāo)檢測算法處理彩色圖像,得到圖像中物體的目標(biāo)邊界框集合
B={Box1,Box2,…,Boxn},
其中n表示算法檢測到當(dāng)前幀中的物體數(shù)量.對于每個Boxi∈B,有
Boxi={xi,yi,widthi,heighti},
其中,(xi,yi)表示第i個物體目標(biāo)邊界框的中心坐標(biāo),widthi、heighti表示該目標(biāo)邊界框的寬度和高度.將B中所有邊界框信息對應(yīng)添加到深度圖中,對于每個物體的深度信息,采用上述篩選策略進(jìn)行處理.本文認(rèn)為像素值不為0的點其信息是可信的,因此算法僅對無效黑洞點進(jìn)行修復(fù).對于第i個物體,從左上角點(xi-widthi/2,yi-heighti/2)開始,遍歷目標(biāo)邊界框中每點Pij,0 遍歷滑動窗口中的像素點:如果深度值為無效值或與要修復(fù)像素點之間的灰度值差別超過設(shè)置閾值,跳過;否則將其深度值累加,最終獲得有效像素值總和depValSum及有效像素點個數(shù)count.如果count=0,認(rèn)為該部分在真實環(huán)境下為無效點,不改變當(dāng)前無效值;否則,將其值賦為depValSum/count,進(jìn)行下一個像素點的處理,直至修復(fù)所有像素. 在TUM數(shù)據(jù)集上設(shè)備的限制會導(dǎo)致某些部分在相機(jī)測量范圍之外的情況,這種情況在深度圖中表現(xiàn)為四周的黑邊,影響對動態(tài)點的剔除和靜態(tài)物體的建圖精度,因此本文對這部分無效值也進(jìn)行修復(fù).在物體的候選框超出檢測范圍的區(qū)域中,首先計算周圍有效值點與無效點灰度值的差值,如果該差值小于設(shè)定的閾值,認(rèn)為該有效值點與無效點屬于同一物體,將其深度值累加,修復(fù)無效點,修復(fù)后的值可繼續(xù)用于下一個點的修復(fù)結(jié)果.依據(jù)此步驟,對超出相機(jī)測量范圍的物體部分進(jìn)行修復(fù),提升系統(tǒng)在建圖方面的精度. 算法1深度圖修復(fù) 輸入深度圖mImDepth,灰度圖Gray, 邊界框左上角坐標(biāo)(xi,yi), 寬度widthi,高度heighti 輸出修復(fù)圖mImFixed ImFixed←mImdepth form←xitoxi+widthido forn←yitoyi+heightido 取當(dāng)前像素深度值與對應(yīng)灰度值 depth_val←mImDepth(m,n) g_val←Gray(m,n) ifdepth_val≠0 then 初始化滑動窗口內(nèi)深度值總和與像素點個數(shù) depValSum←0 無錫金利達(dá)生態(tài)科技有限公司是國內(nèi)專業(yè)從事水生態(tài)修復(fù)工程技術(shù)研發(fā)及工程材料生產(chǎn)的高新技術(shù)企業(yè),是水生態(tài)修復(fù)整體解決方案提供商。公司主營業(yè)務(wù)包括水生態(tài)修復(fù)、生態(tài)護(hù)岸工程的規(guī)劃、設(shè)計、咨詢;水生態(tài)修復(fù)工程技術(shù)及產(chǎn)品的研發(fā)、生產(chǎn)和銷售;水生態(tài)修復(fù)工程施工技術(shù)的研究、推廣和應(yīng)用等。公司研發(fā)的“生態(tài)格網(wǎng)結(jié)構(gòu)”系列產(chǎn)品銷售額在國內(nèi)市場遙遙領(lǐng)先,成為該行業(yè)領(lǐng)軍企業(yè)。 count←0 自適應(yīng)地設(shè)置滑動窗口寬高 wm,n←max(4,widthi/10) hm,n←max(4,heighti/10) forp←m-wm,n/2 tom+wm,n/2 do forq←n-hm,n/2 ton+hm,n/2 do 取當(dāng)前像素深度值與對應(yīng)灰度值 depth_tmp←mImDepth(p,q) ifdepth_tmp≠0 and abs(g-g_tmp)<5 then depValSum←depValSum+tmp count←count+1 end if ifcount≠0 then mImFixed(m,n)←depValSum/count end if end for end for end if end for end for returnmImFixed YOLO V3目標(biāo)檢測算法由于在檢測準(zhǔn)確度和實時性上的優(yōu)越性,被廣泛應(yīng)用于各種對計算機(jī)視覺語義信息有需要的場景.但是,由于目標(biāo)檢測的局限性,算法僅能獲得物體的邊界框,其中不可避免地包含較多非目標(biāo)區(qū)域信息,如果不做優(yōu)化會影響視覺里程計和建圖的精度.此外,當(dāng)前大多數(shù)SLAM系統(tǒng)對深度圖的利用率較低,僅在建圖過程中離散地獲取像素深度值,很少連續(xù)性地考慮其中蘊(yùn)含的信息. 為了解決上述問題,基于每個物體其深度值應(yīng)該連續(xù)、平穩(wěn)且獨立于其它物體的先驗知識,本文提出聯(lián)合深度圖聚類及目標(biāo)檢測的像素級分割算法,結(jié)構(gòu)如圖2所示. 圖2 本文算法框圖 首先基于YOLO V3獲取當(dāng)前RGB圖像幀中的語義信息,在對應(yīng)的深度圖中分割所有目標(biāo)邊界框.然后對每個邊界框采用K-means進(jìn)行聚類處理,得到多個聚類簇.根據(jù)目標(biāo)檢測算法的原理,在一個物體的邊界框中,物體應(yīng)該作為前景且與背景元素相比占據(jù)邊界框大部分像素,因此取深度值較小、像素值較多的聚類簇作為物體的分割結(jié)果. 本文算法步驟如下. 1)通過YOLO V3獲得目標(biāo)的邊界框,在深度圖中取相應(yīng)的邊界框位置,進(jìn)行聚類,獲得k個聚類簇: C={cluster1,cluster2,…,clusterk}, (1) 每個clusteri∈C中存儲這類中所有像素點的深度值和像素點個數(shù), clusteri={d1,d2,…,dcounti,counti}, 1≤i≤k, (2) 其中,dj∈cluster,j=1,2,…,counti表示每個像素點的深度值,counti表示類中所有像素點的個數(shù). 2)結(jié)合式(1)和式(2),計算每個cluster的平均深度值: (3) 3)為了同時考慮深度值與像素個數(shù)指標(biāo),將通過式(3)計算得到的所有聚類簇的平均深度值Di和式(2)中像素個數(shù)counti進(jìn)行歸一化處理: (4) 其中,1≤i≤k,Dmax表示所有cluster中最大平均深度值,Dmin表示所有cluster中最小平均深度值,countmax表示所有cluster中最大像素個數(shù),countmin表示所有cluster中最少像素個數(shù). 4)由式(4)中歸一化的平均深度值和像素個數(shù)決定每個聚類簇的評分結(jié)果,設(shè)計函數(shù)使最終得到的結(jié)果滿足深度值較小且像素個數(shù)較多,即 scorei=θ1count_normali+θ2D_normali. (5) 實驗中分別取θ1=0.5,θ2=-0.5. 5)對比式(5)中得到的所有聚類簇分?jǐn)?shù),取分?jǐn)?shù)最高的cluster作為物體的分割結(jié)果: clusterobject=max{score1,score2,…,scorek}. 由上述步驟獲得物體的像素級分割結(jié)果后,針對室內(nèi)場景,剔除位于語義信息為“人類”區(qū)域上面的特征點,同時結(jié)合運(yùn)動一致性檢測算法計算其它動態(tài)特征點,降低動態(tài)物體對視覺里程計的影響. 本文采用TUM數(shù)據(jù)集上5個動態(tài)序列進(jìn)行深度圖修復(fù)、像素級分割、SLAM系統(tǒng)性能對比及語義建圖實驗,在真實家居環(huán)境中進(jìn)行動態(tài)點檢測與剔除實驗. 實驗所用計算機(jī)的配置為Intel i7-10750 12核心2.60 GHz CPU,16 GB內(nèi)存,NVIDIA GeForce RTX 2070獨立顯卡,ubuntu18.04操作系統(tǒng),拍攝設(shè)備為Kinect V2 RGB-D相機(jī). 本文在TUM數(shù)據(jù)集的fr3_walking_xyz序列上進(jìn)行濾波算法時間性能分析,分別采用均值濾波算法、雙邊濾波算法及中值濾波算法對序列中的深度圖進(jìn)行修復(fù).針對一幀圖像修復(fù)所消耗的平均時間如下:均值濾波算法為2.35 ms,雙邊濾波算法為3.36 ms,中值濾波算法為4.15 ms.均值濾波算法在對深度圖像的修復(fù)時間上低于另外兩種算法,表明均值濾波算法在時間性能上的優(yōu)越性.該算法能更好地滿足SLAM系統(tǒng)對于實時性的要求. 在TUM數(shù)據(jù)集的fr3_walking_xyz、fr3_walking_static序列上進(jìn)行深度圖修復(fù)實驗,場景中顯示器的材質(zhì)較光滑且呈現(xiàn)黑色,因此獲取的深度圖在顯示器區(qū)域中存在較多無效值,同時在一些物體輪廓邊緣也存在相應(yīng)的黑邊.本次實驗采用均值濾波算法,對YOLO V3檢測的物體區(qū)域進(jìn)行無效值修復(fù),效果如圖3所示,圖中使用紅色橢圓框標(biāo)注主要修復(fù)部分.由圖3可看出,在左邊第1列的2幅圖中,本文算法修復(fù)圖像中由于視差原因在人的輪廓邊緣產(chǎn)生的輪廓黑邊,在右側(cè)的黑邊中也修復(fù)本來未檢測到的一部分顯示器,而從第2列和第3列圖像中可看出,本文算法在存在大量無效值的圖像幀中也能獲得較優(yōu)效果.(b)中依然存在一些零散的黑洞區(qū)域,這是因為為了增加系統(tǒng)的實時性,在修復(fù)時僅考慮識別語義信息的物體.算法由于修復(fù)廣泛存在的無效值,因此為SLAM系統(tǒng)在后續(xù)像素級分割的算法提供基礎(chǔ). (a)修復(fù)前 本節(jié)在TUM數(shù)據(jù)集的fr3_walking_xyz序列上進(jìn)行實驗,驗證本文算法的有效性.以O(shè)RB-SLAM2系統(tǒng)為基礎(chǔ),加入本文算法,得到每幀的分割結(jié)果,用于SLAM系統(tǒng)的動態(tài)特征點剔除. 具體像素級分割結(jié)果如圖4所示.(a)為數(shù)據(jù)集原圖由FAST提取ORB特征點的結(jié)果,(b)為對應(yīng)的圖像經(jīng)過本文算法處理后輸出的分割結(jié)果.由于主要剔除人身上的特征點,因此在此實驗中將序列中屬于人這類的像素標(biāo)為紅色以區(qū)分其它部分.通過對比可看出,本文算法能精準(zhǔn)根據(jù)物體的輪廓劃分語義區(qū)域,獲得像素級的分割結(jié)果,為動態(tài)特征點的剔除提供基礎(chǔ).(c)為經(jīng)過本文算法和運(yùn)動一致性檢測對特征點進(jìn)行剔除之后的結(jié)果,可看到已剔除位于動態(tài)物體(人)上面的特征點,對視覺里程計的性能起到提升作用. (a)剔除動態(tài)點前 本文在TUM數(shù)據(jù)集上選取5個高動態(tài)序列(fr3_walking_xyz、 fr3_walking_static、 fr3_walking_rpy、fr3_walking_half、 fr3_sitting_static), 驗證系統(tǒng)剔除動態(tài)物體性能的魯棒性. 同時選取2個靜態(tài)手持序列(fr2_xyz、fr2_rpy)驗證本文算法在一般場景下定位與建圖的精確性. 以O(shè)RB-SLAM3和DS-SLAM作為基線方法進(jìn)行對比,實驗中采用均方根誤差(Root Mean Square Error, RMSE)、平均值(Mean)、中值(Median)、標(biāo)準(zhǔn)差(Standard Deviation, SD)4種衡量標(biāo)準(zhǔn),每種方法在每個序列上進(jìn)行10次實驗,取10次實驗的各項指標(biāo)的平均值進(jìn)行對比分析. 絕對軌跡誤差(Absolute Trajectory Error, ATE)指算法估計的相機(jī)位姿和真實位姿之間的差值,直觀反映算法對全局相機(jī)軌跡的計算效果. 相對位姿誤差(Relative Pose Error, RPE)指相鄰兩幀之間估計值與真實值之間差異的差值,衡量SLAM系統(tǒng)的漂移誤差,包括平移漂移誤差和旋轉(zhuǎn)漂移誤差. 本文方法、ORB-SLAM3、DS-SLAM的實驗結(jié)果對比如表1~表3所示,表中黑體數(shù)字表示最優(yōu)結(jié)果,斜體數(shù)字表示次優(yōu)結(jié)果,黑斜體數(shù)字表示存在2種最佳方法. 由表1~表3可看出:在高動態(tài)序列上,本文算法能有效減少動態(tài)物體對視覺里程計的影響;針對靜態(tài)手持序列,本文算法在更一般的場景下也能得到精確的定位結(jié)果. 表1 各算法在7個序列上的絕對軌跡誤差對比 表2 各算法在7個序列上的平移漂移誤差對比 表3 各算法在7個序列上的旋轉(zhuǎn)漂移誤差對比 在fr3_walking_xyz、fr3_walking_static、fr3_wal-king_rpy、fr3_walking_half序列上,相比ORB-SLAM3和DS-SLAM,本文算法能取得最優(yōu)性能.在fr3_sitting_static、fr2_xyz、fr2_rpy序列上,由于人的動態(tài)性較低或場景中不含動態(tài)物體,本文算法性能優(yōu)于ORB-SLAM3,與DS-SLAM在結(jié)果上相差不大,可認(rèn)為性能相當(dāng). 另外,本文算法還與文獻(xiàn)[19]方法~文獻(xiàn)[23]方法進(jìn)行對比,具體RMSE結(jié)果如表4和表5所示.在上述表中,黑體數(shù)字表示最優(yōu)結(jié)果,斜體數(shù)字表示次優(yōu)結(jié)果. 表4 各算法在5個序列上的絕對軌跡誤差的RMSE對比 表5 各算法在5個序列上的相對位姿誤差的RMSE對比 由表4和表5可看出,本文算法在與眾多前沿的語義SLAM系統(tǒng)的對比中:ATE指標(biāo)在5個序列中的2個序列上取得最優(yōu)效果,在1個序列上取得次優(yōu)效果;平移漂移指標(biāo)在3個序列上取得最優(yōu)效果,在1個序列上取得次優(yōu)效果;旋轉(zhuǎn)漂移指標(biāo)在3個序列上取得最優(yōu)效果,在剩余序列上取得次優(yōu)效果.綜合上述數(shù)據(jù)發(fā)現(xiàn),本文算法在高動態(tài)環(huán)境中效果優(yōu)于眾多語義SLAM. 本文還根據(jù)TUM官方給出的評估工具繪制SLAM估計的相機(jī)軌跡圖,并與真實軌跡進(jìn)行對比.ORB-SLAM3與本文算法在fr3_walking_xyz、fr3_walking_static序列上的軌跡對比如圖5和圖6所示.圖中黑線表示數(shù)據(jù)集上由運(yùn)動捕捉設(shè)備獲得的真實相機(jī)軌跡,藍(lán)線表示估計相機(jī)軌跡,紅線表示兩者之間的差別. 由圖5和圖6可看到,本文算法所得在很大程度上降低動態(tài)物體對算法性能的影響,能更好地擬合真實軌跡. (a)ORB-SLAM3 (b)本文算法 (b)The proposed algorithm (a)ORB-SLAM3 (b)本文算法 (b)The proposed algorithm 實驗中使用手持Kinect V2相機(jī)采集真實家居環(huán)境下的圖像序列,輸出大小為480×640,共計848幀圖像.下面在此序列上驗證本文算法. 本文算法在真實場景中對動態(tài)點的剔除效果如圖7所示.由圖可看出,本文算法在實際場景中也能剔除位于動態(tài)物體上的特征點,并保留位于靜態(tài)物體上的特征點以用于位姿估計,并獲得精準(zhǔn)的目標(biāo)語義分割結(jié)果. 在真實場景中,本文算法各模塊的平均運(yùn)行時間如下:ORB特征提取為10.22 ms,深度圖像修復(fù)為2.35 ms,目標(biāo)檢測為24.91 ms,深度圖像聚類為10.73 ms.同時選取DS-SLAM與DynaSLAM進(jìn)行系統(tǒng)整體運(yùn)行幀率的對比,對比結(jié)果如下:DS-SLAM為49.81 ms,DynaSLAM為1 167.33 ms,本文算法為32.85 ms.由此可看出,得益于分割線程與跟蹤主線程的高度并行設(shè)計,本文算法能滿足SLAM對于實時性的要求,耗時最短,由此驗證本文算法在實時性方面的可靠性. 結(jié)合圖7中的分割結(jié)果發(fā)現(xiàn),本文算法在真實場景中能在保證實時性的同時,獲得RGB圖像的像素級分割結(jié)果,提升SLAM系統(tǒng)在高動態(tài)環(huán)境下的定位精度,因此在真實場景中具有普適性與魯棒性. (a)剔除動態(tài)點前 (b)像素級分割結(jié)果 (c)剔除動態(tài)點后 本節(jié)對比本文算法與ORB-SLAM3在TUM公開數(shù)據(jù)集fr3_walking_xyz、fr3_walking_half序列上的軌跡擬合效果.由圖可看出,2個序列在真實軌跡中都存在位置上的回環(huán),同時結(jié)合表1~表3中的定量分析數(shù)據(jù)可看出,本文算法在存在回環(huán)時有更好的表現(xiàn),由此驗證本文算法在回環(huán)檢測中的優(yōu)異性能. 在建圖實驗中對TUM公開數(shù)據(jù)集fr2_xyz、fr3_long_office_household靜態(tài)序列及fr3_walking_xyz動態(tài)序列,共3組圖像序列,進(jìn)行處理并建立稠密語義點云地圖,在此序列上驗證本文算法在語義建圖方面的有效性. 對3個不同的圖像序列建立稠密語義點云地圖,如圖8所示.為了更直觀地展示建圖效果,在每個序列中挑選具有代表性的圖像幀作為對比.在地圖中使用不同顏色標(biāo)注,區(qū)分不同物體的語義信息,而其它沒有語義信息的部分采用現(xiàn)實世界中的顏色.由圖可看出,本文算法能還原真實環(huán)境中的地圖結(jié)構(gòu),可精準(zhǔn)標(biāo)注物體的語義信息,在fr3_walking_xyz動態(tài)序列上的實驗結(jié)果中也能較好地剔除位于人身上的點,為更復(fù)雜的機(jī)器人導(dǎo)航、識別及抓取等任務(wù)提供保障. (a)原始圖像 本文提出聯(lián)合深度圖聚類與目標(biāo)檢測的像素級分割算法.分割線程中首先基于均值濾波算法修復(fù)存在無效值的深度圖,同時采用YOLO V3對每幀進(jìn)行目標(biāo)檢測,獲取圖中的語義信息.然后基于已修復(fù)的深度圖,對每個物體進(jìn)行K-means聚類處理,得到像素級的語義分割結(jié)果,精確剔除位于動態(tài)物體上的特征點,減少動態(tài)環(huán)境下SLAM系統(tǒng)產(chǎn)生的誤差.實驗表明,本文算法在保證實時性的同時,提升分割精度. 本文對于動態(tài)物體的處理在于剔除人類身上的特征點及動態(tài)一致性檢測,減少高動態(tài)物體對SLAM系統(tǒng)的影響,在室內(nèi)場景中取得不錯效果.就當(dāng)前的語義SLAM研究領(lǐng)域而言,如果動態(tài)物體在一幀圖像幀中面積占比過大,可能會干擾系統(tǒng)對一般物體的檢測,影響回環(huán)檢測的精度.今后考慮把抗動態(tài)物體的回環(huán)檢測作為下一步的研究方向,綜合對比不同的思路可行性,尋找這一問題的解決方案.1.2 算法步驟
2 實驗及結(jié)果分析
2.1 深度圖修復(fù)實驗
2.2 語義分割實驗
2.3 在TUM數(shù)據(jù)集上的對比實驗
2.4 在真實場景中的實驗
2.5 回環(huán)檢測與語義建圖實驗
3 結(jié) 束 語