李琳輝,張溪桐,連 靜,周雅夫,鄭偉娜
(工業裝備結構分析國家重點實驗室(大連理工大學),遼寧 大連 116024)
SLAM(simultaneous localization and mapping,同時定位及地圖構建)是實現智能車輛自主導航的關鍵,受到國內外學者的廣泛重視[1].根據傳感器的不同,SLAM可分為基于激光傳感器的LSLAM[2]和基于視覺傳感器的VSLAM[3].其中,基于視覺傳感器的SLAM具有成本低、獲得的環境信息豐富等優點,是當前智能駕駛領域的研究熱點.
VSLAM可分為以SVO[4]和LSD-SLAM[5]為代表的直接法SLAM,以及以SOFT-SLAM[6]和ORB-SLAM2[7]為代表的特征點法SLAM.其中,特征點法SLAM適用于光照條件較差和相機發生大尺度位移或旋轉的場景,具有更強的魯棒性.該方法首先提取圖像中的顯著特征,計算特征的描述子,再根據兩幀圖像中特征的描述子距離進行匹配,最后根據匹配關系用對極約束、PnP或ICP算法求解出兩幀之間的位姿.
特征點法SLAM根據圖像中包含的世界模型點來反推相機位姿,處于運動狀態的特征點會使計算的準確性受到影響,因此不能解決動態場景中位姿計算和地圖構建的精度下降問題.如何區分特征點的動靜狀態是消除運動物體對位姿計算帶來不利影響的重點.針對動態場景中緩慢運動的非剛性物體,Agudo等[8]使用物理先驗算法在動態場景中實現了姿態估計;Ahuja等[9]利用SfM算法對場景中的運動對象進行實時3D重建.針對動態場景中存在快速運動的物體(如自行車、汽車等),Yu等[10]提出一種光流跟蹤幀間圖像的一致性檢驗方法來找到運動的像素點,能檢測到場景中快速運動的物體.從地圖構建和方便智能車環境理解的角度而言,如果單純從動靜點區分的角度改善建圖精度,一方面很難適應動點多于靜點的場景,另一方面會將暫時靜止的車輛、行人等可移動目標囊括到地圖中.所以,在SLAM過程中結合場景的語義信息[11-12]顯得尤為必要.
目前,以DeepLab[13]、FastFCN[14]、SDCnet[15]以及PSPNet[16]為代表的基于深度學習的語義分割方法具有較高的準確性和魯棒性.其中,Zhao等[16]提出的PSPNet(pyramid scene parsing network)利用帶有空洞卷積的特征提取和金字塔池化模塊,有效提取圖像的上下文信息,能夠進一步提高語義分割的精度.
然而,針對某些近景特征不足、光照條件惡劣或存在大量運動目標的場景,在剔除運動目標后,特征點數量不足會導致位姿計算失效.針對該問題,研究者利用場景中線特征[17]、角特征[18]等其他特征與特征點結合,共同參與位姿計算.然而這些特征只有在特殊環境下才比較常見,在一些開闊的大型場景下仍存在特征不足的問題.Jeong等[19]就大型室外場景提出了Road-SLAM,該算法利用路面結構化特征對SLAM的回環檢測部分進行了優化.這些特征在光照條件差的場景下也容易被檢測,并且分布在路面這一單一平面上,易于通過立體匹配計算其準確深度,可以用于解決位姿計算過程中近景有效特征不足的問題.除此之外,路面結構化特征還可以應用于車輛車道保持、路徑規劃等駕駛任務.
基于以上分析,本文提出了一種結合場景語義信息和路面結構化特征的SLAM算法.針對復雜交通場景,設計帶有改進金字塔池化模塊的語義分割網絡,得到圖像中各像素對應的目標類別,作為運動點剔除的依據,從而避免運動點參與特征匹配而導致的位姿計算準確性下降問題;針對包含大量運動物體、近景特征點不足、光照條件差等惡劣場景,基于V視差確定圖像中的路面區域并擬合出精確的視差值,提出一種基于路面結構化特征的位姿計算方法;最后,通過場景實驗驗證所提出方法的有效性,并建立包含語義信息的稠密點云地圖,為復雜的駕駛任務提供盡可能全面的環境信息.
如圖1所示,本文設計的SLAM算法整體架構參考ORB-SLAM算法,共包含4個主要模塊:位姿計算、稀疏地圖構建、回環檢測和語義重建.其中稀疏地圖構建模塊、回環檢測模塊沿用ORB-SLAM的基礎框架.在此基礎上,針對該SLAM算法在包含動態物體以及近景特征不足場景下的精度下降問題,對其位姿計算模塊進行改進.同時,為給自動駕駛任務提供更豐富的環境信息,增加了語義重建模塊.主要研究工作如下.
1)動態特征點剔除:為消除場景中動態物體對位姿計算精度的影響,本文通過設計的帶有改進的帶孔金字塔池化模塊[20](advanced atrous spatial pyramid pooling,ad-ASPP)的神經網絡對輸入的圖片進行語義分割,目標類別包括天空、建筑物、機動車、行人、自行車等.同時,對圖像進行ORB特征點檢測.若場景中某目標包含運動的可能性,則將其定義為動態目標(機動車、行人和自行車),屬于動態目標類別的像素點為動態點.本文根據語義分割的結果,將動態點從特征點檢測結果中剔除.
2)立體匹配有效范圍外特征點剔除:根據立體匹配原理,場景中與相機光心距離過遠的點的計算結果會失效,需要對候選點進行篩選,剔除不在立體匹配有效范圍內的特征點.
3)道路結構化特征檢測與匹配:進行過兩次篩選后,剩余特征點的數量如果達到計算位姿所需點數量的閾值,則直接進行位姿計算過程;若特征點數量未達到閾值,則利用本文提出的基于路面結構化信息的方法進行幀間位姿計算.該方法對圖像中的道路結構化特征進行檢測與匹配,通過增加路面結構化特征點解決參與SLAM位姿計算的有效近景特征不足的問題.
ORB-SLAM原本的稀疏地圖構建模塊構建的點云地圖是稀疏的,缺失了大部分的環境信息.因此,本文增加了一個語義重建模塊.在系統完成位姿計算和回環檢測模塊之后得到最終的位姿估計結果.根據稀疏地圖構建模塊篩選添加后得到的關鍵幀結果,以及回環檢測模塊優化后的位姿計算結果,將當前關鍵幀圖像中的所有像素三維重構成世界坐標系下的點云;同時根據卷積神經網絡獲取到的語義分割結果,對點云進行類別屬性的定義,從而構建出3D稠密語義點云地圖.該地圖同時包含了環境的幾何信息和語義信息.

