BEV常见的开源算法 | BEV空间的生成(BEVFormer/PersFormer等)

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【3D目标检测】技术交流群

后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!

42de9ae27503506fdb899ab01751a7d9.png

BEV感知系列分享是整数智能推出的一个全新分享系列,在这个系列中,我们将介绍BEV感知相关的算法和数据集等内容。

  • BEV常见的开源算法系列

    • BEV空间的生成

    • BEV下的多模态融合

    • BEV下的时序融合

在本系列中,我们将介绍截至目前为止发布的优秀BEV算法。我们将该系列分为BEV空间的生成、BEV下的多模态融合算法、BEV下的时序融合算法。

本篇将从BEV空间的生成算法开始,介绍BEV算法的发展历史,并且重点介绍基于Transformer的BEV空间生成算法。这些算法开创性地使用Transformer更高效,更精确地生成BEV空间。

BEV算法的发展历史

在 BEV空间中,传统的 BEV变换算法通常是在图像空间中进行特征提取,并产生分割结果,再利用逆透视变换(IPM)将其转化为 BEV空间。

IPM的功能是消除视觉上的影响,比如,在自动/辅助驾驶中,因为在前视的照相机拍摄的图像中,原本平行的物体会因为透视的原因而发生交叉。

IPM是把影像与 BEV空间连接起来的一种简便、直接的方式,要得到一幅影像的 IPM,就必须了解摄像机的内参(焦距、光心)和外参(俯仰角、偏航角和地面高度)。在这个过程中,摄像机必须保持俯仰角,但这种约束太严格,难以在实际应用中得到满足。同时,由于参数的变化,会引起系统对物体的感知能力的变化,从而降低视觉质量,造成平行车道之间的夹角。

为减小俯仰角对视觉的影响,在改进后的算法中,采用了摄像机的实时位姿,并将俯仰校正添加到相邻的帧中,这样可以获得较好的逆变换效果,但由于实时位姿难以精确地获得,因而无法获得最理想的结果。

这两年BEV相关算法的发展让深度学习应用于BEV空间转换的方式逐渐成为主流。与以往的算法相比,利用神经网络进行二维 BEV空间变换可以获得更好的视觉效果。

该方法主要流程是:首先利用主干网对各个摄像机进行特征提取,再利用 Transformer等将多摄像机数据从图像空间转化为 BEV空间。在 BEV空间中,由于利用同一坐标系统,可以很方便地将 Lidar、 Radar等传感器数据与其他传感器数据进行融合,还可以进行时序融合形成4D空间,这也是当下BEV技术的大趋势。

基于Transformer的PV2BEV算法

01 BEVFormer

【论文地址】

https://arxiv.org/abs/2203.17270

【简介】

BEVFormer可以有效地聚合来自多视角摄像机的时空特征和历史BEV特征。由BEVFormer生成的BEV特征可以同时支持多种三维感知任务,如三维物体检测和地图分割,这对自动驾驶系统是很有价值的。

【算法结构】

ccbdd1ac87082d0b4348d3378a038935.png

BEVFormer网络结构

BEVFormer网络结构如上图所示,它有6个编码器层,除BEV查询,空间交叉注意和时间自我注意三种定制设计外,每个编码层都遵循Transformer的常规结构。

  • BEV Queries

作者预先设定了一组网络形状的可学习的参数aa1e5e4680c9a798265ef0f5f130bbc8.png作为BEVFormer的queries。其中H和W是BEV平面的空间尺寸。具体来说,查询0f72661ad1329b5d846676a37cbe337e.pngbb0bed80e914f56da23b4e8002bc3b8f.png处,Q负责BEV平面中相应的网络单元区域。每个BEV平面中的网络单元对应于s米的真实大小。BEV特征的中心在默认情况下对应于ego car的位置。按照常见的做法,数据输入BEVFormer之前,向BEV queries Q添加了可学习的位置编码。

  • Spatial Cross-Attention

