何召蘭,何乃超,張慶洋,姚 徐,丁淑培
(哈爾濱理工大學 測控技術與通信工程學院,黑龍江 哈爾濱 150080)
移動機器人的智能化研究主要集中在對未知環境的探索認知、自我行為決策與規劃、對未知信息的學習與表達等[1]方面,其中實現在未知環境中的自主定位導航,是移動機器人智能化研究的基礎與重點。要實現這一功能,不僅需要精確估算出每一時刻移動機器人的位姿信息,還要對每一時刻機器人所處位置的環境信息進行準確描述。1887年,Smith等提出了一種定位與構圖同時進行的方法[2],從此拉開對同步定位與地圖構建(simultaneously localization and mapping,SLAM)研究的序幕。SLAM也成為了實現移動機器人智能化導航的關鍵技術。
SLAM算法即是移動機器人從未知環境的某一地點出發,在運動過程中重復地讀取傳感器觀測數據,分析獲取環境特征與自身位置姿態,并以此實時構建周圍環境的增量式地圖[3]。其中,視覺傳感器相比于其它傳感器能夠獲得更豐富的圖像信息,同時視覺傳感器輕巧廉價、易于安裝[4],因此基于視覺傳感器的SLAM研究成為了當下研究熱點。視覺SLAM的實現主要有特征點法和直接法[5],其中,特征點法具有運行穩定、對光照及動態物體不敏感等優點[6],因此本文主要針對特征點法展開分析。近年來,隨著基于特征點法的視覺SLAM算法不斷發展,已經可以實現在特定的場景下的實時跟蹤定位。然而,目前主流的視覺SLAM系統仍然存在以下幾個問題:①在特征匹配的過程中容易受到噪聲和誤匹配點的干擾,魯棒性較差。②無法從場景中提取語義信息,僅能生成包含幾何信息的地圖,無法滿足機器人執行更高級任務的需求。因此本文將深度學習方法引入到視覺SLAM算法框架當中,優化了圖像特征匹配過程,實現了位置信息和語義信息的融合。
移動機器人在一個未知環境中運動,首先要建立固定不變的世界坐標系,根據機器人自身傳感器數據精準的建立時間與世界坐標系空間的對應關系,即在世界坐標系下描述各個時刻移動機器人自身位置及其所處環境,這是SLAM解決定位與構圖問題的核心。視覺SLAM的自身傳感器為相機,因此移動機器人的運動可以抽象為相機在世界坐標系下的剛體運動。具體形式如圖1所示。

圖1 坐標系變換
圖1中(xW,yW,zW)為世界坐標系,(xC,yC,zC)為移動坐標系,即相機所在坐標系,點P為世界坐標系空間一點,是路標(landmark)的抽象描述,路標是場景中比較有辨識度的物體或者區域。在每個時刻,傳感器會觀測到一部分路標,得到它們的觀測數據。設t時刻,相機觀測到空間點P,在移動坐標系下該觀測點坐標為(Ctpx,Ctpy,Ctpz),而t+1時刻,該空間點在移動坐標系下的坐標為(Ct+1px,Ct+1py,Ct+1pz),那么相機的運動方程如式(1)所示
(1)
其中,ΔT為t時刻到t+1時刻相機的位姿變換矩陣。
根據運動方程可知,若已知移動機器人的初始位姿,就可以通過各個時刻的觀測數據,估算出移動機器人在世界坐標系下的位姿,同時利用位姿變換信息,可以解算出各個路標點在世界坐標系下的坐標,構建全局一致的地圖。根據以上分析,可以得到SLAM的數學模型,如式(2)所示
(2)
其中,xt為t時刻移動機器人的位姿,zt,k表示移動機器人在xt位置觀察路標WPk的觀測數據。wt與vt,k為噪聲。
隨著國內外學者對視覺SLAM算法的不斷研究改進,視覺SLAM已經形成了一套較為完整的算法框架。如圖2所示。

