<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 地平線(xiàn)占用預測 FlashOcc 參考算法-V1.0

地平線(xiàn)占用預測 FlashOcc 參考算法-V1.0

發(fā)布人:地平線(xiàn)開(kāi)發(fā)者 時(shí)間:2024-09-16 來(lái)源:工程師 發(fā)布文章
1.簡(jiǎn)介
3D Occupancy Networks 的基本思路是將三維空間劃分成體素網(wǎng)格,并對每個(gè)網(wǎng)格進(jìn)行各類(lèi)感知任務(wù)的預測。目前以網(wǎng)格為中心的方法能夠預測每個(gè)網(wǎng)格單元的占用率、語(yǔ)義類(lèi)別、未來(lái)運動(dòng)位移和實(shí)例信息。3D occupancy 可以對道路障礙物進(jìn)行更細粒度的劃分,同時(shí)獲取更精確的占用和語(yǔ)義信息。然而,三維體素表示的處理帶來(lái)了巨大的內存和計算開(kāi)銷(xiāo),導致當前占用率預測方法的部署受到限制。FlashOcc 作為即插即用的占用網(wǎng)絡(luò ),在保持精度的同時(shí)實(shí)現了更快的推理速度和更低的內存消耗。本文將介紹 FlashOcc 在地平線(xiàn)征程 6E/M 平臺上的優(yōu)化部署。
2.性能精度指標3.公版模型介紹
FlashOcc 在該領(lǐng)域做出了開(kāi)創(chuàng )性的貢獻,成功地以驚人的精度實(shí)現了實(shí)時(shí) surround 視圖 3D 占用預測。此外,在不同的車(chē)載平臺上部署時(shí)表現出更強的通用性,因為它消除了對昂貴的體素級特征處理的需要,其中避免了視圖變換器或 3D(可變形)卷積算子。如下圖所示,FlashOcc 的輸入為 6 張圖像(前后視角+周視),輸出是密集占用預測結果。
FlashOcc 網(wǎng)絡(luò )主要由 5 個(gè)部分組成:
  • 2D 圖像編碼器使用 ResNet50+FPN 從多視角圖像中提取多尺度圖像特征;

  • 視圖轉換模塊:使用 LSS 實(shí)現從 2D 感知視圖圖像特征到 3D BEV 表示的映射;

  • BEV 編碼器提取 BEV 空間的特征,并結合了多尺度的 BEV 特征來(lái)提升特征表示質(zhì)量;

  • 占用預測模塊:由多層 Conv 或者復雜的多尺度特征融合模塊組成,該模塊預測每個(gè)體素的分割標簽;

  • 可選的時(shí)間融合模塊:由時(shí)空對齊模塊和特征融合模塊組成,增強對動(dòng)態(tài)目標或屬性的感知。

4.地平線(xiàn)部署優(yōu)化
改動(dòng)點(diǎn)說(shuō)明:
  1. 輸入圖像大?。?/strong>由公版的 256x704 調整為 512x960;

  2. BEV 網(wǎng)格大?。?/strong>由公版的 200x200 調整為 128x128;

  3. Image encoder backbone:使用地平線(xiàn)深度優(yōu)化的高效 backbone HENet 替換公版中的 ResNet50;

  4. Bev encoder backbone:使用地平線(xiàn)深度優(yōu)化的高效 backbone HENet 替換公版模型中的 CustomResNet;

  5. 視圖轉換模塊:使用地平線(xiàn)針對性?xún)?yōu)化后的 LSSTransformer 來(lái)替換公版中的 bevpooling 實(shí)現的 LSSViewTransformer,且移除了公版中的時(shí)序融合模塊;

