久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

專欄中心

EEPW首頁 > 專欄 > 地平線 Sparse 多任務參考算法 SparseBevFusionMultitaskOE-V1.0

地平線 Sparse 多任務參考算法 SparseBevFusionMultitaskOE-V1.0

發布人:地平線開發者 時間:2026-03-15 來源:工程師 發布文章

該示例為參考算法,僅作為在征程 6 上模型部署的設計參考,非量產算法

1.簡介

SparseBevFusionMultitaskOE 模型是一個 bev 多任務感知模型,包含感知三大任務的檢測頭:sparse 動態檢測頭,sparse 靜態元素檢測頭和通用障礙物檢測頭。整體的模型結構如下:

sparse bev 類模型主要思路是通過關鍵點投影回 camera 空間采樣并進行預測。因此對于多任務模型來說,不同 task 之間可以共用的是 img_encoder 的 backbone 和 neck 部分,同時加入輔助分支 densedepthnet 用于輔助訓練,部署時不需要。動態檢測、靜態要素檢測和占用格預測任務可以分別抽象為三個 head:detection head(det head)、onlinemapping head(om head)和 occupancy head(occ head)。在模型的選擇上,我們選取了參考算法已集成的,也是較主流的模型-sparse4d、maptr、flashocc,在征程 6 上部署的效果更好。

2.性能精度指標

2.jpg

注:flashocc 掉點為分辨率降低導致;sparse 動態目標檢測掉點會在后續版本中優化。

3.地平線部署說明

image.png

sparse 多任務模型的每個 head 是基于公版模型做了優化后部署的,以下為模型相較于公版的改動點:

詳細可以參考地平線開發者社區官網單任務模型的參考文檔的改動說明章節:

地平線靜態目標檢測 MapTR 參考算法-V2.0

地平線 3D 目標檢測 bev_sparse 參考算法-V2.0

地平線占用預測 FlashOcc 參考算法-V1.0

3.1 訓練策略3.1.1 浮點訓練(一)數據結構說明

參考算法已有的三個單任務模型都是基于 nuscenes 數據集的,它同時包含三個任務的標注數據。其中 dataset 使用 NuscenesSparseMapDataset,包含了地圖相關的標注。

NuscenesSparseMapDataset 繼承自 NuscenesMapDataset 和 NuscenesBevDataset,同時含有動態、靜態和 occ 的標注。因此多任務模型選用 NuscenesSparseMapDataset 作為數據集,可以同時對動態、靜態和 occ 任務一起監督訓練;動態檢測頭用到了時序信息,所以 data_loader 采用了 DistStreamBatchSampler,確保數據按時序返回。

訓練集和測試集的處理流程見:hat/data/datasets/nuscenes_map_dataset.py

(二)訓練架構

HAT 使用的是注冊機制,模型結構和參數在 config(configs/bev/bev_sparse_det_maptr_flashocc_henet_tinym_nuscenes.py)中通過 dict 定義,在 config 中構建多個 head 的 dict,然后通過配置 enable_xx_head 參數選擇需要合入的任務。

4.png