圖2 視覺SLAM算法框架
視覺SLAM主要由前端視覺里程計、閉環檢測、后端局部優化以及全局地圖構建4個部分構成[7]。其中視覺里程計[8]主要通過相鄰兩幀圖像來估算移動機器人當前時刻的位姿變化,根據SLAM數學模型分析可知,機器人位姿是通過傳感器測量的路標觀測數據解算得到的。在視覺SLAM算法中,傳感器測量的路標觀測數據為相機采集的圖像幀的特征點集。因此計算機器人位姿首先要提取圖像特征點。圖像特征點是那些經過算法分析出來的,含有豐富局部信息的點[9]。在完成相鄰的兩幀圖像F1,F2的特征點提取之后,需要進行圖像特征匹配[10]。特征匹配解決的是相鄰兩幀圖像特征點集數據的關聯問題,即確定當前所觀察的路標點是否與上一時刻的路標點為同一個。經過特征匹配獲得一組組匹配的特征點對,如式(3)所示
(3)
這些特征點對應的是世界坐標系下的路標點。根據SLAM數學模型,這些特征匹配點對的變換關系如式(4)所示
?i,tPi=ΔTt - 1Pi
(4)
其中,ΔT為機器人的位移變換矩陣。在特征匹配的過程中,無法避免誤差的產生,為了盡量準確獲得該時刻移動機器人的位姿數據,本文采用最小化重投影誤差的方法來求解位姿。如式(5)所示
(5)
視覺里程計解算出的機器人位姿是短期的,隨著移動機器人的運行,估算誤差將不可避免的隨時間積累,因此視覺SLAM算法使用閉環檢測與后端優化[11]來避免誤差積累。閉環檢測通過讀取傳感器數據和視覺里程計信息來判斷機器人是否在之前曾經到達過某一位置,檢測到正確的回環后,將校正信息傳遞給后端進行優化和計算;后端局部優化結合不同時刻視覺里程計估算出來的相機位姿數據以及閉環檢測提供的回環信息進行全局優化,從而得到精確的軌跡和地圖。
根據上述分析可知,傳統的SLAM算法框架在估算機器人位姿時最重要的一步就是圖像特征點匹配,而一幀圖像的特征點數目較多,且圖像特征點屬于圖像的局部特性,如果機器人行駛到存在大量重復紋理的場景中,會使得提取到的特征描述子非常相似,如果不對圖像的特征點進行篩選,將導致較大特征點誤匹配率。并且采用特征法的視覺SLAM建圖為稀疏特征點地圖,這種地圖只能滿足機器人定位的要求,而無法提供導航、避障與交互等智能化功能。
近些年來,深度學習在圖像領域取得了巨大進步,為解決這些問題提供了新的思路。深度卷積神經網絡結構具有強大的特征學習能力,在圖像識別、圖像分割以及目標檢測方面取得了十分顯著的效果[12]。尤其在目標檢測領域,由于卷積神經網絡的引入,物體檢測的準確率與效率均得到了極大的提升[13]。何凱明等在Faster RCNN[14]架構的基礎上提出了MASK R-CNN[15],并斬獲了ICCV 2017年的最佳論文。MASK R-CNN將目標檢測與語義分割[16]結合在一起實現了圖像的實例分割,相對目標檢測的邊界框,實例分割可以獲取精確到物體邊緣輪廓的掩模信息;而相對語義分割,實例分割可以標注出圖像上同一類物體的不同個體。移動機器人通過視覺傳感器采集的圖像序列包含不同類別的物體,若結合MASK R-CNN的實例分割技術優勢與視覺SLAM算法提供的解算數據,不僅能夠提高定位精度還能為移動機器人提供語義信息。
MASK R-CNN是一個開源的基于深度學習的圖像實例分割框架,它可以有效檢測出圖像中的物體,并精確分割每一個實例,同時為每個實例生成高質量的語義掩模。
如圖3所示,MASK R-CNN框架可以并行完成目標分類、目標定位、語義分割3項任務。不同于傳統的語意分割,基于MASK R-CNN框架的實例分割不僅僅可以標注出圖像中物體的語義信息,還能夠區分同一類物體的不同個體,并可以用邊界框(bounding box)精確定位目標物體在圖像中的位置,這對于SLAM這種要求檢測精度較高的任務來說十分重要。

