徐 鵬,田祥瑞,2,周佳蒙,吳旭琴,2
(1. 南京航空航天大學(xué),江蘇 南京 210016;2. 通信網(wǎng)信息傳輸與分發(fā)技術(shù)重點實驗室,河北 石家莊 050081)
同步定位與地圖構(gòu)建(Simultaneous Localization and Mapping,SLAM)是指移動機器人在未知環(huán)境中,依靠自身的傳感器獲得感知信息,遞增的創(chuàng)建一個與周圍環(huán)境相一致的地圖,同時利用創(chuàng)建的地圖實現(xiàn)自主定位[1-2]。SLAM的實現(xiàn)途徑根據(jù)使用的傳感器,主要分為聲吶SLAM、激光SLAM和視覺SLAM(VSLAM),相較激光雷達,相機具有信息量大、靈活性高、成本低等優(yōu)點[3]。視覺SLAM一般由前端(視覺里程計)、后端優(yōu)化、回環(huán)檢測和建圖四個模塊組成[4],如圖1所示。視覺圖像中點特征的提取與匹配是實現(xiàn)SLAM的基礎(chǔ),傳統(tǒng)的角點提取方法包括Harris[5]、FAST[6]、Shi-Tomasi[7]等,但Harris檢測出的角點會出現(xiàn)信息丟失、位置偏移、聚簇等情況,F(xiàn)AST算法檢測得到的角點數(shù)量多且不確定、存在尺度問題、不具有方向信息。為了提高算法的魯棒性,特征點提取算法在角點檢測算法的基礎(chǔ)上又進行了改進,如SIFT[8],SURF[9],ORB[10]等。特征點由關(guān)鍵點和描述子組成,關(guān)鍵點是指特征點在圖像中的位置,描述子則描述了關(guān)鍵點周圍的信息,如關(guān)鍵點周圍像素值在多個方向上的梯度信息。
圖1 視覺SLAM框架圖
傳統(tǒng)特征點提取方法較適應(yīng)于光照變化小、靜態(tài)、剛體且沒有人為干擾的場景[11],主要原因之一是人工設(shè)計的稀疏圖像特征有很多的局限性,難以最優(yōu)地表達圖像深層次信息。因此,研究者提出了用深度學(xué)習(xí)提高SLAM算法魯棒性的方法[12],深度學(xué)習(xí)模擬人腦的邏輯分析,將淺層的特征信息組合成更抽象的高層特征,與傳統(tǒng)圖像算法相比,可以獲取更深層次的圖像信息[13]。深度學(xué)習(xí)與傳統(tǒng)SLAM融合的一般方式是采用神經(jīng)網(wǎng)絡(luò)代替?zhèn)鹘y(tǒng)SLAM中的一個或多個模塊,如Yifan Xia等人將深度學(xué)習(xí)模型PCANet(principal Component Analysis Net)提取的圖像特征用于回環(huán)檢測[14],何元烈等人結(jié)合批規(guī)范化、深度殘差和級聯(lián)修正線性單元模塊設(shè)計了一種快速、精簡的卷積神經(jīng)網(wǎng)絡(luò)模型(Fast and Lightweight Convolutional Neural Network,F(xiàn)LCNN)[15],Yann LeCun等人利用卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)小圖像塊之間的相似性,解決了傳統(tǒng)方法中雙目立體匹配運算速度慢、匹配精度低的問題[16],Ronald Clark和Sen Wang等人提出了一種基于端到端訓(xùn)練的VINeT網(wǎng)絡(luò)模型[17]。在特征提取方面Daniel DeTone、Tomasz Malisiewicz等人做出了卓越的貢獻,2016年他們設(shè)計了卷積神經(jīng)網(wǎng)絡(luò)HomographyNet來直接估計圖像之間的單應(yīng)性,與基于ORB特征點的傳統(tǒng)單應(yīng)性估計算法進行對比,證明了深度學(xué)習(xí)方法的靈活性和適用場景的廣泛性[18]。2018年,Daniel等在MagicPoint[19]的基礎(chǔ)上提出了SuperPoint,SuperPoint是一個在編碼器部分共享參數(shù),在解碼器部分分別計算關(guān)鍵點和描述子的深度學(xué)習(xí)算法,且更適應(yīng)光照變化條件下的圖像匹配[20]。
本文首先分析了基于SuperPoint網(wǎng)絡(luò)的深度學(xué)習(xí)特征點提取算法,實現(xiàn)了SuperPoint網(wǎng)絡(luò)的自監(jiān)督訓(xùn)練,然后設(shè)計了深度學(xué)習(xí)特征點與傳統(tǒng)視覺SLAM相融合的方法,最后進行了實驗對比分析。
SuperPoint是基于自監(jiān)督訓(xùn)練的特征點檢測和描述子提取方法,SuperPoint由一個編碼器和兩個解碼器組成,如圖2所示。
SuperPoint在編碼器中采用了類似于VGG的結(jié)構(gòu),實現(xiàn)了關(guān)鍵點和描述子的參數(shù)共享,從而減少了計算量,這與傳統(tǒng)特征點首先檢測關(guān)鍵點然后計算描述子的方式不同。檢測關(guān)鍵點的解碼器輸入為W/8×H/8×128的張量信息,一個像素點對應(yīng)原始圖像中不重疊的8×8區(qū)域大小的像素信息,通過Softmax函數(shù)將關(guān)鍵點提取問題轉(zhuǎn)換為分類問題,判斷每個8×8像素大小的區(qū)域中是否有關(guān)鍵點,并找到關(guān)鍵點的位置。然后將圖像大小由W/8×H/8變?yōu)閃×H,同時通道數(shù)從64變成1,即可在輸入圖像中找到對應(yīng)的關(guān)鍵點。計算描述子的解碼器輸入為W/8×H/8×128,經(jīng)過兩個256通道的卷積層,然后用雙三次差值把W/8×H/8×256變成W×H×256,最后通過L2范數(shù)歸一化即可得到描述子。
圖2 SuperPoint網(wǎng)絡(luò)結(jié)構(gòu)圖
圖3 SuperPoint的訓(xùn)練過程
由于難以在圖像上準(zhǔn)確地標(biāo)注出所有的特征點,因此SuperPoint算法使用了自監(jiān)督的方式訓(xùn)練神經(jīng)網(wǎng)絡(luò)。訓(xùn)練過程如圖3所示。首先,用合成數(shù)據(jù)集Synthetic Shapes訓(xùn)練MagicPoint,Synthetic Shapes是由代碼合成的具有角點的簡單幾何形狀,如直線、多邊形、立方體,星形等。然后用訓(xùn)練好的MagicPoint去標(biāo)注COCO數(shù)據(jù)集,從而得到一個標(biāo)注好關(guān)鍵點的數(shù)據(jù)集訓(xùn)練SuperPoint。訓(xùn)練過程采用了Homographic Adaptation方法,該方法可以提高算法在實際圖像上的泛化能力。
視覺里程計和回環(huán)檢測都涉及到圖像信息的處理,可以與深度學(xué)習(xí)相融合,從而提高算法的魯棒性和準(zhǔn)確性。SuperPoint可以同時提取到關(guān)鍵點并生成描述子,將關(guān)鍵點應(yīng)用于光流法視覺里程計,將描述子構(gòu)建詞袋模型后應(yīng)用于回環(huán)檢測,完成基于深度學(xué)習(xí)特性點的SLAM。
融合深度學(xué)習(xí)特征點的視覺里程計算法流程如圖4所示,首先對圖像做初處理,使其能夠輸入到SuperPoint網(wǎng)絡(luò)得到特征點信息。由于描述子是256維的float32型的浮點數(shù),用描述子進行特征點匹配時計算量大,所以提取出特征點概率最高的前1000個關(guān)鍵點,采用金字塔LK光流法[21]跟蹤灰度圖上的關(guān)鍵點。為減少誤匹配,在光流法中加入了RANSAC算法,用匹配的關(guān)鍵點解算本質(zhì)矩陣E,進而求解相機的位姿,若求解成功,則將位姿加入軌跡圖,否則跟蹤失敗。圖中紅色框為基于深度學(xué)習(xí)的特征點提取部分,該部分在后文中以接口程序代替。
圖4 視覺里程計流程圖
SuperPoint與傳統(tǒng)算法輸出的描述子相似,也可用于構(gòu)建詞袋模型。詞袋模型通過確定一幅圖像中出現(xiàn)了哪些在字典中定義的單詞來描述整幅圖像,從而將一幅圖像中的所有描述子轉(zhuǎn)化成一個向量,避免了直接比較描述子[20],且向量表示的是特征的有無,與物體的空間位置和排列順序無關(guān),可以增強算法魯棒性。
基于深度學(xué)習(xí)描述子的詞袋模型構(gòu)建方法如圖5所示,K為聚類數(shù)量,L為詞袋模型層數(shù)。將特征點提取過程中得到的描述子放在一個列表中進行聚類,構(gòu)建可以容納KL個單詞的詞袋模型。
圖5 詞袋模型的構(gòu)建方法
詞袋模型構(gòu)建以后,將測試圖片的所有描述子與詞袋模型中的節(jié)點進行對比,從而把每張圖片中的描述子信息轉(zhuǎn)換成對應(yīng)的向量,即圖像M可以得到對應(yīng)的向量m,圖像N可以得到對應(yīng)的向量n。然后計算兩個向量之間的余弦相似度,如式(1),若得到的相似度大于設(shè)定的閾值,則判斷為回環(huán),否則認定沒有形成回環(huán)。
(1)
視覺里程計在估計相機的位姿時,只考慮相鄰圖像之間的關(guān)聯(lián),因此會導(dǎo)致累積誤差,SLAM引入回環(huán)檢測模塊能提供時間間隔較遠的一些約束,可以提高SLAM系統(tǒng)在長時間下定位和建圖的準(zhǔn)確性。SuperPoint在計算特征點時同時得到關(guān)鍵點和描述子,將其分別應(yīng)用于視覺里程計和回環(huán)檢測,算法流程如圖6所示,通過接口程序完成基于SuperPoint的特征點提取,將關(guān)鍵點輸出給金字塔LK光流法完成位姿求解,將描述子輸出給詞袋模型轉(zhuǎn)化為向量,根據(jù)余弦相似度完成回環(huán)檢測,若是回環(huán),則將位姿的數(shù)值設(shè)定為初次到達該位置時的位姿,并將位姿加入軌跡圖,從而消除視覺里程計的累計誤差。
圖6 基于光流法的SLAM系統(tǒng)設(shè)計
為了驗證所提方法的有效性,在公開數(shù)據(jù)集和光照變化數(shù)據(jù)上進行了對比分析。實驗采用的電腦配置為Inter Core i7-8700CPU,NVIDIA GeForce GT 1080,系統(tǒng)版本Ubuntu16.04,深度學(xué)習(xí)框架采用TensorFlow1.6。實驗比較了基于FAST、Harris、Shi-Tomasi和SuperPoint的視覺里程計算法在KITTI數(shù)據(jù)集中的性能,其中尺度信息通過融合KITTI數(shù)據(jù)集的真實位姿信息得到。在開源數(shù)據(jù)集New College和City Centre中比較了采用ORB、SIFT和SuperPoint的回環(huán)檢測算法。為進一步比較所提算法在光照變化情況下的性能,將其與ORB_SLAM2做了對比試驗。
FAST算法設(shè)置的閾值為50,窗口大小為21×21,采用的類型是FAST_FEATURE_DETECTOR_TYPE_9_16,Harris算法與Shi-Tomasi算法設(shè)置的角點數(shù)量為500,可接受的最小特征值為0.01,角點之間的最小距離為10,窗口大小為21×21,計算導(dǎo)數(shù)自相關(guān)矩陣時的鄰域范圍是4,SuperPoint的窗口大小是11×11。選用KITTI數(shù)據(jù)集中包含真值的圖像序列00至10共11組數(shù)據(jù)進行對比試驗。
圖7為其中兩組數(shù)據(jù)的軌跡示意圖,(a)和(b)分別是01序列和05序列在xz平面內(nèi)的軌跡圖,從軌跡圖上可以直觀地發(fā)現(xiàn)采用SuperPoint的視覺里程計優(yōu)于采用傳統(tǒng)方法的視覺里程計。
采用絕對軌跡誤差(absolute trajectory error,ATE)進行定量評估,計算如式(2)所示,在用時間戳對齊估計位姿和真實位姿之后,絕對軌跡誤差直接計算在時間戳i上估計的位姿Pest,i和真實的位姿Pref,i之間的差值,然后用式(3)計算絕對軌跡誤差[21]。
圖7 不同視覺里程計算法得到的軌跡圖
(2)
(3)
表1展示了KITTI數(shù)據(jù)集中圖像序列00至10數(shù)據(jù)集采用不同算法得到的絕對軌跡誤差。從表中可以看出,SuperPoint-VO的平均絕對軌跡誤差比FAST-VO減少了27.5%,比Harris-VO減少了32.8%、比Shi-Tomasi-VO減少了24.0%。
表1 視覺里程計在KITTI數(shù)據(jù)集上的絕對軌跡誤差
在New College和 City Centre數(shù)據(jù)集進行回環(huán)檢測實驗,該數(shù)據(jù)集由牛津大學(xué)移動機器人團隊構(gòu)建,分別有1073對圖像和1273對圖像,每對圖像由左右兩側(cè)的相機分別采集,實驗中將數(shù)據(jù)集對應(yīng)分為奇數(shù)組和偶數(shù)組。分別采用ORB、SIFT、SuperPoint算法計算得到相似矩陣,并采用熱圖形式表示,顏色越淺,圖像的相似度就越高。如圖8所示。從圖中可以直觀地看出,采用SuperPoint的回環(huán)檢測能在New College和 City Centre中有真實回環(huán)的地方檢測出較高的圖像相似度,且與沒有形成回環(huán)的圖像相似度相差較大。
圖8 各算法結(jié)果對比圖
為進一步評估各方法,在City Centre數(shù)據(jù)集上設(shè)計了對比實驗,圖9展示了各個算法在不同閾值下的PR值,當(dāng)召回率較小時,每個算法的準(zhǔn)確率都為1,且隨著召回率的增大而減小。
圖9 各算法在City Centre上的PR圖
選取召回率為0.5時對比各方法的準(zhǔn)確率,如表2所示,此時采用SuperPoint的回環(huán)檢測準(zhǔn)確率比采用SIFT、ORB的回環(huán)檢測提高了23%、41%。
表2 召回率相同時各算法對應(yīng)準(zhǔn)確率
為驗證融合視覺里程計和回環(huán)檢測的SLAM系統(tǒng)的效果,選取KITTI數(shù)據(jù)04和06序列進行實驗。表3對比了選取04序列數(shù)據(jù)集在有無回環(huán)檢測時的絕對軌跡誤差、相對位移誤差和相對旋轉(zhuǎn)誤差。通過比較可以看出,加入回環(huán)檢測之后,絕對軌跡誤差減少了5.1%,相對旋轉(zhuǎn)誤差減少了1.0%,相對位移誤差減少了12.8%。
表3 有無回環(huán)檢測的比較結(jié)果
圖10分別展示了06序列數(shù)據(jù)集在有無回環(huán)情況下的軌跡圖,圖中灰色虛線代表真實軌跡,從真實軌跡可以看出在右上角形成了回環(huán)(紅色框內(nèi)),加入回環(huán)檢測的視覺里程計的軌跡更接近真實軌跡。
圖10 06序列數(shù)據(jù)集的SLAM軌跡圖
為了比較在光照變化條件下的算法性能,本文搭建了基于大疆M210 RTK V2的物理實驗平臺,相機采用大疆Z30,幀頻為30FPS。在白天和黑夜不同光照條件下分別使用大疆航點飛行模式設(shè)定飛行任務(wù),采集圖像數(shù)據(jù),實驗平臺、場景如圖11所示。
圖11 實驗平臺與實驗場景
實驗不考慮真實尺度,結(jié)果如圖12所示,在白天強光照下,ORB_SLAM2和SuperPoint_SLAM都能得到預(yù)期實驗結(jié)果,在黑夜弱光下,ORB_SLAM已無法提取到足夠特征點完成初始化,而SuperPoint_SLAM依然可以正常完成軌跡解算。由此表明,基于SuperPoint的SLAM相比于傳統(tǒng)ORB_SLAM2更適應(yīng)光照的變化。
圖12 光照變化下對比實驗
本文分析了基于深度學(xué)習(xí)的特征點提取算法,將其與視覺里程計融合,采用KITTI數(shù)據(jù)集,其絕對軌跡誤差與傳統(tǒng)方法FAST-VO、Harris-VO、Shi-Tomasi-VO相比分別減少了27.5%、32.8%和24.0%。在數(shù)據(jù)集New College和City Centre上,采用基于深度學(xué)習(xí)特征點的回環(huán)檢測算法準(zhǔn)確率比基于SIFT、ORB的回環(huán)檢測提高了23%、41%。將基于深度學(xué)習(xí)特征點的回環(huán)檢測和視覺里程計相融合,加入回環(huán)檢測后的SLAM絕對軌跡誤差減少了5.1%、相對旋轉(zhuǎn)誤差減少了1.0%,相對位移誤差減少了12.8%。在光照變化的情況下SuperPoint_SLAM優(yōu)于ORB_SLAM2。深度學(xué)習(xí)特征點能夠表達更深層次的圖像信息,融合深度學(xué)習(xí)特征點的SLAM具有更高的精度與魯棒性。