圖1 算法整體流程
本文語義分割網絡的總體結構見圖2.網絡主要分為編碼器和解碼器兩個部分.其中編碼器部分采用殘差神經網絡(ResNet)作為特征提取基礎網絡[21],解密碼器部分采用改進的帶孔金字塔池化模塊(ad-ASPP).輸入的圖像經過ResNet50特征提取模塊的卷積操作后,得到相較于原圖大小1/8的特征圖,然后與本文所提出的改進的帶孔金字塔池化模塊(ad-ASPP)相連,最后得到原圖大小的語義分割結果圖.將ad-ASPP模塊置于殘差網絡之后,可以利用深度網絡提取得到更加抽象的語義信息,擴大高級特征信息感受野,這些特征比低級的輪廓、紋理信息更加有用.

圖2 語義分割主網絡結構
本文使用的語義分割網絡選用允許網絡拓展深度而不會產生梯度爆炸和梯度消失的ResNet50作為特征提取的主體.ResNet50主要由5個模塊組成,其中各個模塊的參數構造見表1.其中包括每個模塊的輸出特征圖像大小,以及每一個模塊中各個卷積層的卷積核參數.特征提取模塊的輸入是大小為512×1 024的RGB圖片,輸出得到大小為32×64的特征圖像.

表1 ResNet-50模型結構
在卷積神經網絡中,空洞卷積[22]通過對卷積核進行插零來擴大每一次卷積的感受野,能夠提取到原本非近鄰像素的特征信息,從而獲取圖像的上下文信息,這一信息在語義分割任務中能夠起到重要的作用.本文根據相關研究提出了一種改進的空洞卷積金字塔池化模型,其主體結構見圖3.

圖3 改進的帶孔金字塔池化(ad-ASPP)模塊
1)受經典網絡ResNet的啟發,加入了一個直連支路,將該模塊的輸入直接傳遞給輸出,可以有效保證圖片的原始信息不因卷積過程而丟失.
2)不合理地設置空洞卷積的擴張率會造成各種問題,當擴張率過大時,感受野的過大會造成提取到的信息關聯性較差,不利于圖像中細小物體的特征提取.為合理設置空洞卷積的擴張率,保證信息之間的關聯性,本文還增加了一個級聯空洞卷積的神
經網絡支路.該結構在原始的空洞卷積基礎上增加了感受野的尺寸,同時消除了不合理的擴張率設置對特征信息關聯性的不良影響.假設未被級聯前的兩個空洞卷積層的感受野大小分別為N1和N2,則將二者級聯后其感受野尺寸變為N=N1+N2-1.本文設計的級聯空洞卷積擴張率分別設置為6、12、18、24.
3)受DeepLab[23]網絡和PSPNet[16]啟發,將該模塊設計成多支路并聯的形式,每條支路提取不同尺寸感受野內圖像的特征,利用concat模塊將這些支路的特征提取結果合并.不同感受野的融合使網絡在關注圖像局部細節的同時把握全局的結構特征.
4)空洞卷積層的串并聯共存結構可以使圖像中的每一個像素都更積極地參與計算,在一定程度上對于“棋盤格效應[24]”起到了削弱的作用.
若行駛過程中相機拍攝到的運動物體過多,特征點匹配過程中根據語義分割結果篩選掉大部分近處的運動特征點,只剩下遠處的匹配特征點,在雙目立體匹配過程中這些點可能會由于超出其有效距離范圍而無法正確進行準確的立體匹配,這會導致相機位姿計算結果失效,所以本文提出了一種基于路面結構化特征檢測與匹配的相機位姿計算方法.算法整體流程見圖4.