作者设计了一种空间交叉注意力机制,使BEV queries从多相机特征中通过注意力机制提取所需的空间特征。由于本方法使用多尺度的图像特征和高分辨率的BEV特征,直接使用最朴素的global attention会带来无法负担的计算代价。因此作者使用了一种基于deformable attention的稀疏注意力机制使每个BEV query和部分图像区域进行交互。具体而言,对于每一个位于(x, y)位置的BEV特征,我们可以计算其对应现实世界的坐标x', y'。然后作者将BEV query进行lift操作,获取在z轴上的多个3D points。有了3D points,就能够通过相机内外参获取3D points在view平面上的投影点。受到相机参数的限制,每个BEV query一般只会在1-2个view上有有效的投影点。基于Deformable Attention,我们以这些投影点作为参考点,在周围进行特征采样,BEV query使用加权的采样特征进行更新,从而完成了spatial空间的特征聚合。

  • Temporal Self-Attention

除了空间信息之外,时序信息对于视觉系统了解周围环境来说也是至关重要的。例如,在没有时间线索的情况下,推断运动物体的速度或者从静态图像中检测高度遮挡的物体是很有挑战性的。作者设计了Temporal Self-Attention通过结合BEV的历史特征表示当前的环境。

作者将BEV特征视为类似能够传递序列信息的memory,每一时刻生成的BEV特征都从上一时刻的BEV特征获取了所需的时序信息,这样保证能够动态获取所需的时序特征,而非像堆叠不同时刻BEV特征那样只能获取定长的时序信息。

【实验结果】

在3D目标检测任务上,BEVFormer在验证集上比以前最好的方法DETR3D高出9.2分(51.7% NDS vs. 42.5% NDS)。在测试集上,BEVFormer在没有附加条件的情况下取得了56.9%的NDS,比DETR3D(47.9%的NDS)高9.0个百分点。该方法甚至可以达到与一些基于LiDAR的基线相当的性能,如SSN(56.9% NDS)和PointPainting(58.1% NDS)。

89f8e6ede79f146930ff82526c0c096f.png

4656eb2aae328762c2535806af732f9d.png在nuScenes验证集上3D检测结果

【标注demo视频】

0PersFormer

【论文地址】

https://arxiv.org/abs/1912.04838

【简介】

作者提出一种端到端单目3D车道检测器,它具有基于变压器的空间特征转换模块。该模型以相机参数为参考,关注相关的前视局部区域生成BEV特征。PersFormer采用统一的2D/3D锚点设计和辅助任务同时检测2D/3D车道,增强了特征一致性,共享了多任务学习的好处。

【算法结构】

56358b9ee91f10d6477c19a4b4c4509d.png

PersFormer网络结构

PersFormer整体结构如上图所示,由主干、透视变压器和车道检测头三部分组成。

  • 主干以调整后的图像为输入,生成多尺度的前视图特征,其中采用流行的ResNet变体。

  • 透视转换器以摄像机的前视图特征为输入,借助摄像机的内外参数生成BEV特征。作者不是简单地从正面视图向BEV投影一对一的特征对应,而是引入Transformer来关注局部上下文并聚合周围的特征,从而在BEV中形成一个健壮的表示。

  • 车道检测头负责预测2D/3D坐标以及车道类型。

【实验结果】

e745d7f09d21883cf72785d54b053e58.pngPersFormer超过之前的SOTA算法在整个验证集和每个场景集上获得了最高的F-Score

【标注demo视频】

4d5f739917ca5e2e27813cea3b70b419.gif

03 CoBEVT

【论文地址】

https://arxiv.org/abs/2207.02202

【简介】

作者提出了第一个通用的多智能体多摄像机感知框架CoBEVT,假设所有智能体获取的信息是准确的,传输的信息是同步的,利用多个智能体之间的共享信息来获得整体的BEV分割图,协同生成BEV地图预测。为了在底层Transformer架构中有效地融合来自多视图和多代理数据的相机特征,作者设计了一个融合轴向注意(FAX)模块,它可以跨视图和代理捕获稀疏的局部和全局空间交互。

【算法结构】

da0e54b2494877743aa021ade7246894.png

