?

基于深度學習的室內動態場景下的VSLAM方法

2020-12-14 07:50徐曉蘇安仲帥
中國慣性技術學報 2020年4期
關鍵詞:位姿語義像素

徐曉蘇,安仲帥

(1.微慣性儀表與先進導航技術教育部重點實驗室,南京 210096;2.東南大學儀器科學與工程學院,南京 210096)

視覺同時定位與地圖構建(VSLAM)技術是無人駕駛、工業機器人、AR/VR、自主導航[1]等應用的基礎技術。由于VSLAM 中的圖像含有豐富的信息,并且和人類利用眼睛完成自身定位的機理類似,其在近年獲得了較大的發展,許多先進的VSLAM 算法被不斷提出,比如:ORB-SLAM2[2],SVO[3],DSO[4]等等。然而,這些算法大都基于靜態環境的假設,一旦應用于道路行駛等動態環境,算法會受到運動物體的干擾,導致定位漂移,跟蹤丟失等問題,嚴重影響算法的定位精度以及穩定性。

為了解決上述問題,已經有人進行了嘗試。Zhong等人于2018年提出了Detect-SLAM[5],該算法利用SSD目標檢測神經網絡來檢測物體,然后通過特征匹配和增加影響區域的方式完成運動概率的傳播,以此來去除動態點的影響;然而由于目標檢測框的范圍較大,因此會導致誤刪除較多靜態點。Berta 等人也在2018年提出了Dyna-SLAM[6],該方法使用了MASK R-CNN[7]實例分割網絡和多視圖幾何的方法來篩選出動態特征點,此外還結合了區域生長算法來去除圖片中的動態物體,然而由于MASK R-CNN 運行頻率只能達到5Hz,所以該算法不能實時運行。Yu 等提出了DS-SLAM[8]算法,該方法在ORB-SLAM2的基礎上結合了SegNet 語義分割網絡,從而去除了環境中的運動的人的影響,并且可以構建語義八叉樹地圖[9]。

本文針對現有的SLAM算法在動態環境下定位精度較低、魯棒性較差、特征容易跟丟且提取較慢等問題,對現有SLAM 算法進行了改進,主要完成了以下工作:

1.對ORB-SLAM2算法進行改進,利用GCNv2神經網絡替換傳統的基于圖像金字塔的特征提取的方法,在不影響精度的同時,極大地提升了前端在提取特征時的速度。此外,GCNv2網絡在動態環境下相比傳統方法也有著更好的穩定性。

2.利用輕量級的ESPNetv2語義分割網絡,來完成像素級的語義提取,結合改進的移動一致性檢測來剔除動態特征,提升了動態場景下的定位精度。

3.建立帶有語義信息的點云地圖和八叉樹地圖,為機器人的導航、定位、智能交互提供語義信息。

4.在慕尼黑工業大學的TUM 數據集上,與ORB-SLAM2進行對比,評價本文算法的有效性。

1 算法組成

1.1 算法框架

本文算法在ORB-SLAM2的RGB-D模式的基礎上進行改進,在原本的跟蹤、局部建圖和回環檢測三線程之上,增加了用于語義分割的線程和建立語義八叉樹地圖和語義點云地圖的線程。整體算法框架如圖1所示,由RGB-D相機得到的RGB圖像同時傳入跟蹤線程和語義分割線程,在跟蹤線程中,利用GCNv2網絡來替代原本的基于圖像金字塔的ORB特征點提取方式,然后對網絡輸出進行非極大值抑制,得到ORB特征點和描述子。在語義分割線程中利用ESPNetv2對RGB圖像進行像素級的語義分割,得到每個像素的語義標簽。通過移動一致性檢測獲得潛在的運動局外點,如果在物體的語義邊界內有超過一定數量的潛在運動局外點,那么將此物體視為運動物體,將其中的動態特征作為局外點剔除,利用剔除后的靜態特征進行位姿估計,并根據語義分割的結果賦予點云不同的顏色來生成語義地圖和八叉樹地圖。

圖1 算法框架圖Fig.1 Algorithm frame work

1.2 特征提取