Plain體驗AI代碼助手代碼解讀復制代碼det_head = dict(     type="SparseBEVOEHead",     enable_dn=True,     level_index=[2],     cls_threshold_to_reg=0.05,     instance_bank=dict(         type="MemoryBankOE",     ...   )

構建一個 OrderedDict,通過標識選擇加入哪些模型,然后在整體 model 中,傳入 task_heads。

Plain體驗AI代碼助手代碼解讀復制代碼task_heads = OrderedDict() if enable_det_head:     task_heads["det"] = det_head if enable_om_head:     task_heads["om"] = om_head if enable_occ_head:     task_heads["occ"] = occ_head model = dict(     type="SparseBevFusionMultitaskOE",     compiler_model=False,

多任務的 forward 流程為遍歷 dict(每個 dict 可以理解為一個 task_head),依次執行各自的 head,代碼可見:hat/models/structures/sparse_multitask.py

Plain體驗AI代碼助手代碼解讀復制代碼def forward_single_head(         self, head, feature_maps, data, lidar_feature, compiler_model     ):         if isinstance(head, (SparseBEVOEHead, FlashOccHead)):             return head(                 feature_maps=feature_maps,                 metas=data,                 lidar_feature=lidar_feature,                 compiler_model=compiler_model,             )

注:為了兼容 lidar 融合的模型,head 中保留 lidar_feature,在不使用 lidar net 的情況下 lidar_feature=None

(三)訓練策略

SparseBevFusionMultitaskOE 模型在訓練上:

  • SparseBevFusionMultitaskOE 模型為同源數據集,多個任務一起訓練,非單獨的訓練某個 head。

  • 模型訓練時需要增加添加 BevRotation,經過在 nescenes 上驗證,不添加會導致掉點。

  • 訓練策略復用了單任務模型 。

  • 對模型配置 loss weight,根據模型表現動態的調整權重值。

3.1.2 模型量化

為量化精度保證,我們采取了 HistogramObserver 的校準方式(OE 3.7.0 版本及以后支持),精度上優于 MSEObserver。校準數據為訓練數據,校準的 step 為 50,無 qat 訓練。

Plain體驗AI代碼助手代碼解讀復制代碼calibration_data_loader = copy.deepcopy(data_loader) calibration_data_loader["dataset"]["transforms"] = val_data_loader["dataset"][     "transforms" ] calibration_batch_processor = copy.deepcopy(val_batch_processor) calibration_step = 50 calibration_qconfig_setter = QconfigSetter(     reference_qconfig=get_qconfig(  # 1. 主要用于獲取 observer         # observer=(observer_v2.MSEObserver)         observer=(observer_v2.HistogramObserver)

q_template 為量化配置,分為全局的配置和自定義的 ModuleNameTemplate、基于敏感度的 SensitivityTemplate 算子的配置。ModuleNameTemplate 主要作為全局量化配置和個別層的量化配置,被用于配置全局量化類型和對算子配置 int16、固定算子的 scale 操作,以上都是基于經驗的。SensitivityTemplate 為敏感度的配置,它是基于 debug 結果,對敏感排行較高的算子通過 topk_or_ratio 配置 int16 算子比例。詳細的使用方法可見用戶手冊*量化感知訓練--開發指南--Qconfig 詳解 *章節。

在多任務時,建議先將已知的在單任務中需要 fix-scale 的層(特別是具有物理意義、范圍固定的 op)做固定 scale 處理、對已知需要 int16 精度的算子配置高精度。例如動態單任務的 fix-scale 為:

5.png

多任務時可以做復用:

6.png

模型基于 int8 的量化配置下做 calibration,若出現精度掉點問題參考用戶手冊中的*量化感知訓練--開發指南--精度調優工具使用指南 *選取 badcase 做 debug 分析,基于 debug 信息對部分算子配置更高的精度或者嘗試手動處理。

多任務量化推薦流程:

7.png

若未部署過單任務則可以按照用戶手冊推薦流程(*量化感知訓練--開發指南--量化精度調優指南)*做部署。

4.總結與建議4.1 部署建議
  • 嘗試訓練時增加數據增強(BEV Rotate)提高模型的泛化能力

  • 對精度較差的任務可以適當的增大 loss weight

  • 量化優先嘗試 HistogramObserver 校準方式

  • 多任務量化時建議基于單任務的經驗,對需要固定 scale 的算子做 fixscale,可以有效縮短量化周期。

本文通過對 SparseBevFusionMultitaskOE 在地平線征程 6 上量化部署的優化,使得模型在征程 6M 上得到 latency 為 28 ms 的部署性能,同時,通過 SparseBevFusionMultitaskOE 的部署經驗,可以推廣到其他多任務模型的部署中。


作者:地平線開發者
鏈接:https://juejin.cn/spost/7616666565057642511
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

關鍵詞: 算法 自動駕駛 算法工具鏈 地平線 征程5

相關推薦

自動駕駛的時代,呼喚線控底盤

ADI:傳感技術助力未來自動駕駛的發展

視頻 2020-03-16

攜手ADI贏得未來

視頻 2019-11-08

加密算法之MD5算法

為什么可擴展高性能 SoC 是自動駕駛汽車的未來

汽車電子 2026-03-06

ZF與SiliconAuto推出用于自動駕駛的實時I/O芯片

采埃孚與SiliconAuto推出自動駕駛實時I/O接口芯片

加快實現自動駕駛(完整小組討論)

視頻 2020-06-12

PID算法

資源下載 2007-02-16

賦能自動駕駛和機器人感知,讀懂二維可尋址VCSEL | 硬科技有點意思

簡單實用的單片機CRC 快速算法

資源下載 2007-02-16

地平線HSD引領智能駕駛普惠新時代

物理人工智能如何在自動駕駛和電動汽車中應用?

CRC算法原理及C語言實現

資源下載 2007-02-16

數字PID控制算法之一

資源下載 2007-12-28

自動駕駛的現狀與未來(節選)

視頻 2020-03-16

76-81GHz自動駕駛CMOS RADAR

視頻 2018-05-31

日產聯手優步與 Wayve,計劃在東京推出自動駕駛出租車服務

英偉達 “全天候” 芯片實現毫秒級人臉檢測

英偉達宣布與比亞迪、吉利展開自動駕駛業務合作

2026-03-17
更多 培訓課堂
更多 焦點
更多 視頻

技術專區