模型实践 | 高精地图构建模型HDMapNet助力更精准的自动驾驶
實驗 | Freja? ?算力支持 | 幻方AIHPC
高精地圖是自動駕駛系統的關鍵模塊,可以有效提升自動駕駛汽車的行駛安全度,強化自動駕駛系統的整體感知能力和決策能力。然而傳統的高精地圖構建流程復雜,需要消耗大量的資源和人力,導致其擴展性和實時性無法滿足自動駕駛的使用需求。
CVPR 2021 Workshop 最佳論文提名的一篇文章 HDMapNet,來自清華大學交叉信息院 MARS Lab,提出了一個使用深度神經網絡實時構建局部高精地圖的思路,該方法是從傳統的高精地圖構建流程轉向端到端方法的關鍵工作。
幻方AI最近對這項工作進行了整理和優化,在幻方螢火二號上復現了實驗。通過幻方自研的?3FS、hfreduce、算子,對模型訓練進行提速,整合代碼、簡化接口,融入hfai數據倉庫和模型倉庫中,幫助研究者和開發者們降低使用門檻。本期文章將為大家詳細描述。
模型介紹
1 高精地圖?
高精地圖分為影像地圖和語義地圖,自動駕駛使用的通常是高精地圖的語義地圖部分,因此本文的高精地圖特指高精語義地圖。高精地圖是車道級別、厘米精度的道路網絡和交通信息地圖,包括且不限于如下標注信息:
-
厘米級車道邊線和中心線幾何信息
-
車道線類型(白虛線/白實線/黃虛線/黃實線)
-
車道線類(高速/城市道路/自行車道)
-
交通信息(紅綠燈/限速)
高精地圖作為自動駕駛汽車的高精度“記憶”模塊,是自動駕駛決策的關鍵依據,離開了“記憶”,無論眼睛(攝像頭和雷達)和思考(控制決策系統)有多么發達,都無法對事件有全局的把控。高精地圖為自動駕駛系統提供了:
-
厘米精度的定位
-
超過相機視野的地圖記憶
-
反應當前路況的實時信息
2?傳統高精地圖構建流程?
構建傳統的高精地圖需要經過一系列流程:
使用車輛到道路上采集信息,需要大量的人力和車輛資源。
將收集到的數據進行處理,包括點云拼接、地圖生產等。
對點云中的信息進行識別,例如道路、車速牌等。
人工驗證識別結果的準確性,確定最終的標注。
構建完成后還需要定時進行更新維護,以適應不斷變化的路況信息,這樣繁雜的流程需要消耗大量的資源和人力,導致其擴展性和實時性無法滿足自動駕駛系統的使用需求。
3?HDMapNet?
HDMapNet 提出了一種使用車載傳感器(相機、雷達)來動態構建局部高精地圖的方法,主要創新點如下:
將高精地圖使用向量化的方法進行表示,包括:
▲語義分割向量化:使用三個類別表示道路邊緣、道路分割線、斑馬線三類線段
▲實例分割向量化:使用不同的編號標識不同的線段
▲方向識別向量化:使用 36 個集合表示 360 度的道路方向
使用深度神經網絡學習從相機前視圖到鳥瞰視圖的轉換
HDMapNet 的整體網絡結構如上,輸入為 RGB 圖片或者雷達點云,兩種輸入可以單獨使用,也可以同時使用,實驗結果表示,RGB 圖片和雷達點云同時使用時能達到最佳性能。
RGB 圖片通過基于 EfficientNet 的圖像編碼器進行編碼,如下面圖中所示,本車周圍六個方向均勻放置了六個相機,在每一個時刻,將六個相機獲得的 RGB 圖片編碼成六個前視圖的隱含表征。視角變換步驟(Neural view transformation)利用相機外參,將前視圖的隱含表征轉換到鳥瞰圖的隱含表征,如下面圖片的中間步驟到右邊步驟的對應關系。最后使用鳥瞰圖解碼器從鳥瞰圖的隱含表征中解碼得到最終的鳥瞰圖表示。
雷達點云先進行像素化,再通過點云網絡得到鳥瞰圖的隱含表征,最后通過鳥瞰圖解碼器解碼得到最終的鳥瞰圖表示。
將 RGB 輸入和雷達點云輸入處理得到鳥瞰圖表示后,HDMapNet 使用三個分支:
-
語義分割預測:預測鳥瞰視角下,道路邊緣、道路分割線、斑馬線三個類別,使用二元交叉熵作為損失函數。
-
實例分割預測:用不同編號標識不同線段,使用 DiscriminativeLoss 作為損失函數。
-
道路方向預測:用 36 類分別代表 360 度的道路方向,使用二元交叉熵作為損失函數。
模型實踐
幻方 AI 基于 lift-splat-shoot 復現了 HDMapNet,再基于 HDMapNet 開源代碼 進行修正,采用幻方一系列優化工具進行提速升級,包括 hfreduce 并行訓練、hfai 數據集接入、hfai 集群訓練斷點掛起等功能。
1?數據集?
HDMapNet 使用 NuScenes 數據集進行試驗,NuScenes 數據集是第一個提供自動汽車全套傳感器數據的大型數據集,包括了6個相機、1個激光雷達、5個毫米波雷達、以及GPS 和 IMU。與另一個常用的自動駕駛領域 KITTI 數據集相比,其包含的對象注釋多了7倍多。
這里幻方 AI 將 NuScenes 數據集進行處理,將原始數據集轉換成 ffrecord 的格式,用戶調用簡單的接口便可以加載高性能的 dataloader 進行模型訓練。具體如下示例:
from hfai.datasets import NuScenesdataset = NuScenes(split='train') loader = dataset.loader(batch_size=64, num_workers=4) for data_dict in loader:# training model ...僅僅需要上述 4 行代碼,我們便可以獲得如下格式的 NuScenes 數據集:
2?模型訓練?
螢火二號提供了統一的訓練管理平臺,可以將大量的訓練任務依據優先級負載均衡到不同的GPU上執行,充分利用起計算算力。我們只需加入如下幾行代碼,便可以提交訓練任務。
1. 登錄幻方螢火二號,引入hfai
2.?初始化 hfreduce 分布式參數
3. 對于每一輪訓練,加入接收集群調度的邏輯代碼,并做好模型 checkpoint 的保存
3?訓練結果?
我們申請 4 個節點,32 張顯卡進行并行訓練。通過hfai命令行工具提交任務,訓練效果如下圖所示:
在螢火二號上訓練 HDMapNet,每個 Epoch 耗時僅 5 分鐘左右,相比單卡性能提升了 32 倍以上。GPU 利用率在 95% 左右,充分利用其了 A100 的計算性能。模型在第 24 輪基本達到了收斂狀態。
訓練效果可視化如下:
▲可視化效果1:
▲可視化效果2:
體驗總結
HDMapNet 新穎地提出了使用深度神經網絡構建局部高精地圖的方法,減少了傳統構建方法耗費大量人力和資源的問題、增加了高精地圖的可擴展性和實時性,有助于構建更加智能的自動駕駛系統。幻方 AI 對 HDMapNet 的實驗進行了復現,借助螢火二號對 HDMapNet 的訓練進行了優化,最終達到了超過單卡 32 倍的訓練速度。
體驗打分總結如下:
01?? 研究指數??★★★★
? 該模型以低成本、端到端的方法實時構建局部高精地圖,是自動駕駛領域的重要課題。
02???開源指數??★★★★★
? 數據處理和代碼都已經開源,代碼邏輯清晰、可讀性高。
03??? 門檻指數??★★★
? 數據量、模型大小中等,普通高性能單卡即可運行。
04??? 通用指數??★★
? 該方法是基于神經網絡構建高精地圖方法的早期工作,地圖豐富度、定位精度、預測性能有待提升。
05? ? 適配指數??★★★★★
? 依賴簡單,很容易與幻方AI的訓練優化工具結合,提效明顯。
附錄
論文標題:
HDMapNet: An Online HD Map Construction and Evaluation Framework
原文地址:
https://arxiv.org/abs/2107.06307
項目主頁:
https://tsinghua-mars-lab.github.io/HDMapNet
模型倉庫:
https://github.com/HFAiLab/hdmapnet
點擊下方鏈接,幻方AI BLOG更多干貨奉上
幻方 | 技術博客
總結
以上是生活随笔為你收集整理的模型实践 | 高精地图构建模型HDMapNet助力更精准的自动驾驶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 药学【1】
- 下一篇: Java实现短信验证码(阿里云短信服务)