傳統的ORB特征提取通過將輸入圖像的分辨率不斷降低,組成不同分辨率的圖像金字塔,然后對每一層圖像劃分成許多30×30像素的網格,在每個網格中提取角點,最后對提取的角點來計算描述子,因此,整個過程的計算十分復雜,非常耗時。為了改進傳統的基于圖像金字塔的特征提取方法在動態環境下魯棒性不足以及計算量較大問題,本文使用基于Pytorch實現的GCNv2[10]神經網絡來直接獲得ORB特征點和描述子。

GCNv2使用TUM和SUN-3D[11]數據集進行訓練,不同于其他使用單張圖片進行訓練的網絡,GCNv2使用圖像對進行訓練,通過將圖像對之間的相對位姿參與到損失函數的設計中來,可以讓本網絡所提取的特征更加適用于特征匹配和計算位姿,因此,其獲得的特征相比傳統方法,在動態環境下的魯棒性高,不容易發生特征的跟丟。如圖2所示,GCNv2將單通道灰度圖片調整為320×240像素的大小輸入網絡,通過前向傳播得到兩個矩陣:一個是3×320×240像素的包含特征點位置信息和置信度的矩陣,另外一個是256×320×240像素的包含對應描述子的矩陣。然后對特征進行非極大值抑制和均勻化處理,具體步驟如下:首先為了處理邊緣的特征,對圖像的邊緣進行插值填充,將原圖像擴充為328×248像素,然后將圖像劃分為許多8×8像素的網格,提取出每個網格中置信度最大的特征點的索引,根據索引查找對應的描述子,最終獲得了分布均勻的特征點及其對應描述子。

圖2 GCNv2網絡完成特征提取Fig.2 Feature extraction using GCNv2network

1.3 語義分割

為了得到圖像中每個像素的語義標簽,進而確定潛在的運動目標,本文采用Mehta等人于2019年提出的一種輕量級、高效率、通用的卷積神經網絡:ESPNetv2[12]來完成圖像的語義分割任務。近年來不斷有學者提出新的語義分割網絡,但是大多追求分割的準確性,導致運行速度較慢,如:PSPNet[13]速度為5幀/秒,SegNet[14]為17幀/秒,而ESPNetv2由于使用了新的輕量化的CNN架構,擁有著更快的速度以及更少的參數,其最快速度為83幀/秒。因此綜合速度和精度兩方面考慮,選擇ESPNetv2。此網絡基于Pytorch 實現,使用PASCAL VOC2012[15]數據集進行訓練,可以將圖片分割成包括背景在內的21個類別。

語義分割的處理過程如圖3所示,ESPNetv2的輸入是384×384大小的RGB圖像,而網絡的輸出是384×384像素的單通道灰度圖,每個像素點的灰度值表示其代表的語義標簽,我們對網絡輸出使用LUT 查表法上色處理,最終輸出彩色的語義分割圖。

圖3 ESPNetv2網絡完成語義分割Fig.3 Semanticsegmentation using ESPNetv2

1.4 改進的移動一致性檢測

利用語義分割,我們可以獲得具有潛在運動可能性的區域,但是考慮到可能存在著靜止的人等特殊情況,因此還需要進一步來判斷潛在的運動目標是否真的在運動。常用的檢測動態點的方法為背景減除法和幀間差分法[16],基本原理均是基于圖像的差分,在相機靜止時可以取得較好的效果,但均不適用于相機運動的情況?;诔砻芄饬鞯倪\動物體檢測方法雖然可以用于相機運動的情況,但因為要跟蹤每一像素點的光流,實時性較差。因此本文采用DS-SLAM[8]中提出的基于稀疏光流的動態點檢測方法:移動一致性檢測,并對其進行改進,詳細討論了點在極線上和極線外兩種情況。

圖4 移動一致性檢測Fig.4 Mobileconsistency detectio n

其原理如圖4所示,左右兩個四邊形表示在不同位置的相機的成像平面π1和π2,O1,O2表示相機的光心,點p1,p2表示空間點P在不同屏幕投影的像素坐標,其對應的歸一化坐標為P1,P2:

點P,O1,O2組成的平面和成像平面相交所產生的直線就是極線:l1,l2,根據對極幾何的知識可知,基礎矩陣F表示的就是P1到極線l2的映射,即:

因此,極線l2表示空間點P在π2平面上可能的投影位置,極線l2在平面的方程為Ax+By+C=0,因此,我們可以根據p2和極線l2之間的關系來判斷p2是否是一個動態點,因為所有的靜態點都應滿足上述投影模型,如果不滿足則說明該點是動態的。

基礎矩陣F的計算則是通過跟蹤連續兩幀之間的稀疏光流找到匹配的特征點,然后帶入式(3)求出。

我們可以將p2和l2之間的位置關系分為以下兩種:

1) 點p2在極線l2外:

則計算點到直線之間的距離,即p2到l2之間的距離D:

如果距離D大于閾值,那么判斷為動態點。

2) 點p2在極線l2上:

即使p2在l2上,也不能確定p2就是靜態點,考慮到l2上可能存在著很多和p2相似的點,如圖4所示,我們取p1和p2周圍大小為5×5 的像素塊,來進行塊匹配,判斷像素塊之間的相似度。本文使用去均值的歸一化互相關(NCC)來計算像素塊之間的相似度,計算公式如下:

其中p1和p2周圍的5×5 像素塊分別記為:A、B,而其均值分別為:、,其中i,j=- 2,- 1…1,2。兩個像素塊之間相似度夠高則認為是靜態點,否則是動態點。

如果語義分割得到的潛在的運動目標范圍內存在的動態點的數量超過一定閾值,則認為目標是運動的,將其范圍的特征點作為局外點剔除,使用剩下的靜態特征點進行位姿估計。否則,將目標視為是靜止的,其范圍內的特征點將會全部參與位姿估計。這樣,可以更為準確地判斷環境中的動態物體,提升動態環境下的定位魯棒性。

2 試驗驗證與結果分析

本文采用德國慕尼黑工業大學開源的 TUM RGB-D 數據集[17]來驗證本文算法在動態環境下的魯棒性和定位精度。該數據集包括了39 個不同室內環境的圖像序列,由RGB-D Kinect 相機以30 Hz 的頻率錄制,內容包括:RGB 圖、深度圖,以及由動作捕捉系統獲得的相機軌跡真值。其中的sitting 和walking 兩個子序列是動態環境,sitting 序列是兩個人坐在桌子前,同時伴隨著小幅度運動,而walking 序列則是兩人圍繞著桌子做大幅度的運動。此外,這兩個動態子序列還對應著四種相機的運動方式(1)halfsphere:相機沿著直徑1 m 的半球面運動;(2)xyz:相機沿著x,y,z軸方向運動;(3)rpy:相機沿著橫滾、縱搖、方位軸轉動;(4)static:相機靜止。

本文使用的評價指標為絕對軌跡誤差(ATE),該指標通過比較真值和估計值之間的位移差來進行評估。第i幀的絕對軌跡誤差ATEi計算公式如式(6)所示:

其中,i= 1…n,n為總幀數,Qi,Pi∈SE(3)分別表示第i幀的真實位姿和估計位姿,S∈SE(3)表示從估計位姿到真實位姿的變換矩陣,trans()表示只取位姿中的平移部分。我們對絕對軌跡誤差分別計算其對應的均方根誤差(RMSE)、均值(Mean)、中值(Medium),其中均方根誤差(RMSE)的計算公式如式(7)所示:

實驗的運行環境為:Intel Core i7-9750H,8GB 內存,NVIDIA GTX-1650,4GB 顯存。

2.1 特征提取實驗

為了驗證使用GCNv2 神經網絡來提取特征相對于傳統方法更具優勢,我們僅將ORB-SLAM2 算法的前端的提取特征部分替換成使用GCNv2 網絡,而其他的部分保持不變,以此來保證公平。我們分別使用運動幅度較小的sitting 序列和靜態序列來比較兩種方法的定位精度和速度。評價的指標是絕對軌跡誤差的均方根誤差(RMSE)和平均每幀跟蹤的時間以及其變化幅度。其中變化幅度的定義為:

其中ori表示ORB-SLAM2的運行結果,ours表示本文提出的方法的運行結果。

從表1可以看出,無論在靜態場景或是在弱動態場景下,利用GCNv2來提取特征,相比傳統方法在精度上皆有提升;此外,提取特征的速度也有提升,提升的幅度在10%~50%之間。