圖3 MASK R-CNN框架
MASK R-CNN主要由卷積神經網絡構成,通過多分支子網絡并行實現端到端的實例分割。MASK R-CNN實現實例分割的具體過程如下:
(1)將圖像輸入主干網絡(backbone network),生成特征圖(feature maps)。主干網絡的卷積層由MASK R-CNN整體共享,主要的功能是學習并提取圖像特征。本文使用深度殘差網絡(ResNet)[17]以及特征金字塔網絡(feature pyramid networks,FPN)[18]相互結合構建主干網絡;
(2)將特征圖輸入區域提議網絡(region proposal network,RPN),RPN是一個輕量級的卷積神經網絡結構。該網絡首先利用3*3的卷積層對原圖進行滑動掃描,為圖像的每個像素生成錨框(anchor box),然后將錨框送入分類分支以及邊框回歸分支(Bbox reg),分類分支輸出每個錨框存在物體的概率;而邊框回歸分支將錨框進行伸縮平移,使它更接近地回歸于標記好的真實邊界框(ground truth box),輸出初步的候選框坐標及其高與寬。最后在RPN末端綜合兩分支的結果,并利用非極大值抑制(non-maximum suppression,NMS)[19]對錨框進行初步篩選,最終獲得基于原圖的候選區域(region proposal);
(3)利用ROI Align對RPN輸出的候選區域的圖像進行處理。ROI Align使用雙線性內插的方法將基于原圖的矩形候選框坐標映射到特征圖上,并使所有映射到特征圖的候選區域圖像大小一致,使之符合全連接層(fully connec-ted layers,FC layers)的輸入要求;
(4)將經過ROI Align層處理的候選區域圖像送入目標檢測分支及掩模預測分支,完成分類、定位以及掩模預測任務。其中掩模預測是利用全卷積神經網絡(fully convolutional networks,FCN)[20]對候選區域圖像的每一個像素點進行分類,生成物體的掩模,實現對候選區域圖像的語義分割。
為提高視覺SLAM位姿估計的準確性并生成語義地圖,本文利用MASK R-CNN對視覺SLAM進行了改進,如圖4所示。

圖4 基于實例分割的視覺SLAM框架
本文在傳統的視覺SLAM框架的基礎上引入了MASK R-CNN分支,利用MASK R-CNN的信息輔助定位并構建語義地圖。具體改進如下:
(1)利用MASK R-CNN生成的掩模信息對特征點進行篩選;本文采用圖像的ORB(oriented FAST and rotated BRIEF)特征作為視覺SLAM的路標特征,ORB特征是目前最具代表性的實時圖像特征[21]。它改進了FAST檢測子不具有方向性的問題,并采用速度極快的二進制描述子BRIEF(binary robust independent elementary features),使圖像特征提取整個環節大大提速。對視覺圖像進行特征提取時,將生成大量的ORB特征點,這些特征點所包含的信息是冗余的,大量的特征點不僅會加大系統的運算量,更會導致誤匹配概率加大。MASK R-CNN可以對視覺圖像進行目標檢測,將圖像進行了目標與背景的分割,本文借助MASK R-CNN的掩模信息,剔除圖像背景的特征點,保留前景物體的特征點,篩選后的特征點歸屬不同的物體,因此ORB特征點描述子的相似性將大大降低;
(2)利用邊界框信息對視覺圖像進行分區,提高特征匹配效率;在傳統的SLAM算法中要完成一組特征點匹配,需要遍歷整幅圖像的特征點,運算效率極低,而MASK R-CNN利用邊界框將視覺圖像劃分成有語義標記的不同實例區域,在進行特征匹配時,只需要在同一實例區域進行匹配,這不僅極大提高了特征匹配的效率,更進一步減少了誤匹配現象的發生,提高了位姿匹配的估算精度;
(3)利用語義信息進行回環檢測;傳統的SLAM算法使用對特征描述進行聚類的方法來建立詞袋(bag of words, BOW)模型,而MASK R-CNN可以利用圖像分類的高級語義信息更直接而準確地建立詞袋模型,并實現回環檢測;
(4)利用語義信息構建語義地圖;MASK R-CNN可以對機器人在運動過程中檢測到的物體打上語義標簽,并結合SLAM框架生成帶有高級語義標簽的語義地圖。
為驗證本文算法的有效性和正確性,本節對基于實例分割的SLAM算法進行實驗驗證。主要的驗證方法為對比實驗。本文采用時下應用最為廣泛的ORB-SLAM2算法作為本文算法的對照組。ORB-SLAM2是ORB-SLAM的改進版本,支持單目,雙目以及RGB-D相機,該算法具備傳統SLAM所有的模塊功能,在處理速度、追蹤效果和地圖精度上都取得了不錯的效果。同時,ORB-SLAM2算法同樣使用ORB圖像特征,因此本文可以通過對比本文算法與ORB-SLAM2算法的結果來驗證本文算法的效果。主要驗證的指標為:特征匹配效率與精度、定位的準確性,以及構圖效果。
實驗采用兩種數據集,一種是MSCOCO數據集,另一個是TUM數據集。MSCOCO數據集是微軟專門為圖像識別、檢測以及語義分割所設計的大型圖像數據集,包含超過30萬張圖片,200多萬個實例以及80個對象類別。但該數據集的圖像并不具備時間連續性,只使用該數據集無法滿足實驗要求。因此本文使用TUM 的freiburg1_room數據集進行擴充。TUM數據集是德國慕尼黑工業大學利用深度相機采集的一組連續的室內圖像集,提供了深度相機參數以及相機在室內運動的真實軌跡(ground-truth),可以滿足本文實驗的需求。
為了提高MASK R-CNN在視覺SLAM算法框架中的表現力,本文在使用MSCOCO數據集訓練的基礎上,又使用TUM數據集對MASK R-CNN的網絡參數進行微調。TUM數據集沒有對圖像進行標注且包含的場景單一,因此本文首先利用labelme工具對選取的圖像進行標注并生成掩模,然后對圖像進行裁剪、縮放以及旋轉等處理,以擴充數據。經過訓練后,MASK R-CNN進行實例分割最終結果如圖5所示。

