熊 煒,金靖熠,王 娟,劉 敏,曾春艷
(1.湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北 武漢 430068; 2.南卡羅來納大學(xué)計算機科學(xué)與工程系,哥倫比亞 29201)
即時定位和建圖SLAM(Simultaneous Localization And Mapping)是指搭載特定傳感器的主體,在沒有環(huán)境先驗信息的情況下,根據(jù)運動引起的圖像變化,估計相機的運動以及周邊地圖[1],是解決機器人、無人駕駛、增強現(xiàn)實、虛擬現(xiàn)實導(dǎo)航定位的重要技術(shù)[2]。SLAM技術(shù)起源于國外,近年來也逐漸成為國內(nèi)產(chǎn)業(yè)和學(xué)術(shù)研究的熱點。視覺里程計VO(Visual Odometry)是SLAM的重要組成部分。
從前端來看,VO可分為2大類:特征點法[3]、直接法[4]或光流法[5]。特征點法的VO根據(jù)已提取的特征點使用多視圖幾何方法求解相機的位姿,而直接法或光流法基于光度不變假設(shè)來直接計算相機位姿。本文的研究屬于特征點法的范疇。在計算機視覺領(lǐng)域,SIFT(Scale Invariant Feature Transform)方法[6]提取的特征點展現(xiàn)了出眾的效果,SURF(Speeded Up Robust Features)方法[7,8]相較于SIFT方法在速度上具有明顯優(yōu)勢。由于SLAM對實時性要求較高,SIFT、SURF 2種方法因效率問題都無法勝任前端VO。FAST(Features from Accelerated Segment Test)方法[9]是一種速度很快的關(guān)鍵點提取方法,但它不具有描述子,因此匹配效果較差。ORB(Oriented FAST and Rotated BRIEF)方法[10]在FAST角點基礎(chǔ)上增加了尺度和旋轉(zhuǎn)的描述,增強了性能與速度的均衡性,是特征點法SLAM常用的方法。
SLAM作為2D、3D視覺領(lǐng)域結(jié)合的熱點問題,通常用傳統(tǒng)的圖像處理和機器學(xué)習(xí)去解決,因空間幾何難度和實時性的限制,這些方法很難像解決純2D視覺問題那樣完全被深度學(xué)習(xí)所替代。圖像特征點的提取屬于2D視覺的范疇,而深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)在圖像特征提取方面具有卓越的優(yōu)勢?;谏疃葘W(xué)習(xí)的特征點與傳統(tǒng)特征點相似,包含關(guān)鍵點和描述子。LIFT(Learned Invariant Feature Transform)[11]利用深度學(xué)習(xí)網(wǎng)絡(luò)框架實現(xiàn)了特征點的檢測、方向估計和特征描述,相比于SIFT提取的特征點更加稠密。MagicPoint[12]使用雙卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),1個用來提取圖像角點,另1個用來對2幅圖像的角點進(jìn)行匹配。
為了彌補傳統(tǒng)特征點法對光照和視點變化比較敏感的缺陷,本文在深度學(xué)習(xí)特征點SuperPoint方法[13]和現(xiàn)有VO方法的基礎(chǔ)之上,提出了基于深度學(xué)習(xí)特征點SuperPoint方法的VO,簡稱DSP-VO(Deep Learning SuperPoint Visual Odometry)。本文使用亮度非線性逐點調(diào)整方法增強了特征點檢測器對光照變化的魯棒性,對公開的單目數(shù)據(jù)集實現(xiàn)了角點的提取和描述子的計算,使用NMS(Non Maximum Suppression)方法[14]剔除冗余角點,基于最鄰近方法[15]改進(jìn)的雙向最鄰近方法進(jìn)行特征點匹配,通過匹配的特征點對VO進(jìn)行初始化,利用基礎(chǔ)矩陣或單應(yīng)矩陣恢復(fù)相機位姿,建立最小化重投影誤差[16,17]方程優(yōu)化相機位姿及空間點參數(shù)。
VO作為SLAM的前端,求解出較好的運動估計結(jié)果,為后端優(yōu)化提供良好的基礎(chǔ)。在傳統(tǒng)的VO中,對特征點的提取是先進(jìn)行角點檢測,然后計算描述子。本文提出的DSP-VO,其系統(tǒng)框架如圖1所示。主要操作流程如下所示:
(1)DSP模型訓(xùn)練。將特征點的提取從VO中單獨分離出來,使用基于深度學(xué)習(xí)的方法訓(xùn)練得到1個模型——DSP檢測器。使用DSP檢測器可以同時得到圖像的角點和對應(yīng)的描述子。
(2)特征點檢測。使用基于(1)得到的DSP檢測器,對數(shù)據(jù)集序列進(jìn)行特征點的檢測,即得到圖像的角點信息與對應(yīng)的描述子信息。針對DSP檢測器的特點,本文使用NMS方法剔除冗余角點。
(3)特征匹配。使用基于最鄰近方法改進(jìn)的雙向最鄰近方法,獲得更加精準(zhǔn)的特征點匹配結(jié)果。
(4)位姿估計。根據(jù)特征匹配結(jié)果,利用基礎(chǔ)矩陣或單應(yīng)矩陣恢復(fù)相機位姿。前2幀需要通過三角化測量對軌跡、3D空間點的尺度進(jìn)行初始化。
(5)局部優(yōu)化。若位姿估計成功,利用特征點對應(yīng)的3D空間點,構(gòu)建最小化重投影誤差函數(shù),求解得到優(yōu)化的位姿變換;若位姿估計失敗,則結(jié)束VO。
Figure 1 System framework of DSP-VO圖1 DSP-VO系統(tǒng)框架
DSP是一種利用自監(jiān)督學(xué)習(xí)方式對角點進(jìn)行提取并生成對應(yīng)描述子的網(wǎng)絡(luò)架構(gòu)[13]。該架構(gòu)流程如圖2所示,主要分為3個階段:(1)使用OpenCV圖像處理庫生成數(shù)量龐大的包含簡單幾何形狀的圖像,圖像中加入了適量的高斯噪聲,并記錄相應(yīng)的角點標(biāo)注信息(標(biāo)簽);使用VGG-16網(wǎng)絡(luò)[18]對這些人工生成標(biāo)注的圖像進(jìn)行訓(xùn)練得到1個基礎(chǔ)的角點檢測器。(2)結(jié)合Homegraphic Adaptation方法,使用(1)中得到的角點檢測器對大量的自然場景圖像進(jìn)行角點提取,即通過自監(jiān)督的方式得到了自然場景圖像的角點標(biāo)注信息。(3)使用Warp方法,對(2)中所得的帶有標(biāo)注信息的圖像進(jìn)行變形操作,生成角點標(biāo)注圖像對;使用VGG-16網(wǎng)絡(luò)對角點標(biāo)注圖像對進(jìn)行再訓(xùn)練,通過最小化角點距離誤差函數(shù)和圖像對匹配誤差函數(shù),最終得到可以同時提取角點和描述子的模型。
Figure 2 Training process of DSP圖2 DSP訓(xùn)練流程
針對VO對光照變化魯棒性較差的特征,在原始DSP訓(xùn)練流程第(3)步的聯(lián)合訓(xùn)練過程中,對仿射變換的圖像進(jìn)一步實施光度變換。本文使用亮度非線性逐點調(diào)整方法[19,20]對圖像亮度進(jìn)行Gamma調(diào)整。圖像亮度Gamma調(diào)整如式(1)所示。
I′(x,y)=(I(x,y)/255)γ·255,0.5≤γ≤2
(1)
其中,I(x,y)和I′(x,y)分別是像素(x,y)的灰度值和校正值,γ為調(diào)整參數(shù),取值為[0.5,2],當(dāng)γ大于1時可增加圖像亮度,反之則降低圖像亮度。
γ值的變化較好地模擬了相機捕獲自然場景圖像時圖像細(xì)節(jié)的放大或抑制。將受到不同光照的圖像對放入到DSP框架中訓(xùn)練,有利于網(wǎng)絡(luò)學(xué)習(xí)到由光照引起的圖像細(xì)節(jié)變化,從而使得最終檢測到的特征點置信度更高,描述子的性能更優(yōu)。
在SLAM領(lǐng)域,傳統(tǒng)的特征點包含點的像素坐標(biāo)和描述子(描述子為特征點的特征向量)。DSP特征點和傳統(tǒng)的特征點不同,其角點包含了置信度信息。DSP檢測器對單幅圖像進(jìn)行特征點提取,得到特征點集P,對于某個特征點(x,d)∈P,其中x為角點,d為對應(yīng)的描述子,其形式如式(2)和式(3)所示。
(2)
d=(d0,d1,…,d255)T,
di∈{-1,1},i=0,1,…,255
(3)
其中,x為一個列向量,表示單個角點;u,v為角點在圖像中的像素坐標(biāo),第3維c為角點像素坐標(biāo)的置信度。d為描述子,d0~d255為描述子每個維度的值。
使用DSP檢測器對圖像進(jìn)行角點提取時,若圖像的角點和紋理比較豐富,檢測的特征點會出現(xiàn)局部擁擠的現(xiàn)象,需經(jīng)過必要的角點剔除和篩選,否則會形成角點冗余,且造成較多的誤匹配。DSP特征點不僅包含角點像素坐標(biāo),還包含角點對應(yīng)的置信度,根據(jù)該特點,本文使用NMS方法對角點進(jìn)行篩選。(1)首先創(chuàng)建1個像素網(wǎng)格矩陣G,其維度為h×w,h和w分別等于被檢測圖像的像素高度和寬度;(2)提取角點x的像素坐標(biāo)(u,v)為索引值,將G中對應(yīng)元素賦值為1,其余賦值為0;(3)創(chuàng)建1個形狀為α×α的滑動窗口W,其中α為抑制距離,以α為橫向和縱向步長對G進(jìn)行遍歷,并將遍歷重疊部分的角點置信度按照維度索引賦值給A,即滑動窗口內(nèi)的角點置信度矩陣;(4)以式(4)為判定標(biāo)準(zhǔn)對角點進(jìn)行抑制,其中Px表示特征點的角點集合;(5)經(jīng)過遍歷,G中元素等于-1的維度索引,即為最終保留的特征點的像素坐標(biāo)。
(4)
其中,(u,v)∈W,(u,v,c)∈Px。
(5)
(6)
arg mindm,n*,dm,n*<δ,m=1,2,…,M}
(7)
Ci?i+1=Ai→i+1∩Bi+1→i
(8)
(9)
(10)
其中,Ti,i+1為第i幀到第i+1幀的位姿變換。
(11)
選擇計算基礎(chǔ)矩陣F和單應(yīng)矩陣H2種方法得到的最小化重投影誤差中的較小者,獲得最優(yōu)的相機位姿參數(shù)和特征點對應(yīng)的3D空間坐標(biāo)。
本文的實驗內(nèi)容主要圍繞2部分展開:DSP檢測器性能及提取特征點的匹配效果,視覺里程計的結(jié)果、對比及誤差分析。為了保證實驗結(jié)果的有效性和實驗方法對比的一致性,實驗在同一硬件及軟件環(huán)境下完成。實驗所使用的設(shè)備內(nèi)存為16 GB,CPU為Intel CORE i7-8750H,GPU為NVIDIA GTX1080,顯存為8 GB,運行系統(tǒng)為Ubuntu16.04。使用Pytorch深度學(xué)習(xí)框架對DSP檢測器進(jìn)行訓(xùn)練。對于2種視覺里程計方法的對比,均使用CUDA庫進(jìn)行加速。
本文使用Hpatches數(shù)據(jù)集[21]作為特征點提取的驗證數(shù)據(jù)集,此數(shù)據(jù)集包含了相同場景下光照、視點發(fā)生變化的圖像,以用于檢測不同特征提取方法對光度、視點變化的魯棒性。在視覺里程計中,使用The KITTI Vision Benchmark Suite提供的Visual Odometry數(shù)據(jù)集[3]。為了使實驗結(jié)果可對比和評估,本文選取其中提供真實軌跡的00~10共11個序列的Sequence作為驗證數(shù)據(jù)集。
Figure 3 Comparison of feature points matching圖3 特征點匹配對比
本文利用訓(xùn)練好的DSP檢測器對Hpatches數(shù)據(jù)集圖像的特征點進(jìn)行提取與匹配,同時利用OpenCV庫自帶函數(shù)檢測并匹配ORB特征點、SIFT特征點,進(jìn)而對3種方法進(jìn)行對比。實驗結(jié)果如圖3所示,本文DSP檢測器提取的特征點更加均勻、清晰。在相同場景下,當(dāng)光照發(fā)生變化時,ORB方法和SIFT方法的提取和匹配結(jié)果發(fā)生了明顯的變化;而DSP檢測器的提取與匹配結(jié)果表現(xiàn)出更強的魯棒性。當(dāng)視點發(fā)生變化時,ORB方法只提取到圖像中部分角點,而且有較多的誤匹配;SIFT方法傾向于提取更豐富的角點,但匹配率較低,且復(fù)雜度較高,這意味著更大的時間開銷,不利于視覺里程計的實時性與工程化;DSP特征點不僅在分布范圍上接近SIFT,與之相比有更高的匹配率,在匹配準(zhǔn)確率方面也明顯優(yōu)于ORB方法。在DSP檢測器的訓(xùn)練過程中,對訓(xùn)練圖像進(jìn)行Gamma調(diào)整,相對于無Gamma調(diào)整的情況,在視點變化的實驗中檢測結(jié)果無明顯差別,但在光度變化的實驗中,檢測特征點的數(shù)量更多,分布更加均衡。
本文采用Visual Odometry公路數(shù)據(jù)集進(jìn)行實驗驗證,不限定圖像序列的讀取幀率,以記錄視覺里程計的實時幀率。如圖4所示,將跟蹤結(jié)果與真實軌跡數(shù)據(jù)進(jìn)行同步對比,并實時進(jìn)行誤差計算(如圖4a所示)。為了驗證DSP特征點法視覺里程計的性能表現(xiàn),使用傳統(tǒng)ORB方法作為實驗對比方法(圖4b為2種方法的軌跡與真實值的對比)。
Figure 4 Visual odometry visualization圖4 視覺里程計可視化
為了同時檢測DSP特征點法視覺里程計在視點、光照變化的圖像上的性能表現(xiàn),選擇了屬于室外場景的Visual Odometry公路數(shù)據(jù)集。本文采用了均方根誤差RMSE(Root Mean Square Error)來評估方法的性能。絕對軌跡的均方根誤差RMSE(s)定義如式(12)所示:
(12)
在Sequence 08序列上運行,對于每一幀都計算絕對軌跡均方根誤差。實驗還使用了基于ORB特征點法的視覺里程計(ORB-VO)進(jìn)行對比。如圖5所示,從測試結(jié)果可以看出,隨著追蹤幀數(shù)的增加,本文方法的絕對軌跡均方根誤差趨于穩(wěn)定,而ORB-VO的絕對軌跡均方根誤差總體趨向于不斷增長。
Figure 5 Real-time absolute trajectory error of sequence 08圖5 Sequence 08實時絕對軌跡誤差
本實驗不涉及后端優(yōu)化,所以不可避免地會產(chǎn)生追蹤軌跡漂移現(xiàn)象。由于沒有姿態(tài)信息,絕對軌跡均方根誤差無法直觀地體現(xiàn)產(chǎn)生漂移的位置。對此,本文還使用了相對位姿均方根誤差RMSE(T)作為評價標(biāo)準(zhǔn),其定義如式(13)所示:
(13)
位姿可以分解為平移分量和旋轉(zhuǎn)分量,因此將相對位姿誤差分解為相對平移誤差和相對旋轉(zhuǎn)誤差來分別進(jìn)行評價。由于存在軌跡漂移,導(dǎo)致絕對軌跡誤差較大,但由圖6可以看出,在Sequence 08序列上運行,本文DSP-VO的RMSE(T)保持在較低水平,且全程優(yōu)于ORB-VO的。在追蹤過程中,ORB-VO多次出現(xiàn)較大的旋轉(zhuǎn)偏移(如圖6b中圓圈標(biāo)記位置),這表明可能遇到較大的旋轉(zhuǎn)、較小的平移或者較強的光線干擾,而DSP-VO則在這些位置表現(xiàn)出更強的穩(wěn)定性。
Figure 6 Real-time relative pose error of sequence 08圖6 Sequence 08實時相對位姿誤差
實驗一共測試了00~10這11個Sequence,并給出了DSP-VO和傳統(tǒng)方法ORB-VO在幀率、絕對軌跡誤差、相對平移誤差和相對旋轉(zhuǎn)誤差等評價指標(biāo)上的對比。表1所示為偶數(shù)序列的實驗結(jié)果,可以看出,DSP-VO在速度方面低于ORB-VO,但仍然達(dá)到了實時性要求;在其他指標(biāo)對比中,除了02序列的相對位姿均方根誤差,DSP-VO的表現(xiàn)全面優(yōu)于ORB-VO。
本文提出一種基于深度學(xué)習(xí)特征點法的視覺里程計,將深度學(xué)習(xí)特征點方法應(yīng)用到視覺里程計中,通過對輸入DSP網(wǎng)絡(luò)的圖像增加光度變換處理,得到光照魯棒性更強的DSP特征提取模型,采用非極大值抑制方法對DSP特征點進(jìn)行冗余點剔除,采用雙向最鄰近方法對DSP特征點進(jìn)行匹配,結(jié)合位姿追蹤方法建立視覺里程計。實驗結(jié)果表明,在Visual Odometry公路數(shù)據(jù)集的11個Sequence
Table 1 Pose tracking analysis results表1 位姿追蹤分析結(jié)果
序列中,本文的DSP-VO平均運行幀率達(dá)到了19.4 fps,符合實時性要求,對比于傳統(tǒng)ORB-VO,絕對軌跡誤差、相對平移誤差和相對旋轉(zhuǎn)誤差等有明顯提升,表明了深度學(xué)習(xí)特征點用于視覺里程計的可行性與優(yōu)越性。未來的工作主要對本文方法進(jìn)行工程優(yōu)化,提高運行速度;加入后端優(yōu)化,進(jìn)一步減小誤差。