4.1 性能優(yōu)化4.1.1 Backbone
Image Encoder 采用了 HENet+FPN 來(lái)提取 6V 圖像的多尺度特征,不僅在精度上可與 ResNet50 相媲美,而且在性能上有顯著(zhù)優(yōu)勢,這里的 FPN 采用的是地平線(xiàn)的高效實(shí)現,相對于公版更加高效。BEV Encoder 同樣采用了 HENet+BiFPN 來(lái)提取 BEV 特征,BiFPN 這種重復雙向跨尺度連接的結構,可以更好地實(shí)現梯度傳播,從而實(shí)現 BEV 特征的多尺度融合。
HENet 是針對 J6 平臺專(zhuān)門(mén)設計的高效 backbone,其采用了純 CNN 架構,總體可分為四個(gè) stage,每個(gè) stage 會(huì )進(jìn)行 2 倍下采樣。以下為總體的結構配置:
depth = [4, 3, 8, 6]
block_cls = ["GroupDWCB", "GroupDWCB", "AltDWCB", "DWCB"]
width = [64, 128, 192, 384]
attention_block_num = [0,0,0,0]
mlp_ratios, mlp_ratio_attn = [2, 2, 2, 3], 2
act_layer = ["nn.GELU", "nn.GELU", "nn.GELU", "nn.GELU""]
use_layer_scale = [True,True,True,True]
final_expand_channel, feature_mix_channel = 0,1024
down_cls = ["S2DDown", "S2DDown", "S2DDown", "None"71
模型相關(guān)細節可以參考 HENet 高效模型相關(guān)介紹。
代碼路徑:/usr/local/lib/python3.10/dist-packages/hat/models/backbones/henet.py
4.1.2View transformer
View transformer 采用地平線(xiàn)深度優(yōu)化后的 LSSTransformer,替換 J6 平臺暫不支持的 bevpooling,從而高效地將圖像特征轉換到 BEV 空間。為了進(jìn)一步提升性能,將 bev grid size 由公版的 200x200 調整為了 128x128。LSSTransformer 主要的工作流程如下所示:
View transformer 主要包括分為 3 個(gè)部分:
  1. 生成深度特征

  2. 對深度特征和圖像特征做 bev 坐標轉換

  3. 生成視錐點(diǎn)云特征(frustum features)

接下來(lái)將對這三個(gè)部分的具體代碼實(shí)現進(jìn)行介紹:
生成深度特征
View transformer 是基于圖像特征,經(jīng)過(guò)卷積層生成了 depth 為 45 的 depth_feature,并使用 softmax 計算 depth_feature 的 score 值。對應代碼如下所示:
self.depth_net = ConvModule2d(
   in_channels=in_channels,
   out_channels=depth,
   kernel_size=1,
   padding=0,
   stride=1,
   bias=False,
)
depth = self.softmax(self.depth_net(feats))
代碼路徑:/usr/local/lib/python3.10/dist-packages/hat/models/task_modules/view_fusicon/view_transformer.py
生成 BEV 特征
為了減少計算量,LSSTransformer 首先將圖像特征和深度特征分別轉換到 BEV 視角下,然后對二者進(jìn)行點(diǎn)乘計算。其中,圖像特征轉換到 BEV 空間的采樣坐標 points 的生成在_gen_reference_point函數中,計算邏輯如下:
生成視錐點(diǎn)云特征
為了不遺失坐落在相同 voxel 中的點(diǎn)云特征,將對每個(gè) voxel 都采樣 10 次,最終將每個(gè)點(diǎn)云特征相加得到 BEV 特征圖。對應代碼:
class LSSTransformer(ViewTransformer):
    ...
    def _spatial_transfom(self, feats, points):
       ...
       for i in range(self.num_points):
           #將圖像特征轉換到 BEV 視角下
           homo_feat = self.grid_sample(
               feat,#[1, 64, 96, 30]
               fpoints[i * B : (i + 1) * B],)
           #將深度特征轉換到 BEV 視角下
           homo_dfeat = self.dgrid_sample(
               dfeat,#[1, 1, 270, 480]
               dpoints[i * B : (i + 1) * B],
           )
           #生成視錐點(diǎn)云特征
           homo_feat = self.floatFs.mul(homo_feat, homo_dfeat)#[1, 64, 128, 128]
           homo_feats.append(homo_feat)
       trans_feat = homo_feats[0]
       for f in homo_feats[1:]:
           trans_feat = self.floatFs.add(trans_feat, f)
       return trans_feat #[1, 64, 128, 128]
4.2 精度優(yōu)化
FlashOcc 采用以下策略提升浮點(diǎn)精度:
  1. 模型結構優(yōu)化:使用更多地平線(xiàn)進(jìn)行針對性?xún)?yōu)化后的結構,包括 backbone、view_transformer、bevencoder 等,浮點(diǎn)精度相對于公版有所提升;

  2. 加載預訓練權重:加載 HENet 的浮點(diǎn)預訓練權重。

  3. 總結與建議

5.1 訓練建議
  1. 浮點(diǎn)訓練時(shí)加載 HENet 的預訓練權重;

5.2 部署建議選擇合適的 BEV Grid 尺寸
從圖像空間到 BEV 空間的轉換,是稠密特征到稠密特征的重新排列組合,計算量比較大,與圖像尺寸以及 BEV 特征圖尺寸成正相關(guān)。若要保持 BEV Grid 的分辨率不變(比如 0.5m/格),則需要大大增加 BEV 特征圖的尺寸,從而使得端上計算負擔和帶寬負擔都過(guò)重;若保持 BEV 特征圖的尺寸不變,則需要使用更粗粒度的 BEV Grid,感知精度就會(huì )下降(每個(gè) grid 的尺寸增加)。所以在模型設計之初,綜合考慮模型的精度和性能以選擇合適的 BEV Grid 尺寸。
使用高效 backbone 提取特征
建議選擇 J6 平臺高效 Backbone 來(lái)搭建模型,高效 Backbone 經(jīng)過(guò)在 J6 平臺的迭代優(yōu)化和驗證,相比其它公版 Backbone,在性能和精度上可以取得更加出色的效果,因此選取 J6 平臺高效 Backbone 來(lái)搭建模型可以對整個(gè)場(chǎng)景模型帶來(lái)性能和精度的增益。
附錄
  1. 論文:FlashOcc

  2. 公版模型代碼:Github-FlashOcc


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 算法 自動(dòng)駕駛

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>