劉偉,佟天旭,田咪,孫佳
(1.北京信息科技大學 自動化學院,北京 100192;2.中國科學院自動化研究所,北京 100190;3.上海譜視科技有限公司,上海 200434)
自動駕駛指通過多種車載傳感器來識別車輛所處的周邊環(huán)境和狀態(tài),并自主做出分析和判斷,控制車輛運動[1]。2020年,發(fā)改委等部門聯(lián)合發(fā)布了《智能汽車創(chuàng)新發(fā)展戰(zhàn)略》,明確指出發(fā)展智能網(wǎng)聯(lián)車輛對我國具有極為重要的戰(zhàn)略意義[2]。精確且魯棒的車輛全局定位是實現(xiàn)自動駕駛的路徑規(guī)劃和控制的前提。受天氣、光照等變化及道路施工、道路封閉、新標志及道路標志缺失等影響,定位成為汽車自動駕駛技術中的主要難點。按照定位的數(shù)據(jù)源來劃分,目前應用于自動駕駛中常見的全局定位方法有激光雷達、高精度全球定位系統(tǒng)(global positioning system,GPS)[3]、毫米波雷達及視覺定位[4-5]方法。激光雷達雖不受光照條件和天氣的影響,還有精度高的特點,但存在信息稀疏、建圖范圍有限,且設備設施昂貴等問題,對終端價格影響較大。而GPS易受衛(wèi)星狀態(tài)及天氣情況影響,可能出現(xiàn)無法定位的情況。毫米波雷達對多種天氣情況適應度高,空間分辨率高,但整體技術尚不成熟。而視覺方法雖然對光照條件依賴較大,存在運行魯棒性較差的現(xiàn)象,但因為其相對低廉的硬件價格,同時探測范圍大,能夠提供豐富、直觀的信息,在特定場景下(交通標志等)具有高精度感知能力,目前已成為一種自動駕駛終端重要的定位選擇方案。視覺定位技術的深入研究,有望進一步簡化自動駕駛汽車的位姿估算算法,提高多種場景的魯棒性及泛化性能。
相對于通過即時定位與地圖構建 (simultaneous localization and mapping,SLAM)及視覺里程計等估計相機局部相對位姿而導致定位結果不具有全局一致性的視覺局部定位方法,視覺全局定位是根據(jù)當前圖像,求出相機在全局地圖坐標系中的6自由度全局位姿,可以在任意位置進行絕對位姿估計,定位結果與先驗地圖能較好地保證全局一致性,因此視覺全局定位目前是實際自動駕駛應用中的重要選擇。然而,視覺全局定位方法包含多個步驟,每一步驟對于視覺處理的精度要求都高,且步驟間的交互及參數(shù)調整較為復雜。雖然隨著深度學習的發(fā)展,基于學習的端到端的視覺定位方法以及融合了傳統(tǒng)方法的混合定位方法一定程度上解決了上述問題,但仍存在訓練優(yōu)化目標可解釋性弱、6D位姿估計精度低等問題。針對于上述研究,本文按照模型構建方式的不同,將現(xiàn)有方法分為傳統(tǒng)的視覺全局定位、基于深度學習和將兩者結合的多階段網(wǎng)絡架構視覺全局定位方法。其中傳統(tǒng)的視覺全局定位方法通過提取特征,進行關鍵點或關鍵幀的匹配,求解絕對位姿。此類方法的精確度較高,但依賴于局部特征的匹配,泛化性能差。最近幾年,深度學習網(wǎng)絡在各領域獲得廣泛應用,學者們提出不依靠圖像的特征描述子,而是直接訓練卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)以從圖像中回歸位姿?;谏疃葘W習的方法速度快、魯棒性強,但定位精度仍有待提高。而將傳統(tǒng)方法和卷積神經(jīng)網(wǎng)絡結合的方法,用神經(jīng)網(wǎng)絡代替?zhèn)鹘y(tǒng)定位方法中的部分模塊,結合了兩者的優(yōu)勢,在保持定位精度的同時還能保障較強的魯棒性,逐漸成為當下研究的潮流。
本文對視覺全局定位的不同方法進行分類討論,在此基礎上分析視覺全局定位所面臨的挑戰(zhàn),最后對整篇文章進行總結。
在視覺全局定位問題提出之初,主要通過傳統(tǒng)的建圖查詢及位姿計算進行視覺全局定位?;陬A先建立的地圖,利用特征提取與匹配獲得其中最相似的子集(包括圖像點云/特征點/語義信息等),進一步通過子集的位姿真值和特征真值,計算子集間的變換矩陣,進行當前相機位姿估計?;谠擃惙椒ㄋ璧牡貓D特征類型,可劃分為如下3類方法:基于3D幾何結構的方法、基于2D圖像檢索的方法及基于語義信息的視覺全局定位方法。
基于3D幾何結構的方法依賴運動恢復結構(structure from motion,SFM)[6]技術建立點云模型,尋找自動駕駛終端所采集圖像中的關鍵點與實際場景點之間的對應關系,典型的有文獻[7-9]等提出的方法。此類方法需先構建帶有三維信息和特征描述子的場景視覺地圖。在定位階段,通過提取查詢對象的局部特征,建立圖像的2D特征和點云模型中3D點的對應關系,在得到足夠多的2D-3D匹配后使用透視n點投影(Perspective-n-Point,PnP)[10]算法求解位姿集合,通過隨機抽樣一致(random sample consensus,RANSAC)[11-12]算法求解最佳位姿。
此類方法基于關鍵點的匹配,只要有足夠多的2D-3D正確匹配,就可以估計相機位姿,并且在小范圍內可以實現(xiàn)較高的姿勢精度。但由于其在特征提取時主要采用尺度不變特征變換(scale-invariant feature transform)SIFT[13]、加速穩(wěn)健特征(speeded up robust features,SUFR)[14]等特征提取方法,嚴重依賴局部特征,很難處理因光照、噪音等因素而變化的點,且關鍵點匹配復雜度高,導致此類方法占用內存大、速度慢。
基于內容的圖像檢索方法是使用全局特征描述子對圖像進行檢索找到最接近檢索圖像的匹配。在自動駕駛場景下應用時,重點是場景圖像信息(通常是2D圖像)數(shù)據(jù)庫的建立,以及用于加速搜索的數(shù)據(jù)庫索引、檢索技術,典型的有文獻[15-18]等提出的方法。如Sivic等[18]提出將文字檢索的一些方法移植到視頻搜索中,通過詞袋模型[19]進行編碼和檢索,選出匹配圖像。文獻[20-22]等提出使用改進的哈希算法進行圖像檢索,首先對數(shù)據(jù)集提取特征,每張圖片用一個向量表示,根據(jù)訓練集訓練出哈希函數(shù),將測試數(shù)據(jù)轉化為哈希碼。計算測試數(shù)據(jù)到訓練數(shù)據(jù)的距離并進行排序,選擇距離最小的前k張圖片,搜出來的k張圖片就是近似近鄰的圖片。
基于2D圖像檢索的方法,只要測試圖像和檢索到的圖像之間的相似度足夠大,就可以獲得精準的相對姿態(tài)估計。但本方法的結果只近似于查詢圖像的位置,且當圖片量增大時,求解速度變慢,無法滿足實時性要求,復雜性也隨所需合成視圖的數(shù)量而線性增加;當圖像被遮擋或截斷時,此方法往往不能勝任,對實際使用造成了較大限制。
基于語義信息的方法將結構、圖像以及語義信息相結合,由于語義信息不隨環(huán)境變化而改變,因此可作為監(jiān)督者將正確檢索到的圖像與檢索到的全部圖像區(qū)分開來,典型的有文獻[23-24]等提出的方法。如Shi等[23]首先通過在所有數(shù)據(jù)庫圖像上運行SFM技術來獲得3D模型,并為每個3D模型點分配一個語義標簽[25]。對于查詢圖像,計算其語義分割[26-28]并搜索前k個與其相似的數(shù)據(jù)庫圖像,使用查詢圖像與每個檢索圖像之間產(chǎn)生的2D-3D匹配來計算查詢圖像的臨時姿勢,并為屬于所選檢索圖像分配語義一致性分數(shù),最后將所有2D-3D 匹配及其語義一致性分數(shù)作為權重放在一起,運行基于RANSAC的加權 PnP 求解器來輸出最終查詢位姿。圖1給出了基于語義信息的定位方法流程圖。
圖1 基于語義信息的定位方法流程
該方法把語義一致性分數(shù)用作檢索圖像產(chǎn)生的2D-3D匹配的權重,提高了定位的精度,對局部特征描述子的依賴小,在受光照、天氣、季節(jié)、場景結構變化等因素影響時得出的最終位姿較為準確,且該方法的限制條件較少,實用性更強。但稀疏矩陣會嚴重影響內存和計算資源,未來可以嘗試用密集的3D語義模型代替稀疏模型。
評價與總結:傳統(tǒng)的視覺定位方法是自動駕駛視覺全局定位的基本方法,只要有足夠多的關鍵點或關鍵幀的匹配,此類方法就能在小范圍內獲得精準的位姿估計。傳統(tǒng)視覺定位方法具有較高的成熟度與定位精度,并在一些特定的場景下(如交通標志識別等)具有較高的識別精度優(yōu)勢,為自動駕駛定位提供了一種在較好環(huán)境條件下相對廉價、可靠的解決方案。但是,由于其過度依賴于局部特征,此類方法的泛化性和魯棒性有待提高。針對這些問題,學者們相繼提出了將深度學習方法應用到視覺全局定位中,不學習圖像的描述子,直接訓練網(wǎng)絡以回歸位姿。
場景天氣變化(如季節(jié)、光照等)是自動駕駛時的常見情況。由于傳統(tǒng)方法過分依賴于圖像的特征描述子[13-14],在變化的環(huán)境下特征匹配精度降低,無法提供較高的魯棒性,且隨著深度學習在圖像深層次特征信息獲取上的優(yōu)勢不斷擴大,研究人員開始嘗試將深度學習應用到自動駕駛終端視覺全局定位上,通過訓練卷積神經(jīng)網(wǎng)絡從圖像中直接回歸位姿,消除惡劣環(huán)境對定位效果的干擾,提升魯棒性。
基于深度學習的端到端視覺全局定位,本質上是通過神經(jīng)網(wǎng)絡把傳統(tǒng)方法的特征提取、位姿解算等步驟進行替代,直接通過神經(jīng)網(wǎng)絡完成輸入圖像到輸出位姿的映射。
PoseNet[29]是首個使用深度學習框架來回歸相機位姿的方法,其訓練的卷積神經(jīng)網(wǎng)絡以端到端的方式直接對輸入的RGB圖像進行6自由度相機位姿回歸。通過兩種主要技術來實現(xiàn):①標注:使用SFM構造一個點云模型,基于該模型,自動為訓練照片標注,減輕了人力成本;②在線定位:采用GoogleNet[30]作為骨干網(wǎng)絡,將Softmax分類器替換為回歸器,加入一個全連接層用于最終輸出。其損失函數(shù)定義為位置差異和角度差異的加權歐氏距離:
(1)
傳統(tǒng)的視覺全局定位方法會受光照、時間、天氣等情況變化的影響,而使用深度特征可以保持定位的準確度。但PoseNet[29,31]模型的數(shù)據(jù)標定基于SFM,其精度也受制于實際情況下SFM的精度;且PoseNet過擬合嚴重,缺乏泛化性,在室內外定位誤差相差大,魯棒性差。針對這些問題,學者們相繼提出了改進網(wǎng)絡架構和引入新的約束關系等方法,在下文中予以歸納總結。
部分學者提出在已有模型上加入新的結構單元,以提高性能。如Walch等[32]在CNN輸出上添加長短時記憶(long short-term memory,LSTM)[33]單元,以結構化方式減少特征向量的維數(shù),解決過擬合問題,對具有重復的結構和弱紋理的表面提供較為準確的姿勢估計。由于LSTM所表達記錄的信息有限,Xue等[34]提出了一種使用多視角圖像進行相機重定位的圖神經(jīng)網(wǎng)絡(graph neural network,GNN)[35],該方法重新設計了節(jié)點、邊和嵌入函數(shù),重新設計的GNN與CNN融合,分別用于知識傳播和特征提取,可以使不連續(xù)幀之間進行信息傳遞,能捕獲更多視角信息以進行定位,提高了視覺全局定位的精度,在大規(guī)模和具有挑戰(zhàn)性的場景中具有良好的預測結果。但該方法必須是連續(xù)輸入的數(shù)據(jù)且推理效率低,不適合于非連續(xù)數(shù)據(jù)集。Radwan等[36]在VLocNet[37]模型的基礎上,采用自適應的加權方法,利用運動特定時間信息來提高定位精度,將幾何信息和語義信息嵌入到位姿回歸網(wǎng)絡來提高整個框架的性能,解決了語義分割[38]、相機重定位[39]、視覺里程計3個任務,提高了模型的泛化性,并可實現(xiàn)每個任務的互惠。該方法在具有挑戰(zhàn)性的情景中魯棒性較強,精度較高,但其在模型訓練階段需要稠密的3D模型和語義標注信息。
此外,部分學者提出修改原PoseNet模型的部分結構,以提高定位精度。Melekhov等[40]提出一種Hourglass-Pose模型,將編碼器替換成原始ResNet34網(wǎng)絡,刪去全連接層,進行特征提取。與基于結構的方法相比,該方法不需要任何3D模型;與PoseNet方法相比,該方法可以更好地利用上下文信息,定位精度更高。Naseer等[41]將基本網(wǎng)絡換為VGG16,在第一個全連接層進行分叉,每個分叉包括3個全連接層,同時在全連接層(除最后一層)后面增加dropout層:其中一個分叉預測位置,另一個分叉預測姿態(tài),利用遷移學習的方法來訓練網(wǎng)絡。該方法在定位精度和定位時間上都有較好的提升。Wu等[42]將PoseNet的共享定位器換成了GoogLeNet+Inception的組合,并設計了兩個分支來輸出平移量和旋轉量,降低了平移誤差和旋轉誤差。PoseNet及其改進方法的網(wǎng)絡結構圖總結如表1所示,表中FC代表全連接,Icp代表inception結構。
表1 PoseNet及其改進方法網(wǎng)絡結構圖
損失函數(shù)有助于優(yōu)化神經(jīng)網(wǎng)絡的參數(shù),通過優(yōu)化神經(jīng)網(wǎng)絡的參數(shù)可最大程度地減少神經(jīng)網(wǎng)絡的損失。隨著深度學習的發(fā)展,研究人員提出引入新的約束關系來優(yōu)化損失函數(shù),以提高定位精度。
針對PoseNet損失函數(shù)采用歐氏距離,造成超參數(shù)的訓練難度較大的問題,Kendall等[43]提出了一種不需要任何超參數(shù)調整的訓練算法——引入幾何重投影誤差。幾何重投影誤差是一種編碼了定位和旋轉誤差的損失函數(shù),適用于任意場景幾何信息已知且內參相同的相機模型。Brahmbhatt等[44]提出在絕對位姿誤差的基礎上,使用額外信息設計損失函數(shù),即MapNet深度神經(jīng)網(wǎng)絡。MapNet除了使用圖像外還利用了如視覺里程計[45]和GPS等低成本的輸入,并將它們融合到一起進行相機定位。這些輸入表示傳統(tǒng)上已被用于集束調整或位姿圖優(yōu)化的幾何約束,在MapNet訓練中被設定為損失項,也用于推理過程。MapNet通過加入損失項,直接提高了定位精度,并可以使用來自場景附加的未標記的視頻序列以自監(jiān)督的方式更新MapNet。
Tian等[46]引入了3D場景幾何約束的損失函數(shù)項,設計了一種端到端的相機定位方法,利用運動和圖像內容(包括相對變換、三維信息和像素強度)來學習全局的攝像機定位。該方法使用了光度一致性假設構建了光度差損失項,并搭配了結構相似性(structural similarity,SSIM)損失項[47]和常用的歐氏距離一起作為網(wǎng)絡的損失函數(shù),用3個加權系數(shù)進行尺度均衡。優(yōu)化后的損失函數(shù)融合了運動信息、3D場景幾何信息和圖像內容,訓練過程更高效、定位效果更準確,且在不同場景中都獲得了較好的精度。該方法的流程如圖2所示。其中梯形部分代表位姿預測網(wǎng)絡,輸入圖像經(jīng)此網(wǎng)絡后輸出三維平移和三維旋轉。
圖2 3D場景幾何約束網(wǎng)絡流程
表2顯示了部分視覺全局定位方法在7個場景數(shù)據(jù)集上的定位精度,可以看出,傳統(tǒng)方法絕對定位精度較高,然而隨著深度學習方法的發(fā)展,已不再呈現(xiàn)出明顯的優(yōu)勢。在深度學習方法中,PoseNet作為基線方法,后續(xù)網(wǎng)絡結構變化和約束關系的調整能帶來定位精度的逐步提升。深度學習網(wǎng)絡應用于視覺全局定位,將一張查詢照片輸入到一個訓練好的模型中,通過模型可直接推斷出相機位置,實現(xiàn)一個端到端的自動駕駛視覺定位系統(tǒng),運行效率較高。隨著對深度學習的深入研究,如何搭建神經(jīng)網(wǎng)絡訓練模型以提高定位精度將成為研究熱潮。
表2 部分視覺全局定位方法在7個場景數(shù)據(jù)集上的定位誤差比較
傳統(tǒng)的方法定位精度較好,但缺乏魯棒性和泛化能力;端到端的深度學習視覺全局定位方法具有較好的魯棒性,但定位精度有待提高。自動駕駛場景下,定位系統(tǒng)的魯棒性和精度指標有嚴格的要求,針對此問題,研究人員提出將兩種方法結合,在保障定位精度的同時提高模型的魯棒性。
結合深度學習與傳統(tǒng)方法的視覺全局定位,是使用深度學習代替?zhèn)鹘y(tǒng)方法框架中的部分模塊,模塊化的操作一方面便于對各種傳統(tǒng)方法和深度學習方法進行靈活集成,另一方面,與知識驅動的傳統(tǒng)方法進行融合,能夠提高數(shù)據(jù)驅動的深度學習方法的可解釋性,并使深度學習的不確定性被限定在某個模塊內。
為了解決傳統(tǒng)關鍵點檢測方法易受復雜背景和局部相似性影響,導致描述符匹配不準確的問題。Cui等[48]提出基于跨模態(tài)融合的關鍵點和描述符,并將其應用于相機位姿估計。該方法設計了一種卷積神經(jīng)網(wǎng)絡用于關鍵點檢測和描述符提取。網(wǎng)絡結構主要為編碼器、關鍵點解碼器和描述符解碼器。通過編碼器網(wǎng)絡對輸入的圖像進行處理,降低圖像的維數(shù),生成特征圖;對于關鍵點解碼器,采用局部金字塔卷積模塊[49]來捕獲深度特征,輸出圖像的每個像素代表一個關鍵點的概率;描述符是對關鍵點的特征描述,描述符解碼器首先融合局部金字塔卷積的輸出和全局金字塔卷積的輸出,再融合關鍵點的位置信息的輸出,以避免局部相似性。另外,VS-Net[50]通過訓練神經(jīng)網(wǎng)絡來預測圖像每個像素的場景坐標來構建圖像 2D-3D對應關系,然后使用RANSAC-PnP方法來計算相機位姿。該類方法解決了圖像的局部相似性問題,提高了自動駕駛定位過程的特征描述精度。
為了解決大規(guī)模自動駕駛場景外觀隨時間變化,導致現(xiàn)場查詢圖像和預先錄制的場景圖像之間視覺差異很大的問題,Wang等[51]提出一種基于圖像檢索技術和學習特征的全局定位方法,它包含結構化地圖構建(離線)和視覺全局定位(在線)兩部分。離線階段,基于CNN的特征描述符和塊均值、方差和顏色(block mean,variance,and color,BMVC)描述符提取數(shù)據(jù)庫圖像,構建基于原始數(shù)據(jù)集的地圖。在線階段,使用CNN全局描述符在數(shù)據(jù)庫中檢索與查詢圖像相似的圖像,再使用BMVC來重新排序[52-53]檢索到的圖像候選名單,排名低的候選圖像被過濾掉。最后利用相似性度量算法來確定最終的位姿,選擇相似度最高的姿態(tài)來定位查詢照片。另外,Taira等[52]通過提取局部聚集描述子向量(vector of locally aggregated descriptors,VLAD)的NetVLAD網(wǎng)絡來提取特征,描述查詢圖片和數(shù)據(jù)庫圖片,匹配后得到候選圖像及位姿。這類方法通過一系列圖像描述符進行圖像查詢,具有較高的查詢準確度和效率,有利于自動駕駛場景后續(xù)決策規(guī)劃的效率提高。
由于RANSAC不可微,無法應用到深度學習中,Brachmann[11,54]等提出可微分RANSAC(differentiable RANSAC,DSAC),旨在用概率假說選擇代替確定性假說選擇,使得RANSAC過程可以被求導,并使用深度神經(jīng)網(wǎng)絡和DSAC對場景坐標回歸森林方法[55]進行改造,使神經(jīng)網(wǎng)絡可以對RANSAC過程進行微分訓練。該算法流程如圖3所示:系統(tǒng)輸入RGB圖,首先通過坐標CNN估計像素點的三維坐標,從這些三維坐標中進行多次采樣,生成假說池,對于每個假說,都生成重投影誤差圖,然后通過計分CNN對重投影誤差進行打分,根據(jù)分數(shù)分布概率,選擇一個得分最高的假說進行優(yōu)化,得出最后優(yōu)化過的位姿。該類方法采用了對假設模型打分的CNN網(wǎng)絡,通過深度學習的方式[56]改進傳統(tǒng)方法的位姿估計,提高了預測的精度。
圖3 DSAC模型[10]流程
從表2可以看出,混合定位方法整體上比傳統(tǒng)方法和端到端深度學習方法呈現(xiàn)出接近1個數(shù)量級的位置精度和角度精度,尤其是VS-Net在角度精度呈現(xiàn)最優(yōu)。隨著深度學習的發(fā)展,會有更多“局部最優(yōu)”的方法出現(xiàn),如何利用這種“局部最優(yōu)”來達到“全局最優(yōu)”,將成為未來研究的熱門方向。
基于視覺的自動駕駛車輛全局定位目前存在的挑戰(zhàn),主要包括如下幾個方面:
1)真值的獲?。涸紨?shù)據(jù)集的采集較為昂貴;
2)對變化場景的識別效果:當場景的光照、時間、天氣等情況發(fā)生變化時,現(xiàn)有的技術仍很難獲得較為精確的姿態(tài)估計;
3)模型的泛化能力:基于視覺的位姿估計算法依賴于提取到的特征,對于數(shù)據(jù)集中很少出現(xiàn)的情況表現(xiàn)較差;
4)計算的復雜程度:位姿估計需要利用圖像的空間與時間信息,計算量大,復雜程度高;
5)資源的消耗:隨著移動設備應用的廣泛發(fā)展,推理時間和內存占用已成為目前算法發(fā)展的瓶頸,輕量化的姿態(tài)估計方法也成為新的發(fā)展需求。
位姿估計是自動駕駛中的關鍵技術,本文主要介紹了利用視覺全局定位估計位姿的方法。按照構建方式不同,將其分為傳統(tǒng)的、基于深度學習的和將兩者結合的,并詳細介紹了其中的代表性方法及其優(yōu)缺點。傳統(tǒng)的定位方法精度高,但建圖和定位的效率較低,且在重復紋理的場景容易失效;基于深度學習的端到端的定位方法僅需要圖像數(shù)據(jù)源和真值,方法簡單,但目前精度較低,僅能定位到厘米級;而將兩者結合的方法模型相對復雜,可達到傳統(tǒng)方法的精度,同時泛化性較強。經(jīng)過多年發(fā)展,各類視覺全局定位方法取得了許多進步,能夠勝任更加復雜的任務。