圖5 實例分割
可以看出,MASK R-CNN能夠較為準確檢測出圖中的物體,并對檢測物體進行像素級別的分類。
首先本文對特征匹配效率與精度這一指標進行驗證,將TUM數據集圖片分為完全相同的兩組,其中一組輸入傳統的ORB-SLAM2算法直接進行特征匹配,特征匹配效果如圖6所示。另一組輸入本文的算法框架,在進行特征提取的同時,利用實例分割進行特征點篩選并優化特征匹配過程,匹配效果如圖7所示。

圖6 傳統算法的特征匹配效果

圖7 實例分割優化的特征匹配效果
通過對比,可以看出ORB-SLAM算法提取得到的特征點數目是巨大的,且在特征匹配時存在很多誤匹配點,大量的特征點匹配需要進行復雜的運算,匹配效率低下,同時大量的誤匹配點還會為后續的位姿估計帶來較大的誤差。而本文算法利用實例分割對特征匹配過程進行優化,從圖中可以看出,本文算法進行特征匹配的特征點對較少,且匹配點均位于已分割出的語義區域,因此誤匹配現象較少。
接下來,本文對定位精度這一指標進行驗證。視覺SLAM能夠實時估算出移動機器人位姿,若將各個時刻的機器人位姿連接起來,就形成了機器人運行軌跡。TUM數據集提供了采集圖像時機器人運動的真實軌跡,如圖8所示。
因此通過比較SLAM估算得到的運行軌跡與真實軌跡的差值,如式(6)所示

圖8 TUM數據集真實軌跡
(6)


表1 運行軌跡差值
根據表1中數據顯示,本文算法的運行軌跡更加接近于真實軌跡,故基于實例分割的視覺SLAM算法的定位精度更高。
最后對本文算法的構圖模塊進行驗證。基于特征點法的視覺SLAM算法通常構建的為稀疏特征地圖,這種地圖無法具體的描述機器人當前所處的環境。隨著計算機硬件的發展,構建稠密的三維點云地圖成為了當前的主流,如圖9所示。這種地圖雖然可以直觀反應環境信息,但對于計算機來說,該地圖只不過由三維點云堆積而成,機器人無法憑借該地圖執行更高級的智能任務。本文利用MASK R-CNN的語義信息構建了具有語義信息的點云地圖。該點云地圖的點云像素被賦予了高級語義信息,為直觀描述,本文利用不同顏色來標注語義,如圖10所示。通過語義信息,移動機器人可以完成如自主導航、人機交互等高級任務。

圖9 三維點云地圖

圖10 語義地圖
基于實例分割的視覺同步定位與地圖構建算法將MASK R-CNN作為一個獨立的分支引入到傳統的視覺SLAM框架當中。通過理論分析以及實驗驗證,可以得到以下結論:①利用實例分割可以輔助完成SLAM的定位過程,提高了定位的精確性、魯棒性以及定位速度;②MASK R-CNN能夠對視覺圖像進行目標檢測,并對檢測到的物體進行像素級別的分類,賦予三維點云地圖語義信息,構建具有語義信息的三維點云地圖。滿足了移動機器人執行更高級的智能化任務的需求。下一步,本文將進一步的將深度學習引入到視覺SLAM框架中,利用深度學習在圖像特征提取方面的優勢,真正實現端到端的機器人定位與語義地圖構建。