CoBEVT的整体架构包括:

  • 融合轴向注意(FAX):它作为SinBEVT和FuseBEVT的核心组件,用于高效地获得场景中的局部和全局属性

  • SinBEVT:用于BEV特征计算

  • FuseBEVT:用于多智能体特征压缩和共享

【实验结果】

a1cced77f9651a6175bcfa79e05eea96.png

基于OPV2V摄像机的地图语义分割

5b237f4516866225b3e2caa3d67f7dd2.png

基于OPV2V激光雷达的3D目标检测

0d21ffe44d7e2e2549693453feefce92.png

nuScene上的地图语义分割

往期回顾

首篇!无相机参数BEV感知!(北航、地平线)

e0533d6a8973ae32ef2480638b27f791.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

0d06907dd8ffdd2a29897652f6bfd6be.jpeg

### BEV空间的定义 BEV(Bird's Eye View)是一种鸟瞰视角的表现形式,能够将视觉信息立体化并以自上而下的方式展示在坐标系中[^2]。具体而言,BEV空间是一个二维平面表示方法,其中原点通常位于车辆中心,X轴指向车辆前进方向,Y轴垂直于车辆车身方向。通过这种方式,BEV空间提供了一种从高空俯视车辆及其周围环境的方式。 --- ### BEV空间的应用场景 #### 1. 自动驾驶中的感知任务 BEV视角广泛应用于自动驾驶领域,特别是在感知模块中。相比于传统的前视图,BEV视角能更全面地捕捉车辆周围的三维信息,并将其投影到二维平面上。这种方法有助于检测和跟踪目标物体,例如行人、其他车辆以及障碍物等。此外,在BEV空间中引入位置编码技术可以进一步提升模型性能[^1]。 #### 2. 结构化交通场景理解 研究者们利用BEV空间来实现对复杂交通场景的有效建模与分析。例如,在ICCV 2021的一篇论文中提到,通过对BEV空间内的语义分割操作,可获得关于道路标志线、车道划分以及其他静态或动态对象的信息[^3]。这些数据对于构建精确的地图至关重要。 #### 3. 处理传感器污染问题 由于实际部署过程中不可避免会遇到诸如沙尘暴天气条件等因素干扰正常工作状态下的摄像设备运作情况;因此,在设计相关算法时需充分考虑到这一点——即使当外界因素导致图像质量下降甚至完全失效的情况下仍能依靠其他类型传感装置所提供的输入完成相应功能需求满足。比如激光雷达(LiDAR),其测量精度不受上述恶劣状况太大程度上的制约,所以常被用来作为补充手段之一参与到最终决策制定流程之中去弥补单纯依赖光学成像所带来的局限性缺陷之处[ ^4 ]. --- ```python import numpy as np def generate_bev_representation(points_3d, grid_size=0.1, range_x=(-50, 50), range_y=(-50, 50)): """ 将3D点云转换为BEV表示 参数: points_3d (np.ndarray): 输入的3D点云数组形状(Nx3) grid_size (float): 单元格大小,默认值为0.1米 range_x (tuple): X轴范围,默认(-50m, 50m) range_y (tuple): Y轴范围,默认(-50m, 50m) 返回: bev_map (np.ndarray): 输出的BEV地图 """ # 初始化BEV网格 width = int((range_x[1] - range_x[0]) / grid_size) height = int((range_y[1] - range_y[0]) / grid_size) bev_map = np.zeros((height, width)) # 转换点云至BEV索引 indices_x = ((points_3d[:, 0] - range_x[0]) / grid_size).astype(int) indices_y = ((points_3d[:, 1] - range_y[0]) / grid_size).astype(int) valid_indices = ( (indices_x >= 0) & (indices_x < width) & (indices_y >= 0) & (indices_y < height) ) bev_map[indices_y[valid_indices], indices_x[valid_indices]] += 1 return bev_map ``` 此代码片段展示了如何将来自LiDAR或其他传感器捕获得到的数据集映射成为一张离散化的二位阵列形式呈现出来供后续处理阶段调用执行特定运算逻辑操作之用途所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值