一種面向自動駕駛汽車定位的基于深度神經網絡的大尺度建圖方法
2021年9月17日 09:17 瀏覽:2579
編者按:
占用柵格地圖是無人駕駛汽車的定位和規劃模塊所需的重要輸入。深度神經網絡亦是近年來智能駕駛研究的一大熱點。所推薦的這篇文章借助深度神經網絡生成滿足無人駕駛汽車需求的占用柵格地圖,并提供豐富的視頻材料證明了所提出方法能被成功用于實車無人駕駛。
摘要:
本文提出了一種使用名為NeuralMapper的深度神經網絡實時創建自動駕駛汽車所需占用地圖的新方法。NeuralMapper接收LiDAR傳感器數據作為輸入,并生成汽車周圍的占用柵格地圖作為輸出。NeuralMapper推算每個柵格地圖單元格作為以下三個類別之一的概率:占用、空閑和未知。該系統在兩個數據集上進行了測試,平均準確率分別為76.48%和73.81%。本文還使用自動駕駛汽車評估了所提出方法用于定位的效果,大多數定位位姿誤差小于0.20m,RMSE 為0.28m,這與其他文獻中使用其他柵格地圖建立方法的結果接近。
在過去的二十年里,自動駕駛汽車取得了長足的進步。2004年,美國國防高級研究計劃局(DARPA)發起了第一次自動駕駛汽車競賽,目標是在沒有人為干預的情況下穿越莫哈韋沙漠[1]——在這場比賽中,沒有一個參賽者實現了目標。在第一次嘗試之后,DARPA在2005年和2007年推動了另外兩項競賽,分別有5輛和6輛汽車完成了提出的挑戰。這些事件極大促進了自動駕駛汽車的發展,推動了自動駕駛汽車在今天成為現實。谷歌、沃爾沃和優步等公司正在全球多個城市進行試驗,向公眾提供自動駕駛服務。
盡管在該領域已經取得了巨大進步,但今天的自動駕駛汽車仍然無法準確應對日常城市交通中遇到的所有情況和天氣條件。出于這個原因,世界各地的大學和研究中心都在進行研究,以改進這項技術并提高自動駕駛汽車的自主水平。
IARA(智能自主機器人汽車)自動駕駛汽車,如圖2所示,自2009年以來一直由圣埃斯皮里托聯邦大學(Universidade Federal do Espírito Santo – UFES, Brazil)的高性能計算實驗室(Laboratório de Computa??o de Alto Desempenho - LCAD)開發。IARA以福特Escape Hybrid為基礎,采用了各種傳感器和處理單元。其自主系統遵循自動駕駛汽車的典型架構[2],由多個子系統組成,其中包括建圖器[3]、定位器[4]、動態障礙物跟蹤器[5]、交通標志檢測器[6][7]、路線規劃器、路徑規劃器、行為選擇器、運動規劃器[8]、避障器[9]和控制器[10]等。IARA 使用的地圖由LiDAR點云通過在線和離線建圖方式生成。考慮到LiDAR測量值可能因環境條件(例如下雨、落葉、反射面不平整)或傳感器本身噪聲引起的測量誤差而不準確,因此建圖系統不能完全依賴LiDAR直接測量的距離和位置。因此,對于建圖,有必要使用考慮所有這些不確定性的技術來嘗試盡可能多地過濾傳感器誤差。
目前IARA中使用的算法旨在通過LiDAR傳感器每次新測量值來更新區塊占用的概率。為此,基于貝葉斯濾波器的占用柵格地圖(OGM)算法[3]被應用于逐漸增加或減少柵格地圖每個單元格的占用置信度。然而,這種方法對于遠距離的目標不是很準確。此外,因為所使用的OGM算法沒有考慮空間不連續性,有必要使用算法來推斷任何傳感器均不能觀測到的單元格的占用情況。此外,建圖算法需要處理數千行代碼中的幾種特殊情況,以找到正確提取傳感器測量數據特征的最佳方法[3]。
圖1 NeuralMapper架構概述。左側的輸入顯示了LiDAR點云原始數據。NeuralMapper將地面上的原始數據投影為一組2D統計圖。統計圖經過編碼器、Context Module和解碼器進行處理,以生成占用柵格地圖作為輸出。在地圖中,未知單元格為藍色,空閑單元格為白色,占用單元格為黑色。
受IARA建圖方法的這些局限性以及深度學習的進步的啟發,本文提出了一種基于深度神經網絡(DNN)的占用柵格地圖實時推斷新方法,名為NeuralMapper。NeuralMapper是IARA自主軟件架構的一個子系統,它接收LiDAR傳感器數據作為輸入,并生成汽車周圍的占用柵格地圖作為輸出。在NeuralMapper中,每個LiDAR點云在LiDAR參考系中從球面坐標轉換為二維笛卡爾坐標。然后,使用這些數據的統計數據從2D LiDAR數據中計算出五個矩陣(NeuralMapper的輸入數據遵循Caltagirone等人[11]采用的數據形式)。這五個矩陣組合成一個五通道張量,用作NeuralMapper DNN的輸入。所考慮的統計數據是落入汽車周圍柵格地圖的一個單元格的激光射線的數量,以及單元格中的被射線所擊中的障礙物高度的最大值、最小值、平均值和標準偏差。
網絡的輸出是一個占用柵格地圖,它具有與每個柵格地圖單元三個可能類別中每一個的相應概率:未知、空閑或已占用。該地圖被轉換至汽車參考系并發布到其他IARA的子系統(見圖2)。NeuralMapper的框圖如圖1所示。
本文使用IARA采集實車數據評估了NeuralMapper。該系統使用IARA傳感器數據構建的兩個數據集進行了測試,第一個數據集的平均準確率為76.48%,第二個數據集的平均準確率為73.81%。本文還通過IARA評估了使用NeuralMapper地圖進行定位,大多數IARA的定位誤差小于0.2m,RMSE為0.28m。這些結果與其他文獻中使用其他柵格地圖建立方法的結果接近。
以下部分將通過文獻綜述和借助IARA的實車實驗來評估該方法的能力。
文獻中提出了幾種技術,這些技術使用神經網絡和從傳感器(如激光雷達、雷達、聲納等)獲取的點云數據。這些傳感器的數據用于多種用途,例如構建占用柵格地圖、定位和3D點云語義分割。
桑托斯等人[12]提出了一種系統,該系統使用安裝在機器人周圍的超聲波傳感器數據作為前饋神經網絡的輸入,該網絡確定機器人周圍的單元格是空閑還是被占用。這項工作僅處理環境先驗地圖骨架中單元格的占用情況。
古普塔等人[13]建議使用聲納傳感器提供的數據創建占用柵格地圖。傳感器的測量值被轉換為環境的概率表示,描述網格單元是空的、被占用的還是未知區域。由于環境的變化會影響轉換,因此使用神經網絡來學習這些轉換,使傳感器數據更能適應變化。
韋斯頓等人[14]提出了一種使用原始雷達(radar)數據和LiDAR數據通過DNN創建占用柵格地圖的技術。雷達傳感器能夠檢測遠距離和部分被遮擋的物體,并且比LiDAR便宜,但眾所周知,由于存在多種相關噪聲偽影,雷達掃描難以解釋,而LiDAR系統提供精確、細粒度的測量。DNN使用由LiDAR數據生成的部分占用標簽進行訓練,并在動態城市環境中根據5小時的記錄數據進行評估。
吳等人[15]提出了SqueezeSeg,這是一種CNN(卷積神經網絡),用于對來自LiDAR點云的道路對象(例如汽車、行人和騎自行車者)進行語義分割。
CNN使用來自KITTI數據集[16]標記好的LiDAR點云和來自高保真游戲引擎的模擬LiDAR的數據進行訓練。SqueezeSeg的輸入是點云,輸出是由條件隨機場 (CRF) 細化的逐點標簽圖。每個點云的處理時間為8.7毫秒。Aksoy等人提出的SalsaNet[17]也是一個神經網絡,它直接從LiDAR點云中分割出可供駕駛的自由空間和車輛。訓練過程使用KITTI數據集[16],但它不提供可供駕駛的自由空間標簽,因此他們提出了一個自動系統,使用神經網絡MultiNet[18]在點云中對其進行標注。然后點云表示為4D鳥瞰圖,其中包含有關最大和最小高度、反射率和投影點數量的信息。該圖像用作訓練DNN的輸入。SalsaNet結果顯示平均IoU為79.74%,而SqueezeSeg結果顯示平均IoU為69.80%。
卡爾塔吉隆等[11]提出了一種僅使用LiDAR數據檢測道路的神經網絡方法。
DNN的輸入是LiDAR的頂視圖圖像,其中點以灰度表示,代表平均海拔和密度。然后使用KITTI數據集[16]訓練一個快速的全卷積神經網絡(FCN),能夠以94.15% 的精度檢測道路。這項工作中采用的DNN架構基于文獻[11]中使用的完全卷積神經網絡,但目的和數據集不同。
首先,應該注意OGM是用于推斷地圖上每個單元格的占用概率。每個單元格的占用概率可以假設為一個介于0和1之間的連續值,因此可以用來將單元格分類為空閑或已占用單元格。
NeuralMapper(圖1)是一個子系統,它接收IARA的LiDAR傳感器數據作為輸入,并生成汽車周圍的占用柵格地圖作為輸出。NeuralMapper的輸入數據遵循Caltagirone等人[11]所使用格式。首先,每個LiDAR點云在LiDAR參考系中從球面坐標轉換為二維笛卡爾坐標。同Caltagirone等人[11]一樣,從二維坐標矩陣計算五個統計矩陣,并在0和1之間進行歸一化。這五個歸一化統計矩陣組合成一個五通道張量,用作網絡的輸入。所考慮的統計數據是落入單元格的激光射線數量、最大/最小/平均/標準高度。
為了使FCN[11]輸出適應IARA的地圖,確定網絡應返回三個類別的概率圖:Occupied、Free和Unknown。因此,神經網絡將使輸出結果與IARA子系統中廣泛采用的概率方法兼容(圖1)。
通過這種方式,網絡的輸出是一個占用柵格地圖,每個輸出神經元(單元格)三個類中的每一個都具有相應的概率。該地圖被轉換至汽車參考系并發布到其他IARA的子系統。輸出神經元概率按照如下規則轉換為占用概率。如果最可能的類別是Unknown,則地圖單元格接收值-1,否則類別Unknown的概率為零,并且其他兩個類別的概率被歸一化,使兩者之和等于1。該代碼作為IARA的模塊可在https://github.com/LCAD-UFES/carmen_lcad獲得。
圖1顯示了FCN的一般架構,它分為三大層,稱為編碼器、Context Module和解碼器。
編碼器接收輸入并減少輸入數據的大小,嘗試最大程度地減少信息丟失。為此,兩個普通卷積層被使用,它們有3x3大小的卷積核以及使用指數線性單元(ELU)激活函數且步長為1和32的特征映射[19],然后是一個卷積核為2x2步長為 2的最大池化層。
Context Module主要由擴展的卷積層構成。擴展卷積能夠增加卷積濾波器的感受野,以增加推斷連續地圖單元之間連續性的能力。對于障礙物建圖,傳感器讀數在長距離上存在許多不連續性。因此,應用擴展來預測障礙物在更遠的地方的延續很有意義,在那里傳感器不再非常有效。有8個具有 ELU 激活函數、3x3 卷積核和128個特征圖的擴展卷積層。這些層的擴展逐漸增加,因此在最后一層有32x64的擴張。與Caltagirone等人[11]提出的工作不同,本文確定輸出地圖為正方形,范圍為汽車周圍60米。因此,每一層使用的擴展具有相同的量級(例如,最后一層具有64x64的膨脹)。
解碼器是架構的最后一部分,神經網絡處理過的數據通過去池化操作恢復其原始維度。所使用的去池化實現形式[11]保存了在最大池化層中提取的最大值的位置,以便在相同的位置再次插入這些值,同時將其他值設置為零。解碼器繼續使用另外兩個具有3x3卷積核、步長為1、具有32個特征映射的普通卷積層和具有3個通道輸出的最后一層。最后,特征圖進入一個log softmax層,它返回一個多維圖輸出,其中每個維度是每個類的對數概率。因此,如第III.A節所述,通過比較網絡輸出中每個單元的這三個類中的每一個的概率來構建占用圖。
本節介紹了用于評估所提出系統的方法。首先,描述了實驗中使用的數據集,然后是訓練神經網絡的超參數和程序。之后,本文提出了為定位生成真值的方法以及用于評估神經網絡性能和定位精度的指標。
訓練深度神經網絡需要大型數據集。首先,可以通過手動標記地圖單元格或使用平面圖來創建數據集。不過,成本較低的解決方案是借助IARA的離線地圖系統從傳感器數據日志生成輸入和輸出對。日志中的所有數據都用于生成環境的 OGM。然后,對于每個LiDAR點云,本文在OGM中裁剪一個以汽車姿態為中心、半徑為60m的圓。該裁剪圓被定義為LiDAR點云的輸出。
每個單元格考慮三個類:未知、已占用和空閑。由于OGM是概率性的,本文使用軟標簽而不是獨熱編碼(one-hot encoding)。每個類別的概率由單元格的占用概率給出。圖4說明了一個點云及其相關的輸出。使用離線地圖代替在線OGM的優點如下。首先,由于集成了多個瞬時地圖,因此更準確。其次,它提供了更多的占用信息,使神經網絡能夠學習如何填充傳感器未觀察到的區域。
實驗中使用了從傳感器數據日志生成的兩個數據集。這些數據集將被稱為數據集1和數據集2。數據集記錄在相同的環境中,即3.5公里的UFES環城公路,并分成三個不相交的區域,如圖3所示。
圖3 UFES環城公路地圖。綠色、橙色和紅色分別顯示了訓練、驗證和測試集區域
圖4 上圖是最大高度統計圖,是NeuralMapper的五個輸入之一,下圖是相應真值。兩個圖像都經過標準化以進行可視化
數據集1中的區域用于訓練、驗證和測試神經網絡,而數據集2中的所有區域用于測試。請注意,在兩個數據集中選擇了相同的區域,并且數據集2中的區域之一對應于用于訓練神經網絡的相同區域。
數據集1是從2016年3月26日黎明收集的日志中提取的。數據集1具有1445次掃描和數據增強后(詳細信息在下一節中介紹)共計7228 個樣本,這些樣本分為74%的訓練集、10%的驗證集和16%的測試集。日志是在黎明時記錄的,以盡量減少移動物體的存在。數據集2是從2019年3月10日記錄的日志中提取的。由于日志是在用于構建數據集1的日志三年后捕獲的,因此隨著時間的推移,它呈現出不同的特征,例如植被生長、新建筑物和道路變化。數據集2也有 1445次掃描和7228個帶有數據集增強的樣本。
車輛每行駛兩米就會生成輸入和輸出對,以防止網絡不同區域的數據不平衡。通過這樣做,數據庫不再有模擬日志中汽車移動較慢的區域的信息。
DNN 輸入由五個關于汽車周圍點高度的統計圖組成。這些統計圖由一個浮點張量表示,其中每個單元格代表一個20x20平方厘米的環境。汽車始終位于地圖的中心。激光觀察到的每個單元格都會存儲最大高度、最小高度、平均高度、高度標準偏差和點數。為此,首先將云中的點進行坐標轉換,從球面坐標轉換為笛卡爾坐標。然后,位于同一單元格的點被分組并用于計算統計數據。最后,這五個統計維度(最大、最小高度、標準偏差和點數)在0和1之間歸一化,并用作網絡的輸入。
為了對地圖進行標準化,在使用高度的統計地圖的情況下,上限值是LIDAR的高度位置(在本文案例中為1.86米),對于點數,計算了一個單元格內的最大可能點數(在本文案例中為64)。地圖的單元格被初始化為-1,這是最小值。
從圖4中可以看出,每張圖像中障礙單元格的像素數遠小于自由和未知單元格。這種現象導致網絡傾向于選擇最后兩個類別而不是第一個類別。為了避免這種情況,使用了與每批中類的像素數成反比的權重,在計算誤差時損失函數乘以權重。這種與不太頻繁的類別相關的誤差“評估”補償了它們之間的不平衡[20]。
對于數據增強[21],本文對所有訓練圖像應用水平翻轉和每個方向90度旋轉,這將數據集增加了3倍。根據Caltagirone等人的工作[11]選擇交叉熵損失函數和 ELU 激活函數,此外還有25%的去除率 神經網絡訓練了50個epoch,初始學習率為0.0005,每15個epoch的學習衰減率為 0.5。訓練是在12GB Nvidia Tesla K40 GPU上進行的。
定位是自動駕駛汽車導航的重要任務。生成用于評估定位的真值非常具有挑戰性。一個簡單的想法是使用GPS與定位估計進行比較。然而,雖然全球一致,但GPS數據具有大量噪聲,并且GPS測量值不一定與地圖一致。
本文生成定位真值的方法類似于文獻[4]、[22]和[23]中采用的方法。本文使用文獻[3]中描述的GraphSLAM技術,使用來自GPS、里程計和LiDAR(用于處理閉環)的數據來估計車輛的位姿。然后,這些位姿用于使用NeuralMapper構建離線地圖,之后定位模塊用于估計車輛相對于NeuralMapper的位姿。在GraphSLAM優化的第二步中獲得位姿真值。在優化的第二步中,除了來自 GPS、里程計和LiDAR(閉環)的數據外,定位模塊輸出還用作該方法的輸入。通過這樣做,本文鼓勵在使用傳感器數據糾正局部定位錯誤的同時與地圖保持一致。
評估訓練模型的指標是DNN輸出中類別的平均準確率。為每個單元格預測的類別與真值進行比較,并在等式(1)中定義:
其中VP是正確預測類別的單元格總數,TOTAL是數據庫中的單元格總數VP和TOTAL考慮數據庫中的所有圖像。
在測試期間用于分析結果的另一個指標是混淆矩陣。每個矩陣行代表類別真值,而列代表網絡的預測。因此,可以在視覺上檢查預測更好或更差的類別。混淆矩陣的值都是每個類別總數的百分比,所有行的總和為每個類別的100%。矩陣的對角線代表網絡關于真值的正確性。
此外,本文在自主導航模式下的真實世界環境中,對使用DNN和IARA自動駕駛汽車生成的離線地圖進行了定性評估。
用于評估定位的指標與文獻[22]和[23]中使用的相同。使用定位估計的位姿
與第IV.C節中描述的獲得的位姿真值
進行了比較。選擇的評價指標是由方程(2)給出的均方根誤差(RMSE):
其中??是與傳感器數據相關的估計位姿數,下標??和??表示位姿的各自坐標。
本文還提供了誤差的標準偏差以及定位誤差小于閾值的樣本百分比。考慮的閾值是0.2m、0.5m、1.0m和2.0m。
為了評估NeuralMapper的性能,本文使用數據集1對DNN進行了50次訓練。本文的模型在驗證集上達到了76.5%的準確率,在訓練集上達到了0.25的損失。圖5顯示了每個訓練時期的訓練損失和驗證準確率。
圖5 每次訓練后的訓練損失(藍色)和驗證集的準確性(橙色)
使用來自數據集1的測試集,該模型實現了76.48%的平均準確率。表I顯示了這個測試集的混淆矩陣。它表明該網絡在對被占用單元格進行分類時不太準確,因為它僅正確分類了62.20%的樣本。該網絡對未知單元格的準確率為80%,對空閑單元格的準確率為73.45%。
表II顯示了數據集2的測試區域的混淆矩陣。觀察到測試區域與數據集1相同,但在不同的日期。結果顯示被占用單元格誤差增加,但該數據集的總平均準確度為73.81%。由于不同的車道、瀝青和鵝卵石以及不同的海拔高度,測試區域具有挑戰性。這可以從表III中給出的結果中看出,該結果顯示了考慮數據集2中的所有區域(即數據集1中的訓練、驗證和測試區域)時的模型混淆矩陣。其達到的準確率為76.90%,這也顯示了模型的泛化能力。
盡管測試顯示占用類的準確率較低,但對預測的定性分析表明,該網絡在道路上是準確的,并且大多數錯誤發生在外部區域。圖6通過展示神經網絡預測和真值之間的比較來說明這一事實。由于大多數激光讀數集中在中心,因此預計外部區域的誤差會在一定程度上出現。
需要注意的是,真值考慮了各種LIDAR的掃描,因為它是使用OGM生成的。這也使得為分割問題選擇一個好的評價指標變得很重要。圖6和圖7比較了NeuralMapper的輸出和來自單幀LiDAR掃描的概率占用柵格地圖。
圖6 上圖是NeuralMapper的輸出,而下圖是相應的真值
圖7 上圖是來自單幀LIDAR掃描的概率占用柵格地圖。下圖是相應的離線地圖,也用作NeuralMapper的真值
離線地圖的主要用途是用于定位。因此,本文還評估是否可以使用NeuralMapper來估計自動駕駛汽車的定位。對于此評估,NeuralMapper和數據集1用于構建OGM,數據集2用于測試定位。圖8顯示了由IARA的定位技術[4] 實現的累積分布函數(CDF)圖。92.8%的樣本姿態誤差小于0.5m,40.26%的樣本姿態誤差小于0.2m。表IV列出了匯總的指標。定位實現了0.28m的 RMSE,標準偏差為0.017m。這些結果等同于使用其他類型柵格地圖的文獻[4][22][23],它們表明NeuralMapper可以成功地用于估計自動駕駛汽車的定位。
本文通過使用IARA的自主模式導航平臺來驗證這些結果。視頻(http://tiny.cc/9gqejz)展示了IARA的系統使用NeuralMapper進行定位和規劃。規劃模塊接收地圖作為輸入,該地圖是通過將來自NeuralMapper的信息與LiDAR捕獲的瞬時數據合并而獲得的。在整個實驗過程中,汽車設法導航并保持在正確的車道內。它還成功地應對了移動障礙。該結果表明NeuralMapper可用于定位和規劃。
在部分視頻中可以觀察到汽車軌跡中的一些輕微振蕩。這些振蕩可以通過運動規劃器模塊[8]的內部工作原理來解釋。它依賴于精確的定位,以將汽車保持在計劃的路徑上,它的作用是補償計劃和執行軌跡中的不一致。如表4所示,在某些情況下,定位誤差大于地圖單元格(即 0.2m x 0.2m)。因此,由于這些錯誤,規劃模塊可能會采取行動來補償軌跡中錯誤識別的不一致,這會導致IARA所遵循的路徑中的振蕩。
這項工作的主要動機是用神經網絡替換占用柵格地圖(OGM)算法,因為它們能夠直接從數據中學習如何處理非線性,并且有可能減少數百行代碼。
OGM中通常出現的空間不連續性表明,神經網絡有潛力執行比概率映射更好的結果。這是因為當前使用的貝葉斯映射盡管暫時過濾了單元格中的噪聲,但并未使用來自相鄰空間的信息來估計占用概論。但是,可以合理地相信,對于普通物體,如果一個物體周圍的所有單元都被占用,那么該物體也將被占用。另一方面,這種空間連續性自然嵌入在卷積神經網絡中。
正如結果所示,即使語義地圖結果看起來不如必要的準確,但鑒于汽車周圍局部結構的保留,它們足以用于定位,并且也可以通過定位RMSE評價指標來確認。此外,定性結果顯示IARA能夠使用NeuralMapper以自主模式運行。通過這種方式,當前的OGM算法可以被深度神經網絡取代,該網絡使用示例來學習任務。
此外,本文的方法可以與其他類型的柵格圖一起使用,例如反射率、顏色和多對象語義柵格圖,在這些情況下,允許在DNN輸入中包含更多信息。
在未來的工作中,必須在更大的數據集和使用幾何變換并最小化預處理的不同架構上進行實驗。
《A Large-Scale Mapping Method Based on Deep Neural Networks Applied to Self-Driving Car Localization》
2020 International Joint Conference on Neural Networks (IJCNN), 2020
Vinicius B. Cardoso, André Seidel Oliveira, Avelino Forechi, Pedro Azevedo, Filipe Mutz
https://ieeexplore.ieee.org/abstract/document/9207449
參考文獻
技術鄰APP
工程師必備