屈 豪,胡小平,陳昶昊,張禮廉
(國防科技大學(xué)智能科學(xué)學(xué)院,長沙 410073)
單目相機因具有配置簡單、成本低廉等特點,在民用精度級別的實時定位與建圖(Simultaneous Localization and Mapping,SLAM)系統(tǒng)中應(yīng)用較為廣泛。針對單目相機開發(fā)的視覺里程計算法按照不同的基礎(chǔ)理論可分為:基于幾何的單目視覺里程計以及基于深度學(xué)習(xí)的單目視覺里程計。
基于幾何的單目視覺里程計一般采用手工設(shè)計的算子識別圖像中的特征點,并按照一定的準(zhǔn)則辨識多幀圖像中的匹配特征點;隨后使用多視圖幾何模型描述時間上相鄰圖像匹配特征點之間的相對運動關(guān)系,同時采用異常值剔除算法排除不符合相機運動模型的特征點,進一步提升視覺里程計的性能。LIBVISO2[1]采用了典型的基于幾何的視覺里程計,使用sobel算子構(gòu)建特征描述子,并將相鄰幀圖像中描述子向量小于一定閾值的特征點視為匹配特征點,使用隨機采樣一致性(Random Sample Consensus,RANSAC)算法排除不符合相機運動模型的外點。為了能加快整體系統(tǒng)的運行效率以及精度,并行跟蹤與映射算法(Parallel Tracking And Mapping,PTAM)[2]和ORB-SLAM[3]采用輕量化算子在多種分辨率的圖像中捕捉特征點。
然而在光線較暗或者存在大面積遮擋的情況下,單目視覺里程計的特征點捕獲算法無法獲得足夠的圖像特征,從而導(dǎo)致算法失敗?,F(xiàn)階段一部分研究人員通過添加多傳感器信息并開發(fā)組合里程計來增強SLAM系統(tǒng)的感知能力,最為常見的是視覺/慣性組合里程計,其中視覺慣性導(dǎo)航系統(tǒng)(Visual-Inertial Navigation System,VINS)[4]是典型的視覺/慣性組合里程計。VINS采用預(yù)積分的方式處理慣性測量單元(Inertial Measurement Unit,IMU)的測量值,減小位姿更新的計算成本;同時采用非線性優(yōu)化的方法耦合視覺與IMU信息求解相機位姿的過程,隨后使用圖優(yōu)化算法結(jié)合閉環(huán)節(jié)點的位姿測量值來校正全局的位姿。VINS適用于不同精度的相機/IMU組合系統(tǒng),對于多變的環(huán)境具有較好的魯棒性,能集成于多種移動平臺。
基于幾何的視覺/慣性組合里程計根據(jù)成熟的多視圖幾何原理進行開發(fā),在多種場景中都有較為穩(wěn)定的性能;然而它需要較為理想的運行環(huán)境以及精確的參數(shù)設(shè)定,還需要標(biāo)定和校準(zhǔn)多傳感器之間的位置關(guān)系與時間戳誤差,這極大地提升了算法開發(fā)的成本和調(diào)試周期。同時視場中的遮擋以及IMU測量值的噪聲會降低組合里程計的性能,基于幾何的視覺/慣性組合里程計可通過濾波或者非線性優(yōu)化的方式減少噪聲對算法運行的干擾,或者預(yù)先對噪聲進行建模,然后在算法運行的過程中排除噪聲的影響。
鑒于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)具有強大的非線性擬合以及高層特征表達能力,已有研究人員嘗試使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)重構(gòu)視覺里程計。文獻[5]提出了DeepVO算法,使用光流提取網(wǎng)絡(luò)(FlowNet[6])搭建視覺特征提取器,以此來取代傳統(tǒng)視覺里程計中的特征點/光流提取算法。光流提取網(wǎng)絡(luò)通過多層卷積層解析相鄰幀圖像中的高層特征,高層特征不易受到光照條件的干擾,因此具有一定的抗噪能力;同時使用長短時記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM[7])模擬傳統(tǒng)視覺里程計的非線性優(yōu)化模塊,進一步提高了短時間內(nèi)的位姿估計精度。使用全連接層構(gòu)建位姿回歸器,綜合相鄰幀圖像的高層特征并投影為相對位姿估計值。通過長時間的訓(xùn)練,使得網(wǎng)絡(luò)逐漸擬合圖像與相機位姿之間的非線性關(guān)系。
文獻[8]使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)重構(gòu)了視覺/慣性組合里程計,采用FlowNet-Corr[6]作為視覺特征提取器,為前后兩幀圖像分別設(shè)計卷積層來提取高層特征;同時使用雙層LSTM搭建了慣導(dǎo)信息特征提取器,將慣導(dǎo)信息特征提取器最后時刻的輸出作為慣導(dǎo)信息的高層特征,特征的維度與LSTM的隱藏節(jié)點數(shù)一致。單獨設(shè)計一個SE(3)網(wǎng)絡(luò)層將視覺/慣導(dǎo)信息組合特征投影至位姿標(biāo)簽空間,隨后結(jié)合位姿標(biāo)簽值構(gòu)建誤差函數(shù)進行訓(xùn)練。
上述視覺/慣性組合里程計算法都無顯式的抗噪模塊,對噪聲的適應(yīng)能力較為有限。為了進一步增強基于深度學(xué)習(xí)的視覺/慣性組合里程計的抗噪性能,文獻[9]提出了一種基于注意力機制的視覺/慣性組合里程計網(wǎng)絡(luò),在里程計網(wǎng)絡(luò)中引入注意力模型,過濾融合特征中的噪聲,從而進一步提高網(wǎng)絡(luò)的性能。
綜上所述,現(xiàn)階段基于深度學(xué)習(xí)的視覺/慣性組合里程計算法都使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)集成里程計的全部模塊:特征提取、特征匹配、位姿求解以及短時間的位姿優(yōu)化。但同時也缺少閉環(huán)優(yōu)化的環(huán)節(jié),隨著時間的推移,位姿估計值誤差會逐漸積累。
本文參考文獻[9],設(shè)計了一種基于注意力模型的視覺/慣性組合里程計算法,針對視覺和慣導(dǎo)信息中可能存在的噪聲,本文引入了兩種注意力模型。針對里程計誤差隨時間積累的問題,本文參考傳統(tǒng)SLAM系統(tǒng)的后端算法,引入閉環(huán)優(yōu)化的環(huán)節(jié),使用閉環(huán)節(jié)點的相對位姿測量值校正全局位姿。
使用深度學(xué)習(xí)重構(gòu)視覺/慣性組合里程計可視為隱層特征投影的問題,針對不同種類的數(shù)據(jù)需設(shè)計不同結(jié)構(gòu)的特征提取器來提取隱層特征,并通過前向傳播將隱層特征投影至標(biāo)簽空間。本文將光流估計網(wǎng)絡(luò)(FlowNetSimple[6])的卷積層部分作為視覺特征提取器,F(xiàn)lowNetSimple網(wǎng)絡(luò)能同時讀取相鄰兩幀的圖像,因此無需為每幀圖像單獨設(shè)計網(wǎng)絡(luò),這減輕了網(wǎng)絡(luò)的計算成本。鑒于循環(huán)神經(jīng)網(wǎng)絡(luò)存在梯度爆炸的問題,本文使用LSTM搭建慣導(dǎo)信息特征提取器。
FlowNetSimple卷積層的結(jié)構(gòu)如表1所示,在卷積核參數(shù)中,前2個維度表示卷積核在圖像橫縱兩軸的尺寸,第3個參數(shù)表示輸入通道數(shù),最后1個參數(shù)表示輸出通道數(shù)。圖像在輸入之前,將尺寸統(tǒng)一調(diào)整為(512,256)。
表1 視覺特征提取器結(jié)構(gòu)表Tab.1 Structure of visual feature extractor
本文在FlowNetSimple最后一層卷積層Conv6_1后加一個輸出通道數(shù)為256的全連接層Fc1,將相鄰兩幀圖像的隱層特征壓縮為(1,1,256)維度的張量。通過在每一層卷積層之后加上LeakyReLU函數(shù)來增強神經(jīng)網(wǎng)絡(luò)的非線性擬合能力。
圖1 慣導(dǎo)信息特征提取器結(jié)構(gòu)示意圖Fig.1 Scheme of bidirectional LSTM
由于本文將前后向的隱層特征序列進行聯(lián)結(jié),因此LSTM網(wǎng)絡(luò)最終輸出256維度的隱層特征。為了進一步提高網(wǎng)絡(luò)的泛化能力,減輕過擬合的現(xiàn)象,本文將LSTM網(wǎng)絡(luò)的dropout[10]參數(shù)設(shè)置為0.25。
在傳感器采集的原始數(shù)據(jù)中,可能存在一些由外界環(huán)境和器件本身所造成的噪聲,例如圖像中光照強度低或者紋理缺失的部分可能會減弱視覺特征提取器的性能,低精度IMU輸出的慣導(dǎo)信息也存在一定量的白噪聲和零偏。這些噪聲的隱層特征若不經(jīng)處理會降低整體網(wǎng)絡(luò)的性能,因此本文設(shè)計了兩種注意力網(wǎng)絡(luò):加權(quán)組合注意力網(wǎng)絡(luò)以及開關(guān)組合注意力網(wǎng)絡(luò)來過濾噪聲的隱層特征。兩種注意力網(wǎng)絡(luò)的輸出與視覺/慣導(dǎo)信息組合特征同維度的權(quán)重掩膜,掩膜與組合特征按元素相乘,通過調(diào)節(jié)掩膜的數(shù)值從而改變組合特征中每一個元素占總體的比重。其中加權(quán)組合注意力網(wǎng)絡(luò)的掩膜數(shù)值分布在(0,1)區(qū)間,開關(guān)組合注意力網(wǎng)絡(luò)則輸出只有0和1的二值掩膜。
在加權(quán)組合注意力網(wǎng)絡(luò)輸出的權(quán)重掩膜中,較大權(quán)重值對應(yīng)的特征受噪聲影響較小,而較小權(quán)重值對應(yīng)的是受噪聲影響較大的特征。通過長時間的訓(xùn)練使得權(quán)重掩膜的數(shù)據(jù)分布更符合組合特征中的噪聲分布。
經(jīng)過全連接層壓縮的視覺隱層特征αV和慣導(dǎo)信息隱層特征αI的維度為(1,1,256)。本文首先將兩種特征在通道上結(jié)合成(1,1,512)維度的組合特征{αI|αV};隨后將組合特征代入輸出通道數(shù)為512的全連接層fall;輸出的特征再使用sigmoid激活函數(shù)σ進行非線性化處理,得到權(quán)重掩膜Msoft;將掩膜與組合特征按元素相乘,得到經(jīng)篩選的組合特征αout。上述過程如式(1)所示,網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示。
圖2 加權(quán)組合注意力模型示意圖Fig.2 Scheme of soft attention model
Msoft=σ{fall{αI|αV}}
αout=Msoft⊙{αI|αV}
(1)
開關(guān)組合注意力網(wǎng)絡(luò)將組合特征的最大元素視為無噪聲污染的特征,并將對應(yīng)的掩膜元素設(shè)置為1,其余設(shè)置為0,本文使用重參數(shù)法來模擬求組合特征最大值的過程[11]。
首先,構(gòu)建輸出通道數(shù)與組合特征維度相同的全連接層fall,將組合特征輸入到fall得到張量ν,ν中的每一個元素νi代表對應(yīng)位置的組合特征{αI|αV}i是無噪聲污染的概率;隨后將νi與Gumbel[11]隨機變量κi相加,并輸入到softmax[10]函數(shù)中,得到的Mhard近似于二值掩膜。上述過程如式(2)所示
ν=fall{αI|αV}
κi=-log(-log(Ui)),Ui~Uniform(0,1)
αout=Mhard⊙{αI|αV}
(2)
其中,n代表組合特征張量的長度,μ是退火系數(shù),調(diào)整Mhard與二值掩膜的相似程度,當(dāng)μ的值較小時Mhard近似于二值掩膜,將Mhard與組合特征{αI|αV}按元素點相乘得到經(jīng)篩選的組合特征αout。網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖3所示。
圖3 開關(guān)組合注意力模型示意圖Fig.3 Scheme of hard attention model
為了對短時間內(nèi)的位姿估計值進行優(yōu)化,本文使用LSTM搭建窗口優(yōu)化網(wǎng)絡(luò),LSTM的層數(shù)為2,隱藏節(jié)點為512,dropout參數(shù)為0.25,窗口優(yōu)化網(wǎng)絡(luò)示意圖如圖4所示。將相鄰多幀圖像與IMU信息的組合特征輸入到LSTM中,并輸出經(jīng)優(yōu)化的組合特征,隨后使用2個全連接層分別構(gòu)成姿態(tài)回歸器以及位置回歸器,分別輸出歐拉角形式的姿態(tài)增量Δθi,i+1和平移矢量Δρi,i+1。最后,將二者在通道上進行聯(lián)結(jié),構(gòu)成6維度的相對位姿估計值張量。
圖4 窗口優(yōu)化網(wǎng)絡(luò)示意圖Fig.4 Scheme of windows optimization network
(3)
由于姿態(tài)與平移量的數(shù)值之間存在數(shù)量級的差異,因此需設(shè)置平衡系數(shù)τ,本文將平衡系數(shù)設(shè)置為100。
(4)
其中,ε代表相鄰兩幀以及閉環(huán)節(jié)點的索引號。
本文使用列文伯格-馬爾夸特算法[15]對L進行優(yōu)化,使用g2o工具包[16]實現(xiàn)算法。
本節(jié)通過3組實驗驗證了本文設(shè)計的基于注意力模型的視覺/慣性組合里程計網(wǎng)絡(luò)的有效性,第1組實驗致力于比較不同注意力模型對里程計網(wǎng)絡(luò)性能的影響,第2組實驗致力于對比本文設(shè)計的里程計網(wǎng)絡(luò)與主流視覺/慣性組合里程計算法VINS的性能,第3組實驗驗證了閉環(huán)優(yōu)化算法對里程計網(wǎng)絡(luò)性能的影響。
本文使用KITTI官網(wǎng)提供的原始數(shù)據(jù)進行實驗,訓(xùn)練集為00,01,02,06,08,09,驗證集為04和05,測試集為07和10。按照文獻[17]的提示制備實驗數(shù)據(jù)的標(biāo)簽值,隨后將網(wǎng)絡(luò)在配備4塊Titan XP的工作站上進行訓(xùn)練,總共耗費13h。使用pytorch框架[18]開發(fā)本文設(shè)計的幾種里程計網(wǎng)絡(luò)。所有網(wǎng)絡(luò)都使用動量為0.9的Adam梯度下降法[19]進行訓(xùn)練,學(xué)習(xí)率固定為0.0001,批處理數(shù)為48,訓(xùn)練輪數(shù)為100epoch。
本節(jié)測試的網(wǎng)絡(luò)分別為基于深度學(xué)習(xí)的視覺里程計VO、基于深度學(xué)習(xí)的視覺/慣性組合里程計VIO、基于加權(quán)組合注意力模型的視覺/慣性組合里程計VIO-soft,以及基于開關(guān)組合注意力模型的視覺/慣性組合里程計VIO-hard。其中VIO直接將視覺和慣導(dǎo)信息組合特征輸入到窗口優(yōu)化網(wǎng)絡(luò),VO相較于VIO缺少慣導(dǎo)信息特征提取器,并且VO的視覺特征提取器的全連接層Fc1的輸出通道數(shù)為512,其余的網(wǎng)絡(luò)結(jié)構(gòu)與VIO相同。不同網(wǎng)絡(luò)的軌跡對比圖如圖5所示,其中g(shù)t表示位姿標(biāo)簽。
(a)07序列
(b)10序列圖5 不同注意力模型算法軌跡對比圖Fig.5 Comparison of different attention models traces
本節(jié)使用KITTI官方提供的評價指標(biāo)對不同里程計的性能進行評估,評估前不對軌跡進行對齊操作。在不同長度序列(100m,200m,…800m)上計算平移矢量和旋轉(zhuǎn)量的均方誤差,計算其均值并以此作為里程計定位與定姿的精度指標(biāo),誤差的具體數(shù)值如表2所示。其中平移矢量誤差trel的單位是(%),旋轉(zhuǎn)量誤差rrel的單位是((°)/100m),加粗字段表示同組內(nèi)的最小值。
表2 不同注意力機制在07,10序列的誤差匯總Tab.2 Error summary of different attention models in 07 and 10 sequences
從表2的均值項可以看出,添加IMU信息的VIO網(wǎng)絡(luò)的定姿性能相對于VO有所提升,然而定位性能卻有所下滑。值得注意的是,添加開關(guān)組合注意力機制的里程計網(wǎng)絡(luò)VIO-hard能有效提高里程計網(wǎng)絡(luò)的定位與定姿性能,而且它的定姿精度在四種網(wǎng)絡(luò)中最高;同時添加加權(quán)組合注意力機制的VIO-soft也能在一定程度上提升定位精度,然而定姿精度卻有所下滑。本文分析,原始IMU信息中可能存在一定量的噪聲(時間戳誤差、高斯白噪聲與零偏等),若不抑制噪聲的隱層特征則會導(dǎo)致整體網(wǎng)絡(luò)性能的下降。注意力機制的網(wǎng)絡(luò)通過長時間的訓(xùn)練找到輸入數(shù)據(jù)的噪聲特征,并生成同維度的掩膜對其進行抑制,從而提升網(wǎng)絡(luò)性能。
從4.2節(jié)實驗可以得出,在幾種基于深度學(xué)習(xí)的里程計算法中,VIO-hard能有效提高里程計網(wǎng)絡(luò)的定姿和定位精度,因此將其與基于多視圖幾何的VINS算法進行對比,評價的準(zhǔn)則與4.2節(jié)實驗保持一致。鑒于VIO-hard網(wǎng)絡(luò)無閉環(huán)優(yōu)化的模塊,因此使用無閉環(huán)的VINS進行實驗,VINS采用官方提供的程序[20]進行實現(xiàn),算法的具體誤差如表3所示,軌跡對比如圖6所示。
表3 VIO-hard與VINS的誤差匯總Tab.3 Error summary of VIO-hard and VINS
(a)07序列
(b)10序列圖6 VIO-hard與VINS軌跡對比圖Fig.6 Comparison of VIO-hard and VINS traces
從軌跡對比圖中可以看出,VINS的軌跡較為偏離軌跡標(biāo)簽,這可能是VINS在初始化階段的性能不太穩(wěn)定導(dǎo)致其在序列前段的位姿估計精度較低,從而加大了整體軌跡的誤差。從誤差匯總表和軌跡對比圖可以看出,VIO-hard在整個序列范圍內(nèi)性能較為穩(wěn)定,具有更好的定姿定位精度。
本節(jié)致力于驗證添加閉環(huán)優(yōu)化算法對基于深度學(xué)習(xí)的視覺/慣性組合里程計性能的影響。以VIO-hard算法為例,添加閉環(huán)優(yōu)化的VIO-hard算法在后文簡稱為VIO-hard-loop,其中不同算法的軌跡對比如圖7所示,誤差匯總?cè)绫?所示。
(a)07序列
(b)10序列圖7 添加閉環(huán)優(yōu)化算法軌跡對比圖Fig.7 Comparison of loop closure and none-loop closure trace
表4 VIO-hard和VIO-hard-loop的誤差匯總Tab.4 Error of VIO-hard and VIO-hard-loop
從圖7(a)中可以看出,在07序列上VIO-hard-loop更貼近位姿標(biāo)簽,從誤差對比表中也可以看出,VIO-hard-loop性能較VIO-hard存在明顯提升。分析原因,由于07序列存在一個明顯的長閉環(huán)節(jié)點,因此全局位姿的校正效果較為明顯。
從表4可以看出,添加閉環(huán)優(yōu)化算法能夠提高VIO-hard在10序列的定姿精度,然而定位精度卻略有下滑。分析原因,短閉環(huán)節(jié)點的時間跨度較短,位姿估計值的誤差積累量較小,與相對位姿估計網(wǎng)絡(luò)posenet估計的節(jié)點相對位姿的差值也較小,導(dǎo)致全局位姿校正的效果并不明顯;并且部分短閉環(huán)節(jié)點的相對位姿估計值可能存在一定的誤差,從而降低了閉環(huán)優(yōu)化的定位精度。
針對已有基于深度學(xué)習(xí)的視覺/慣性組合里程計網(wǎng)絡(luò)缺乏顯式的降噪模塊和閉環(huán)優(yōu)化環(huán)節(jié)的現(xiàn)狀,本文設(shè)計了一種基于注意力模型的視覺/慣性組合里程計網(wǎng)絡(luò)。算法分析與實驗驗證表明:
1)直接添加原始的IMU數(shù)據(jù),并且在網(wǎng)絡(luò)中不對IMU數(shù)據(jù)的隱層特征進行處理,可能并不會提高深度學(xué)習(xí)視覺里程計的性能,這可能與IMU數(shù)據(jù)中存在的一定量的噪聲有關(guān)。
2)開關(guān)組合注意力模型能有效提高基于深度學(xué)習(xí)的視覺/慣性組合里程計網(wǎng)絡(luò)的定姿定位精度。加權(quán)組合注意力模型在一定程度上能夠提高里程計網(wǎng)絡(luò)的定位精度,但定姿精度卻有所下滑。
3)添加開關(guān)組合注意力模型的VIO-hard網(wǎng)絡(luò)相比于無閉環(huán)優(yōu)化的VINS算法具有更穩(wěn)定的性能,這表明基于深度學(xué)習(xí)的里程計算法可以達到與基于多視圖幾何的里程計算法相當(dāng)?shù)男阅堋?/p>
4)添加閉環(huán)優(yōu)化算法能夠顯著提高里程計網(wǎng)絡(luò)在長閉環(huán)序列中的性能,然而在短閉環(huán)序列中的效果并不理想,這表明閉環(huán)優(yōu)化算法的效果受制于閉環(huán)節(jié)點相對位姿估計的精度。