圖4 路面結構化特征位姿求解算法
首先,對輸入的雙目視圖進行立體匹配,求解出該幀圖像的視差圖,然后利用視差圖獲得V視差圖;根據世界坐標中某一平面在V視差圖的表現,對V視差圖進行霍夫變換,檢測出表示地面的直線;根據這條直線能夠準確地找到地面在圖像中的區域,并將該區域設為感興趣(range of interest,ROI)區域;在ROI區域中利用邊緣檢測和霍夫變換檢測路面結構化特征線條,然后對線條上的特征點進行幀間匹配,最后根據匹配結果利用PnP算法求解出相機位姿.
在世界坐標系下,設某點P的坐標為Pw=[xw,yw,zw],其投影到相機成像平面的像素坐標為Pp=[u,v]T.對于世界坐標系中的某一平面,其數學模型為:yw=h,h代表該平面的水平高度.則該平面視差值滿足

(1)
式中:ddisp代表平面某點視差值,f代表相機焦距,b代表雙目相機的基線長度,θ為相機主光軸方向與道路平面夾角.可知,地面上點的像素縱坐標與其視差值成線性關系.
V視差[25]是基于雙目立體匹配獲得的視差圖得到的,包含3個維度的信息.其圖像的縱軸表示原視差圖的行坐標,橫軸表示0~255的視差值,強度軸表示原視差圖中視差值為某個值的像素點數量,見圖5.根據上述推論,水平路面在V視差圖中表現為一條斜率為負的傾斜直線.對V視差圖進行霍夫檢測,可以求出代表地面的直線(圖5中的紅色斜線),即地面的視差方程為ddisp=k·v+b.

圖5 通過V視差圖獲取地面點視差
找到地面在圖像中的位置后,在屬于地平面鄰近平面的圖像范圍內檢測道路上的結構化特征.首先對圖像進行二值化和Canny邊緣檢測,結果見圖7(a);利用本文求解得到的地面視差方程將屬于地面的區域保留,結果見圖6(b),基本濾除了非地面的部分;利用霍夫變換檢測出路面上的結構化特征線條,檢測結果見圖6(c).

圖6 道路結構化特征檢測
檢測到道路結構特征線條后,對前后兩幀線條上的特征點進行描述子計算和匹配,得到用于位姿計算的特征點對,用于位姿求解.本文采取RANSAC-PnP[26]方法中的3D-2D模型求解相機位姿.該求解模型需要輸入控制點,即匹配點對的3D世界坐標和待求幀該點的2D像素坐標.該特征點在世界坐標系中的坐標求解過程如下.

(2)
式中:fx,fy,cx,xy為相機內參;(u,v)為圖像坐標;(x,y,z)為相機坐標系坐標,其中z為該點深度值.根據本文中對地面視差的求解結果,通過其映射關系可以得到地面上的像素點較為準確的視差值ddisp,進而通過下式求出該點深度值
(3)
2)相機坐標系-世界坐標系.相機坐標系到世界坐標系的轉換關系為
(4)

基于上述公式,根據特征點的像素坐標及深度值求出其相機坐標系坐標,然后再根據前一幀的相機位姿計算得到特征點的3D世界坐標,結合這些特征點在當前幀上的2D像素坐標,就可以利用PnP方法求解出當前幀的位姿.



c)得到這些點群的世界坐標后,結合本文的語義分割結果,得到包含語義信息的點群.對每一個關鍵幀進行上述操作,建立稠密語義點云地圖.
4.1.1 數據集
1) 針對改進的語義分割網絡進行訓練,訓練的框架基于TensorFlow軟件平臺.選擇Cityscapes[27]數據集作為語義分割網絡的研究對象.
2) 數據集進入神經網絡之前需進行預處理.首先,為了減小訓練時長和降低計算機內存消耗,將圖像尺寸轉化為256×512;其次,本文使用pixel-mean方法取均值,使得神經網絡在不會產生梯度過大的基礎上節省反復試驗最佳學習率過程的時間.
3)由于數據集的圖片數量較小,為防止網絡訓練過程中過擬合現象的發生,對圖片進行數據增強.主要操作為對圖片進行一定的旋轉、平移、縮放、鏡像,這種樣本的增加可以提高網絡訓練結果的泛化性.
4.1.2 測試結果及分析
在Cityscapes數據集上,將本文設計的神經網絡與使用同樣基礎網絡的PSPNet進行比較.訓練網絡所用的計算機軟、硬件配置及深度學習框架見表2.

