【BEV-former简读】

在这里插入图片描述
paper: http://arxiv.org/abs/2203.17270
git: https://github.com/fundamentalvision/BEVFormer

三个部分: back-bone(ResNet-101), spatial cross-attention module, temporal self-attention module

BEV query (BEV查询向量)

一组栅格状的可学习参数 Q(H,W,C)作为BEVFormer的查询向量,其中H,W是BEV平面的空间尺度,位于p=(x,y)位置的Q(p)(1,c)负责查询对应在BEV平面的grid cell region 。每个BEV平面的grid cell对应实际世界坐标系的s米。BEV特征的中心就是自车的位置。遵循常规操作,在输入BEVFormer之前,Q中增加了可学习的位置特征编码。

Spatial Cross-Attention

计算N张camera视角图像之间的注意力的计算量非常大,所以基于deformable attention开发了spatial cross attention:每个BEV query只在多个摄像头视角下和关注的roi进行交互(提取注意力特征),作者对deformable attention从2D到3D场景的迁移做了改动。

首先将每个BEV query提升到一个柱状query,从柱状query采样N个3D 参考点,然后将这些点投影到2D视角。对于一个BEV query,投影的2D点只能落在一些camera view上,另外一些视角则没有。将命中的视角记为V(hit),将这些点N(ref)作为BEV query的参考点,围绕这些点从命中的视角中提取roi image feature。最后对多个roi image feature进行加权相加,作为spatial cross-attention的输出:
在这里插入图片描述

i为第i个摄像头视角,j为第j个3D参考点,N(ref)数每个BEV query的所有3D参考点数量。F(t,i)是第i个摄像头视角的特征。P(p,i,j)是一个投影函数,由第j个3D点(x',y',z'(j))投影到第i个摄像头的2D点。

P(p,i,j)如何得到?

根据对应Query在p=(x,y)计算得到世界坐标系下(x',y')
在这里插入图片描述

H,W是BEV query的空间尺度,s是BEV一个网格对应世界坐标系的尺度。在3D空间中,在(x',y')的目标会出现在z轴=z’的地方,所以作者还针对各个参考点预定义了一组候选高度{z'(j)},使得能够捕获不同高度的信息。通过这种方式,我们就能得到每个query对应的3D参考点集(x',y',z'(j)) (j属于第j个参考点)。最终,我们就可以将3D参考点投影到不同的摄像头视角,得到2D参考点(通过摄像头的投影矩阵):
在这里插入图片描述

P(p,i,j)即由第j个3D点(x',y',z'(j))投影到第i个摄像头的2D点,T(i)是第i个摄像头的投影矩阵

总结:世界坐标系下第j个3D点p(x,y) + 第i个摄像头的投影矩阵 → 第i个摄像头画面的第j个3D点的2D投影坐标,以此类推,能够找到Q(p=(x,y))包含多个z轴3D点在多个摄像头画面中的2D点的特征集合,然后做加权相加,来代表Q(p=(x,y))的特征

Temporal Self-Attention

除了空间注意力,时序注意力对强遮挡目标的感知也有所帮助

第t帧的BEV query和缓存的历史BEV query,根据自身运动将q(t-1)q(t)进行对齐,通过下面操作对不同时间的BEV feature构建联系

Q(p)为BEV平面p=(x,y)的query。不同于原始的deformable attention,通过融合QB'(t-1)也可以预测p的偏移量。

03-11
### BEV-MAE 原理 BEV-MAE (Bird's Eye View Masked Autoencoders) 是一种专为自动驾驶场景设计的点云预训练模型[^1]。该方法通过引入掩码机制来学习有效的表示,从而提高下游任务的表现。 具体来说,BEV-MAE 将输入的点云数据映射到鸟瞰视图(BEV),并随机遮蔽部分区域。网络被训练以重构这些缺失的部分,这有助于捕捉全局结构信息以及局部细节特征[^2]。 ```python import torch.nn as nn class BEVMae(nn.Module): def __init__(self, encoder_depth=12, decoder_depth=8): super().__init__() self.encoder = Encoder(encoder_depth) self.decoder = Decoder(decoder_depth) def forward(self, point_clouds, mask_ratio=0.75): masked_input, masks = apply_mask(point_clouds, mask_ratio) encoded_features = self.encoder(masked_input) reconstructed_output = self.decoder(encoded_features) return reconstructed_output, masks ``` ### 实现方式 为了有效地处理大规模三维点云数据,BEV-MAE 使用了一种新颖的设计: - **多尺度特征提取**:采用不同分辨率下的特征图来进行更全面的信息获取。 - **自注意力机制**:增强远距离依赖关系的学习能力。 - **轻量化解码器架构**:减少计算开销的同时保持良好的重建效果[^3]。 这种设计使得 BEV-MAE 能够高效地从原始传感器读数中抽取有用特征,并应用于各种视觉感知任务。 ### 应用案例 BEV-MAE 已经证明了其在多个领域内的价值,特别是在自动驾驶方面表现出色: - **目标检测**: 提升对于行人和其他车辆识别精度。 - **语义分割**: 改善道路标记分类准确性。 - **姿态估计**: 更精确地判断周围物体的位置和方向[^4]。 此外,由于 BEV 表示可以自然地与其他基于图像的方法相结合,因此也为跨模态融合提供了新的可能性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值