楊斌超,續(xù)欣瑩,2,程 蘭,馮 洲
1.太原理工大學 電氣與動力工程學院,太原 030024
2.先進控制與裝備智能化山西省重點實驗室,太原 030024
隨著自動駕駛技術(shù)的研究取得卓越進展,未來自動駕駛將可以在更加復(fù)雜的環(huán)境中應(yīng)用,這對視覺里程計的精度和魯棒性提出了更高的要求。視覺里程計是通過分析相關(guān)的攝像機圖像來確定車輛的位置和方向的過程,被廣泛應(yīng)用于無人駕駛、機器人、虛擬現(xiàn)實、增強現(xiàn)實等[1],是一種性價比及可靠性較高的新興導(dǎo)航技術(shù)[2]。
傳統(tǒng)的視覺里程計[1,3]依賴人工設(shè)計的特征、不準確的建模、環(huán)境動力約束復(fù)雜等不足導(dǎo)致其在動態(tài)目標、光度變化等的環(huán)境條件下依然存在較多挑戰(zhàn)。
與利用物理模型或幾何理論創(chuàng)建人工設(shè)計的算法不同,基于深度學習的視覺里程計在預(yù)測位姿和深度等信息取得了積極進展[4-5]。相對基于雷達、雙目相機的視覺里程計,現(xiàn)有的基于單目相機的視覺里程計魯棒性較差,但在低成本和普適性上有著無法替代的優(yōu)勢。
近年來,使用深度學習解決幀間位姿估計和回環(huán)檢測問題取得不錯的進展[6-7]。與經(jīng)典的幀間估計提取特征點進行匹配后計算位姿運動不同,基于深度學習的幀間估計提取的特征點更加稠密[8],并且無需利用圖像的幾何結(jié)構(gòu)、進行特征搜索和匹配等復(fù)雜的操作。Li等人[9]在立體圖像上基于空間與時間一致性,利用視圖合成建立自監(jiān)督信號,估計位姿和深度信息。由于自監(jiān)督的訓(xùn)練方式相對有監(jiān)督的訓(xùn)練方式不需要任何的人工標記、更具泛化能力[10],本文采用自監(jiān)督的方式設(shè)計模型。
自監(jiān)督建立在光度一致性假設(shè)上,即只有當場景幾何和相機姿態(tài)的中間預(yù)測與物理地面相一致時,幾何視圖合成系統(tǒng)才能始終如一地運行良好[11]。在實際道路環(huán)境中,動態(tài)物體會對光度一致性假設(shè)造成破壞,從而導(dǎo)致深度和位姿的不準確估計。為了解決這個問題,GeoNet[12]通過強化幾何一致性損失,構(gòu)建剛性結(jié)構(gòu)重構(gòu)器和非剛性運動定位器來估計靜態(tài)場景結(jié)構(gòu)和運動動力學。Ricco等人[13]使用遮罩去除不穩(wěn)定像素點。但上述方法并不能很好地解決移動物體所帶來的光度投影扭曲。
語義信息可以幫助自監(jiān)督的光度誤差損失去除不確定的像素點,而不是簡單的遮罩。目前,視覺里程計與語義信息的融合通常是將語義信息作為單獨的任務(wù)或在建圖中引入語義映射,而未利用語義信息輔助構(gòu)建深度、位姿等幾何信息。
針對這類移動物體對光度一致性假設(shè)的破壞,本文提出一種基于道路環(huán)境動態(tài)語義特征的單目視覺里程計,簡稱為DS-VO(visual odometry with dynamic semantic),主要內(nèi)容如下:
(1)在語義分割網(wǎng)絡(luò)的基礎(chǔ)上,對道路環(huán)境下車輛的前景圖像處理得到動態(tài)語義概率先驗圖;設(shè)計語義概率解析網(wǎng)絡(luò),將得到的動態(tài)語義概率先驗圖作為先驗信息,以空間仿射變換的形式影響深度估計網(wǎng)絡(luò)的中間特征層,使網(wǎng)絡(luò)學習到當前環(huán)境下的動態(tài)信息,提高深度估計與位姿估計的魯棒性。在測試中,只需一次前向傳播就可以得到動態(tài)語義特征圖、深度圖和位姿向量。
(2)設(shè)計兩個獨立的全連接層,分別估計位姿向量中的旋轉(zhuǎn)向量和平移向量。降低大旋轉(zhuǎn)帶來的連續(xù)幀間交疊區(qū)域少而導(dǎo)致旋轉(zhuǎn)向量的預(yù)測誤差,同時避免相同的全連接層網(wǎng)絡(luò)對旋轉(zhuǎn)向量和平移向量擬合能力的差異問題。在損失函數(shù)上,采用結(jié)構(gòu)相似度指標(SSIM)和魯棒性較強的L1光度絕對誤差作為光度誤差的損失函數(shù),與二階梯度平滑損失一起構(gòu)成網(wǎng)絡(luò)的損失函數(shù)。
本文的DS-VO由位姿估計網(wǎng)絡(luò)和深度估計網(wǎng)絡(luò)構(gòu)成,并在網(wǎng)絡(luò)中加入語義概率解析網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。輸入網(wǎng)絡(luò)的圖像為相鄰的多張連續(xù)彩色圖像序列,圖像分辨率為416×128,每3張連續(xù)幀為一個集合。每個集合以通道數(shù)為軸疊加為9通道的張量輸入位姿估計網(wǎng)絡(luò)中,集合的中間幀輸入深度估計網(wǎng)絡(luò)中,分別產(chǎn)生相鄰幀的6維位姿向量和深度。
編碼解碼器網(wǎng)絡(luò)結(jié)構(gòu)作為神經(jīng)網(wǎng)絡(luò)的一種類型,其結(jié)構(gòu)可以保留圖像像素的空間信息??紤]到深度圖具有一定分辨率、邊緣信息復(fù)雜的特點,本文的深度估計網(wǎng)絡(luò)基于編碼解碼結(jié)構(gòu),以恢復(fù)原圖像的完整深度信息。如圖1所示,通過輸入一張當前車輛的前景圖像產(chǎn)生對應(yīng)四個尺度的稠密深度圖(灰色矩形)。其具體網(wǎng)絡(luò)結(jié)構(gòu)主要由7組卷積和反卷積組成,反卷積由Zeiler等人提出[14],與卷積一樣都是通過網(wǎng)絡(luò)的反向傳播進行參數(shù)優(yōu)化。
圖1 DS-VO網(wǎng)絡(luò)設(shè)計Fig.1 Network structure of DS-VO
在道路環(huán)境下,存在大量動態(tài)物體、不穩(wěn)定實例,這會對光度一致性假設(shè)條件構(gòu)成破壞,有研究使用掩碼或遮罩來對光度不穩(wěn)定的像素進行弱化處理[15],也有研究直接處理光度誤差損失過大的像素點[11]。通過實驗,發(fā)現(xiàn)在像素層面的簡單弱化不穩(wěn)定像素點光度或者簡單強化穩(wěn)定像素點光度并不會達成很好的效果。本文借鑒Wang等人[16]的方法,提出語義概率解析網(wǎng)絡(luò)。在深度估計網(wǎng)絡(luò)的編碼解碼結(jié)構(gòu)中加入概率解析網(wǎng)絡(luò)(圖1黃色矩形),并融合上下文信息,其具體細節(jié)結(jié)構(gòu)如圖2所示,其中Semantics為語義概率先驗,由Deeplab[17]產(chǎn)生,Conv feature和Upconv feature分別為編碼和解碼結(jié)構(gòu)的特征層,Osem為語義概率解析網(wǎng)絡(luò)輸出特征層,即動態(tài)語義概率先驗信息:
圖2 語義概率解析網(wǎng)絡(luò)Fig.2 Semantic probability analysis network
式中,·為點乘計算,P為語義概率先驗,ν為語義概率解析網(wǎng)絡(luò),其輸入的通道數(shù)為語義類別數(shù),輸出的通道數(shù)和上下文連接通道的特征圖通道數(shù)一致,φ,ω為輸入的特征圖F通過語義概率解析網(wǎng)絡(luò)產(chǎn)生的參數(shù)對。
位姿估計可以連續(xù)跟蹤車輛的運動并產(chǎn)生相對位姿,通過在已有的初始化條件下整合相對位姿重建車輛的全局運動軌跡?,F(xiàn)有的位姿估計網(wǎng)絡(luò)存在兩個主要問題:第一,由于在道路環(huán)境下大旋轉(zhuǎn)會導(dǎo)致連續(xù)幀之間交疊區(qū)域過小,對光度一致性造成一定程度的破壞;并且旋轉(zhuǎn)向量的表示與平移向量表示相比,具有更高的非線性,相對訓(xùn)練難度較大。第二,位姿預(yù)測并非傳統(tǒng)意義上的圖像預(yù)測,而是一種運動估計,如何通過簡單有效的網(wǎng)絡(luò)預(yù)測位姿向量達到較好的精度成為一個具有挑戰(zhàn)性的問題。本文提出使用2個不同的全連接網(wǎng)絡(luò)(圖1的橙色矩形)分別處理位姿向量中的旋轉(zhuǎn)向量和平移向量,以避免相同的全連接層對旋轉(zhuǎn)向量和平移向量擬合能力的不同導(dǎo)致出現(xiàn)預(yù)測誤差,進一步利用簡單的網(wǎng)絡(luò)結(jié)構(gòu)提升位姿估計的能力,保證了位姿估計中不同類型向量估計的準確性。
位姿估計網(wǎng)絡(luò)包含:7層卷積層和2組3層全連接層,每個卷積層后皆有批歸一化層,避免梯度消失,每個全連接層后為ReLU(rectified linear unit)非線性激活函數(shù)和Dropout層。Dropout層防止網(wǎng)絡(luò)過擬合,而ReLU函數(shù)可以有效進行梯度下降的反向傳播,減少參數(shù)量,避免梯度問題。
為了能使網(wǎng)絡(luò)進行自監(jiān)督訓(xùn)練,本文利用光度幾何一致性構(gòu)建損失函數(shù),通過損失函數(shù)的反向傳播進行訓(xùn)練。光度幾何一致性表示幾何投影兩個連續(xù)的單目圖像中對應(yīng)像素點之間的約束,通過最小化光度誤差,使網(wǎng)絡(luò)以端到端的方式學習6維位姿向量和深度地圖。
一張圖像幀I輸入深度預(yù)測網(wǎng)絡(luò)產(chǎn)生相應(yīng)的深度圖D,相鄰的3個圖像幀序列輸入位姿預(yù)測網(wǎng)絡(luò)產(chǎn)生2個相鄰幀間的位姿變換[R|t],其中,R為旋轉(zhuǎn)向量,t為平移向量,兩者共同構(gòu)成位姿向量[R|t]。以相鄰的兩張圖像幀為例,光度誤差的損失來自于兩張相鄰的單目圖像,圖3展示了單個像素計算光度誤差的方式。這里,假設(shè)第一張圖像幀I1的一個像素點為p1,p1所對應(yīng)的在第二張圖像幀I2的一個像素點為p2,I1和I2之間的位姿向量為送入深度預(yù)測網(wǎng)絡(luò)得出的深度圖為D2,p2所對應(yīng)的深度為D2(p2),則可以通過p2估計出p1,公式如下:
圖3 光度誤差Fig.3 Photometric error
式中,K1和K2分別是圖像幀I1和I2對應(yīng)兩幅圖像的本征矩陣。通過估計得到的深度和位姿對每個像素點使用同樣的計算過程和相應(yīng)的空間轉(zhuǎn)移[18],可以通過圖像I2得到I1的投影圖像,將I1的投影圖像與I1作光度誤差比較,兩者越相似則表示估計得到的深度與位姿越準確。
早期研究中,單目自監(jiān)督的深度估計主要依賴基于光度一致性計算光度誤差[15],然而直接計算光度誤差作為損失函數(shù)會導(dǎo)致深度估計網(wǎng)絡(luò)魯棒性較低。本文使用結(jié)構(gòu)相似性指標(SSIM)作為損失函數(shù)的一部分[19],與L1光度絕對誤差一起作為單目光度誤差損失函數(shù),用來評估目標圖像和投影生成圖像的相似度。SSIM在超分辨[20]、圖像去模糊[21]等都有應(yīng)用,SSIM越大,表明投影圖像與原圖像之間的差距越小,當兩圖像完全相同時,SSIM為1。L1損失函數(shù)為最小絕對值誤差,較L2損失函數(shù)相比魯棒性更強。可以得到基于無監(jiān)督的單目光度誤差損失為:
式中,α是平衡系數(shù)[22],Ik為圖像序列中的一張圖像幀,為圖像幀Ik通過計算投影和雙線性插值后生成的圖像。
由于深度不連續(xù)性經(jīng)常出現(xiàn)在圖像的像素梯度中,為了去除不準確的預(yù)測、解決深度和位姿估計中的梯度局部性問題和消除低紋理區(qū)域?qū)W習深度的不連續(xù)性,本文在損失公式中引入深度平滑項[15]。深度平滑項對相鄰像素進行梯度進行計算,與光度誤差損失一起構(gòu)成網(wǎng)絡(luò)的損失函數(shù)。由于一階梯度平滑項會導(dǎo)致深度圖梯度趨于零,而深度圖具有連續(xù)性,其梯度期望為常值,所以本文采用二階梯度平滑項,深度平滑項為預(yù)測深度圖的二階梯度的L1范數(shù),其公式如下:
式中,||為絕對值,β為深度平滑損失的權(quán)重,Dk是Ik所估計的深度圖,?為向量的微分計算,T為轉(zhuǎn)置。
在訓(xùn)練過程中,將單目圖像序列同時輸入深度估計網(wǎng)絡(luò)和位姿估計網(wǎng)絡(luò),利用卷積神經(jīng)網(wǎng)絡(luò)強大的建模能力預(yù)測位姿向量和深度圖,結(jié)合輸入的原始圖像、深度圖以及位姿向量,根據(jù)光度誤差計算,重建出下一幀圖像,并將重建的下一幀圖像與真實的下一幀圖像進行對比,計算出損失。通過損失函數(shù)反向傳播到神經(jīng)網(wǎng)絡(luò),調(diào)整網(wǎng)絡(luò)參數(shù),改進生成的結(jié)果,不斷重復(fù)該過程,直到重建誤差降到最小,神經(jīng)網(wǎng)絡(luò)趨于擬合。本文的網(wǎng)絡(luò)具體流程如圖4所示。
圖4 網(wǎng)絡(luò)流程圖Fig.4 Flow chart of network
實驗使用KITTI數(shù)據(jù)集[23]、Cityscapes數(shù)據(jù)集[24]和PASCAL VOC 2012數(shù)據(jù)集[25],其中使用KITTI數(shù)據(jù)集的視頻圖像用于訓(xùn)練、深度預(yù)測的評估,KITTI Odometry數(shù)據(jù)集用于位姿預(yù)測的評估,Cityscapes、PASCAL VOC數(shù)據(jù)集用于語義先驗產(chǎn)生網(wǎng)絡(luò)的訓(xùn)練。
KITTI數(shù)據(jù)集是目前國際上最大的自動駕駛場景下的視覺算法評測數(shù)據(jù)集,包含市區(qū)、鄉(xiāng)村和高速公路等場景采集的真實圖像數(shù)據(jù),包括原始的輸入原圖像、雷達三維點云數(shù)據(jù)和相機運動軌跡。Cityscapes數(shù)據(jù)集包含了5 000張精細標注的圖像,其中包含50個城市的不同背景,以及30類涵蓋地面、建筑、交通標志、自然、人和車輛等的物體標注。PASCAL VOC數(shù)據(jù)集主要是針對視覺任務(wù)中監(jiān)督學習提供標簽數(shù)據(jù),主要類別為人、動物、交通車輛等。
諸多的相關(guān)工作中都采用了Eigen劃分的單目深度估計數(shù)據(jù)集[26],這個測試數(shù)據(jù)由28個場景、697張圖片構(gòu)成,不包括訓(xùn)練圖片,為了方便與其他方法比較,本文也采用了這個數(shù)據(jù)集來評估深度預(yù)測效果。
系統(tǒng)工作站采用Nvidia Titan Xp GPU進行訓(xùn)練,實驗使用PyTorch深度學習框架。初始化Adam[27]優(yōu)化器參數(shù)β1=0.9,β2=0.999。最初按照經(jīng)驗值設(shè)置學習率為0.001,此時模型難以收斂;改進學習率為0.000 1,訓(xùn)練曲線振蕩較大,無法達到最優(yōu)值。經(jīng)過多次調(diào)整。最終選擇合適的學習率為0.000 2,批尺寸設(shè)置為4。訓(xùn)練迭代次數(shù)為20萬次時,模型趨于擬合。所有訓(xùn)練數(shù)據(jù)為單目圖像,沒有任何數(shù)據(jù)標簽下自監(jiān)督訓(xùn)練。將訓(xùn)練的圖像大小調(diào)整為128×416,并進行隨機縮放與裁剪以擴充數(shù)據(jù)集。
通過對引入的語義概率解析網(wǎng)絡(luò)在不同網(wǎng)絡(luò)結(jié)構(gòu)上的訓(xùn)練結(jié)果對比驗證網(wǎng)絡(luò)設(shè)計的合理性。為了直觀地評估消融實驗的結(jié)果,給出了上述11個深度估計評價指標對4個網(wǎng)絡(luò)的深度估計結(jié)果,以及絕對軌跡誤差(ATE)和相對軌跡誤差(RE)指標[23]對4個網(wǎng)絡(luò)的位姿估計結(jié)果,如圖5所示。Base即位姿估計和深度估計網(wǎng)絡(luò)中未引入語義概率解析網(wǎng)絡(luò);Sem-en為在深度估計網(wǎng)絡(luò)中的編碼部分引入語義概率解析網(wǎng)絡(luò);Sem-de為在深度估計網(wǎng)絡(luò)中的解碼部分引入語義概率解析網(wǎng)絡(luò);Sem-all為在深度估計網(wǎng)絡(luò)中的編碼及解碼部分引入語義概率解析網(wǎng)絡(luò)??梢园l(fā)現(xiàn),在深度估計中,語義先驗加入到深度估計網(wǎng)絡(luò)的解碼結(jié)構(gòu)帶來了較好的效果,同樣在位姿估計中,相較不引入語義先驗,在網(wǎng)絡(luò)中引入語義先驗提升了位姿估計的精度。深度估計定量分析的評價指標如下:
圖5 消融實驗Fig.5 Ablation experiment
圖5中a1、a2、a3分別代表深度估計預(yù)測精度ζ,三個不同的閾值(1.25,1.252,1.253)。它統(tǒng)計像素的百分比預(yù)測的深度值與真實值之比小于閾值。預(yù)測的深度值與真實值之比小于閾值。越接近1,預(yù)測結(jié)果越好,評價指標公式如下:
對于語義概率先驗的產(chǎn)生網(wǎng)絡(luò),使用文獻[17]提出的語義分割網(wǎng)絡(luò),在PASCAL VOC數(shù)據(jù)集預(yù)訓(xùn)練后在Cityscapes數(shù)據(jù)集上精調(diào),語義概率先驗的產(chǎn)生網(wǎng)絡(luò)產(chǎn)生8個動態(tài)物體類別概率,輸出的語義概率先驗作為語義概率解析網(wǎng)絡(luò)的輸入,語義概率解析網(wǎng)絡(luò)輸出為動態(tài)語義概率先驗信息。如圖6所示,本文對語義先驗產(chǎn)生網(wǎng)絡(luò)所產(chǎn)生的語義先驗進行了可視化,可以清晰地看到語義概率對于動態(tài)物體的理解能力。
圖6 動態(tài)語義概率先驗可視化Fig.6 Dynamic semantic probability prior visualization
本文從測試場景中排除所有平均光流值小于1像素的靜態(tài)序列幀進行訓(xùn)練。使用的數(shù)據(jù)一共有30 945個序列,其中23 982個序列用于訓(xùn)練,6 963個序列用于驗證。首先進行定量對比實驗,將本文方法與現(xiàn)有方法比較,深度估計的閾值精度如圖7所示,仍使用同圖5相同的深度估計預(yù)測精度ζ,深度估計對比結(jié)果如表1所示。
表1 深度估計量化結(jié)果對比Table 1 Comparison of depth estimation quantitative results
圖7 閾值精度評價指標對比Fig.7 Comparison of threshold accuracy evaluation indicators
分析上述實驗結(jié)果,與現(xiàn)有的有監(jiān)督方法[26,28]和無監(jiān)督方法[9,15,29]相比,本文方法在無深監(jiān)督信號的情況下,取得了更好的深度估計效果。為了直觀評估深度估計的結(jié)果,本文與文獻[15]的方法進行對比,分別可視化本文引入和不引入語義先驗的網(wǎng)絡(luò)的深度估計結(jié)果,并可視化深度真值,如圖8所示??梢园l(fā)現(xiàn),相較于其他方法對于深度估計存在深度圖模糊、邊緣不清、深度不連續(xù)、不完整的現(xiàn)象,本文方法引入動態(tài)物體語義先驗后,深度估計可以準確估計深度圖,有效改善深度圖不連續(xù)、模糊、空洞等現(xiàn)象,并且深度圖邊緣更加清晰。
圖8 深度估計結(jié)果對比Fig.8 Comparison of depth estimation results
為了量化評估位姿估計網(wǎng)絡(luò),使用KITTI odometry 09和10序列進行測試,并與一些已經(jīng)提出的方法進行比較,對比結(jié)果如表2所示,其中,第四行數(shù)據(jù)為數(shù)據(jù)集的里程計真值的平均值。與ORB-SLAM2等在長期具有滑動窗口優(yōu)化相比,由于本文所設(shè)計的視覺里程計是在短期的圖像序列片段進行訓(xùn)練和測試,本文方法在短期評估上,即相對位姿的評估更具優(yōu)勢。與文獻[15]方法相比,本文方法在序列09上的絕對軌跡誤差指標均值降低1%,標準差降低1.2%;與人工設(shè)計特征點的傳統(tǒng)算法[30]相比,本文方法也取得了相似或更優(yōu)的結(jié)果,因此本文方法有著更好的表現(xiàn)。
表2 絕對軌跡誤差(ATE)Table 2 Absolute trajectory error(ATE)
本文提出一種基于道路環(huán)境動態(tài)語義特征的視覺里程計(DS-VO),通過神經(jīng)網(wǎng)絡(luò)模型直接將輸入原始數(shù)據(jù)和輸出目標連接起來,不再需要人工設(shè)計特征;分析了在視覺里程計中基于光度一致性的自監(jiān)督網(wǎng)絡(luò)存在的局限性,提出語義概率解析網(wǎng)絡(luò)為深度估計網(wǎng)絡(luò)提供動態(tài)物體先驗,以增強自監(jiān)督網(wǎng)絡(luò)的魯棒性;針對平移和旋轉(zhuǎn)向量的網(wǎng)絡(luò)訓(xùn)練難度不一致,提出使用兩個獨立的全連接層分別估計平移和旋轉(zhuǎn)向量。實驗結(jié)果表明,本文算法可以顯著提升深度估計與位姿估計的精度。