表2 訓練軟、硬件條件
根據硬件的計算能力,將圖片輸入的大小設為512×1 024,bach_size的大小設為3,當損失值穩定收斂后停止訓練,共計16萬次,得到表3的結果.可知,本文所設計的網絡結構在運行時間基本相同的條件下,精度上相較于PSPNet有明顯的提高,證明了語義分割網絡改進的有效性.
圖7(b)、(c)分別為表中兩個網絡的語義分割結果.可以看出,圖(c)與圖(b)相比,分割的噪聲更少,道路與車輛邊界的區域分割更加準確.所以,本文采用的改進的金字塔模塊能夠更好地提取圖像上下文的信息,實現更加準確的圖像像素級語義分割.

表3 網絡性能定量比較

圖7 基于RGB圖像的分割效果對比
1)數據集.本文選取Kitti_odometry數據集[28]作為位姿計算模塊的數據集.該數據集包含22個不同交通場景的雙目圖像數據,配套提供了11個帶有地面真實軌跡,便于SLAM結果的評估.本文所設計的SLAM方法需要使用到圖像的語義信息,所以在輸入SLAM系統之前需要對圖像進行語義分割.
2)算法結果比較.如圖8所示,在該場景下,相機視野左側存在運動車輛,正以與相機所在車輛近乎相對靜止的速度行進.在特征點檢測與匹配的過程中,特征點法SLAM特征點檢測以及匹配過程會將其列為特征點并參與匹配,匹配結果見圖8.

圖8 未去除運動物體特征點的匹配結果
經過計算,未去除動態特征點的匹配得出的位姿結果中,圖8兩幀之間在車輛前進方向上的相對位移為0.294 8 m,但其真實位移值為2.14 m,可見動態特征點參與匹配會使相機位姿計算的準確率降低.并且在此類場景中,若去除屬于車輛的特征點和過遠處的特征點,則用于計算位姿的特征點數量是不足的.
本實驗節選了4段包含動態物體且有效近景特征不足的連續幀場景(見圖9),分別利用本文提出的算法和純特征點匹配求解相機位姿,比較結果見表4.從表中可知,分別從誤差最大值、平均值、中值、最小值和均方根誤差值分析,在場景中存在運動物體并且其他特征點質量不滿足要求的情況下,本文提出的結合道路結構化特征的位姿計算方法具有更高的精度.此外,表4中還給出了2種算法的單幀平均運行時間.由于本文增加了道路結構化特征點檢測與匹配的過程,算法的平均耗時約為未增加該過程算法的1.5~1.7倍.

圖9 包含運動物體的場景

表4 絕對軌跡誤差結果比較
場景整體的地圖見圖10.其中,圖10(a)為原ORB-SLAM構建出的整體場景稀疏點云地圖,可見雖然該地圖包含了環境的整體架構信息,但是缺少很多局部場景細節.而本文加入語義重建模塊后,構建出的3D稠密語義點云地圖如圖10(b)所示,實現了場景細節的補充.圖10(c)是其中某一場景的稠密語義地圖局部展示.場景中包含的車輛、樹木、道路、建筑物都以點云的形式構建在地圖中,點的顏色代表了它們所屬的目標類別.可見,該地圖在包含環境幾何信息的基礎上,還加入了局部場景的細節與環境的語義信息.本文構建的3D稠密語義地圖模擬了駕駛員駕駛車輛時對環境信息的感知,可以為智能駕駛提供更豐富的環境信息.

圖10 3D稠密語義點云地圖
本文設計了一套在動態環境下對SLAM算法位姿計算模塊的改進方法.提出了一種帶有級聯金字塔空洞卷積池化模塊的語義分割網絡,提取了圖像中更加豐富的上下文信息,提高了交通場景下像素級語義分割的精度.利用語義分割的結果,本文在SLAM特征點檢測過程中剔除了屬于包含動態可能性類別的物體,防止運動物體使相機位姿計算產生誤差.同時,針對剔除掉動態物體特征點后有效近景特征不足的場景,提出了一種通過檢測道路結構化特征并進行幀間匹配進行相機位姿計算的方法.經過實驗證明,該方法能夠有效提高動態場景下相機位姿計算的準確性.最后,將SLAM位姿計算結果與語義分割結果進行融合,建立了包含語義信息的稠密點云地圖,為自動駕駛任務提供更加豐富的環境信息,對實現更加復雜的駕駛任務具有重要意義.