表1 ORB-SLAM2和GCNv2的絕對軌跡誤差和平均每幀的跟蹤時間對比Tab.1 Comparison of the ATEand theaverage tracking speed per frame between ORB-SLAM2and GCNv2

圖5則顯示了利用改進的移動一致性檢測所得到的動態點和極線,其中,標注的紅點為動態特征點,紅線為極線。

圖5 動態點與極線Fig .5Dynamic points and polar lines

2.2 定位誤差實驗

為了驗證本文算法在較大動態環境下的性能,我們使用高動態場景的walking 子序列分別對ORB-SLAM2和本文的完整算法進比較。

表2顯示了ORB-SLAM2 和本文算法在高動態的walking 子序列中的絕對軌跡誤差的比較,其中的half表示halfsphere序列??梢詮谋砀窨闯?,本文算法的絕對軌跡誤差有著較為明顯的減少,減少幅度在87%至98%之間,平均減少95%。

表2 ORB-SLAM2和本文算法的絕對軌跡誤差的對比Tab.2 Comparison of the ATE between ORB-SLAM2and our algorithm

圖6(a)顯示了walking_half 序列中,ORB-SLAM2和本文算法在x、y、z軸方向上的位移估計值和真值的比較。(b)則顯示了姿態角真值和估計值的比較。(c)和(d)顯示了ORB-SLAM2和本文算法在x,y軸平面估計值和真值的可視化軌跡曲線,其中,黑線為軌跡真值,藍線為實際運行軌跡,紅線為距離誤差。由圖像可知,本文算法明顯提升了在動態環境下的定位準確性。

將本文算法與同類算法進行實時性比較分析如表3所示,其中Mask Fusion 的實時性和其跟蹤的模型數目有較大關系,當動態目標較多時,耗時將大大增加。根據表格可以看出,本文算法相比同類型算法具有較好的實時性。

圖6 fr3_walking_half 序列中ORB-SLAM2和本文算法的位移、姿態角和軌跡對比Fig.6 Comparison of displacement,rotation and trajectory between ORB-SLAM2and the proposed algorithm in sequence fr3_walking_half

表3 時間對比Tab.3 Timecomparison

2.3 語義點云地圖和語義八叉樹地圖

本文算法借助PCL 庫和OctoMap庫來分別構建點云地圖和八叉樹地圖。為了驗證算法在動態環境下的建圖效果,使用TUM 數據集中的walking_halfsphere子序列,在該序列中存在著兩個持續運動的行人,如圖7(a)所示。本文算法將環境中的動態行人進行過濾并剔除,最終生成不包含動態物體的靜態地圖,并在靜態地圖上標注出語義信息,構建出的靜態語義地圖如圖7(b)、7(c)所示,其中(b)為構建的點云地圖,(c)為構建的八叉樹地圖,地圖中的椅子被上色為紅色,顯示器被上色為藍色。

圖7 包含動態物體的圖像序列與生成的靜態地圖Fig.7 Imagesequencescontaining dynamicobjectsand generated static maps

3 結論

本文提出了一種基于深度學習的室內動態場景下的VSLAM方法。該方法在ORB-SLAM2的系統上融入了GCNv2和ESPNetv2神經網絡,分別來完成特征提取和語義分割,結合改進的移動一致性檢測,將環境中的動態特征剔除,提高了系統在動態環境下的定位精度和穩定性。本文通過TUM 數據集對算法進行了實驗驗證。實驗結果表明,本文算法可以明顯提升原系統在動態環境下的定位精度。但本文算法仍有改進空間,首先語義分割網絡的像素分割的準確性有待提升,后續會改用準確率更高的網絡。此外,本文算法主要面向室內,未來將重點關注道路行駛等室外場景下的動態環境處理。

猜你喜歡
位姿語義像素
真實場景水下語義分割方法及數據集
像素前線之“幻影”2000
船舶清理機器人定位基準位姿測量技術研究
語言與語義
“像素”仙人掌
優化ORB 特征的視覺SLAM
基于單目視覺的工件位姿六自由度測量方法研究
“吃+NP”的語義生成機制研究
高像素不是全部
漢語依憑介詞的語義范疇
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合