滁州市网站建设_网站建设公司_加载速度优化_seo优化
2026/1/12 21:13:43 网站建设 项目流程

1. 简介

在自动驾驶领域,BEV 是一种从上方看对象或场景的视角,通过多个不同视场的传感器融合成 BEV 特征,可以提供车辆周围环境的完整视图,供下游任务使用,例如障碍物检测,路径规划等。

基于 BEV 的环境感知目前主要是有两种技术路线,一种是以 petr 为代表的 sparse bev 方法,它的主要思路是通过 3D 位置编码和 2D 的特征直接生成融合特征,再用基于 transformer 的 decoder 实现环境感知,这个过程不需要显式地生成 Dense Bev 特征; 另一种是以 bevformer 为代表的 dense bev 方法,该方法利用内外参信息将 2D 特征融合到一个 BEV 特征,再用 BEV 特征来进行后续的感知或规划任务。基于 Dense Bev 的方法,可以很方便地实现多传感器融合和多任务预测,因此在自动驾驶领域被广泛应用。

地平线面向智驾场景推出的征程 6 系列(J6)芯片,在提供强大算力的同时带来了极致的性价比。BEVFormer 是当前热门的自动驾驶系统中的 3D 视觉感知任务模型,我们基于 BevFormer 与征程 6 芯片,优化了多视图融合生成 Dense Bev 特征的方案,进一步提升基于 Dense Bev 的算法推理效率。本文将详细介绍参考算法对 BevFormer 中 ViewTransformer 优化方法以及模型端侧的表现。

2. 性能精度指标

  1. BEVFormer 为参考算法 V1.0 版本,BEVFormer-OPT 为优化后的参考算法 V2.0 版本

地平线 3D 目标检测 Bevformer 参考算法-V2.0);

  1. BEVFormer-OPT 使用了 Dense Bev 的优化方案;

3.优化方法介绍

3.1 整体架构

本文的 Dense Bev 方案是基于 BevFormer 的模型结构进行优化而来,参考算法 BevFormer 介绍见地平线 3D 目标检测 Bevformer 参考算法-V1.0, 这里不再赘述。

在 BevFormer 中,SpatialCrossAttention 模块是用来做空间融合的,即将多个 2D 视图特征融合成 Bev 特征,由于公版的 BevMask 会根据内外参进行动态变化,进而导致模型中出现动态 Shape,对部署非常不友好,因此在 V1 版本中我们直接去掉了 BevMask,虽然对部署更友好了,但是 SpatialCrossAttention 模块多了很多冗余的计算和 IO,对性能影响很大。整体框架如下图所示:

3.2 方案优化点

3.2.1 使用 BevMask

在优化方案中,我们对内外参生成 BevMask 的原理做了详细的分析,发现:

  1. 当相机传感器位置固定时,内外参转换矩阵即固定,轻微抖动对 BevMask 影响不大。
  2. 从 BEV voxel 的角度来看,中心点到 multi camera 的映射是稀疏的,在 BevFormer 开源的代码和模型中,默认利用了这个特性,加速计算而不会带来任何精度损失(也就是上面说的 bev_mask)
  3. 从 BEV pillar 的角度来看,通常每个 pillar 只会映射到 1-2 个 camera,如上图右上角所示。

利用到上面的几个特性我们可以减少空间融合模块的复杂度,但需要引入一对 gather/scatter 操作,以及相关的 index 计算。即先通过 gather 将 bev 空间上的有效点取出来,计算完空间特征融合后,再用 scatter 将其还原到 Bev 空间对应的位置,然后根据每个 bevpillar 的有效点数来算 Bev 空间每个点的均值即可。

整体框架如下图所示:

为了能编译成静态模型,有 2 个额外需要关注的设置:

  1. Bev 空间映射到每个 camera 的最大点数。这个可以根据内外参计算得到,但为了应对一些抖动情况,可以适当放开,在 Nuscenes 数据集上,50*50 大小的 Bevsize 下,我们设置为 20*32。 这个数字直观理解就是,最大视场的相机在 Bev 空间覆盖的区域大小。
  2. 每个 BEV pillar 映射到的最大的 camera 数。目前是一个静态设置的最大值,可以根据数据统计得到,在 Nuscenes 数据集中,我们设定为 2, 这个数字直观理解就是有视野重叠的最大 camera 数。

代码均在算法包位置:

hat/models/task_modules/bevformer/attention.py

# 对输入的Bevquery和reference_points取出有效点 def rebatch_attention_inputs( self, query: Tensor, queries_rebatch_grid: Tensor, reference_points_rebatch: Tensor, ) -> Tuple[Tensor, Tensor]: """Rebatch the attention inputs.""" bs = query.shape[0] ... return queries_rebatch, reference_points_rebatch # 将SpatialCrossAttention模块的输出映射会Bevfeat上,并求均值 def restore_outputs( self, restore_bev_grid: Tensor, queries_out: Tensor, counts: Tensor, bs: int, queries_rebatch_grid: Tensor, ): """Restore outputs to bev feature.""" queries_out = queries_out.reshape( bs, self.num_cams, self.embed_dims, -1 ) ... return slots

3.2.2 使用 Gridsample 高效实现 Gather 和 Scatter

gather/scatter 这一对操作在 BPU 上不是很友好,通过分析这对操作的 index 我们发现可以换成 BPU 更友好的方式,即使用 Gridsample 来实现这一对操作。Index 只受 camera 内外参的影响,而往往内外参的变化是非常低频的,因此,我们可以把 index 生成的逻辑放在前处理,按需触发计算,再把生成好的 index 转换为对应 Gridsample 需要的 grid 作为模型输入给到模型,供 Gridsample 算子直接使用,代码均在算法包位置:

hat/models/task_modules/bevformer/view_transformer.py

  1. 根据 Gather 的 Index 计算 Gridsample 的 Grid:
bev_mask = bev_mask.permute(2, 1, 3, 0, 4).squeeze(-1) max_len = self.virtual_bev_h * self.virtual_bev_w queries_rebatch_grid = reference_points_cam.new_zeros( [B * self.numcam, self.virtual_bev_h, self.virtual_bev_w, 2] ) ... reference_points_rebatch = ( reference_points_cam.flatten(-2) .permute(1, 0, 3, 2) .flatten(0, 1) .reshape(B * self.numcam, D * 2, self.bev_h, self.bev_w) )
  1. 根据 Scatter 的 Index 计算 Gridsample 的 Grid 和 每个 Bev Pillar 对应的有效点数:
bev_mask_ori = bev_mask.clone() bev_mask = bev_mask.permute(1, 0, 2, 3) restore_bev_grid = ( reference_points_cam.new_zeros( B, self.max_camoverlap_num * self.bev_h, self.bev_w, 2 ) - 1.5 ) ... restore_bev_grid = restore_bev_grid * 2 - 1 bev_pillar_counts = bev_mask_ori.sum(-1) > 0 bev_pillar_counts = bev_pillar_counts.permute(1, 2, 0).sum(-1) bev_pillar_counts = torch.clamp(bev_pillar_counts, min=1.0)

4.总结

4.1 优化策略小结

  1. 引入 BevMask, 可以大幅度降低空间融合模块的计算量和 IO;
  2. 根据模型特征,使用 BPU 友好的 OP。

4.2 总结

本文主要介绍了基于 Bevformer 优化的 DenseBev 方案,通过减少冗余计算和 IO,使用 BPU 友好 OP,相比于 v1.0 版本模型,这种方案在精度相当的情况下,在 征程 6M 平台上推理性能提升 30%。同时,这种 DenseBev 的优化经验可以推广到其他相似结构或相似使用场景模型的部署中。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询