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