BEVDet笔记

BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View

两种路线:

1、从下至上,显式估计图像深度,完成BEV视角的构建

2、自上而下,利用transformer的query查询机制,用BEV query构建BEV特征

核心动机:通过多视角的2D图像预测出对应的深度分布,利用相机的内外参转换到3D空间当中,进一步投影到BEV空间,完成3D检测任务。BEVDet把这一过程完整化、工程化了。

主体结构:围绕深度分布展开

输入:多视角图像

输出:3D检测结果,3D的bounding box

对输入的多视角图像提取特征,图像转换到BEV空间得到BEV表征,再通过BEV编码进一步提取BEV特征,然后将提取完的BEV特征输入到检测头,完成3D目标检测任务

图像提取特征流程:

1、输入:多视角图像

2、2D Backbone提取基础图像特征:ResNet,SwinTransformer

不同视角的图像共享backbone+neck,

3、多尺度特征融合

4、输出:Camera Features

图像输入是N✖3✖H✖W(N是相机个数,3✖H✖W是图像维度),经过一次下采样,图像特征变成N✖384✖H/16✖W/16(通道数增大到384,图像尺寸下采样到H/16✖W/16,相机个数不变),要想提取多尺度特征(多尺度特征融合的目的是提高模型的性能,使其能够更好地理解图像中的细节和上下文信息。通过将来自不同尺度的特征进行融合,可以提高模型对不同尺度目标的检测能力,并提高整体检测性能),还要对特征图进行一次下采样,得到N✖768✖H/32✖W/32,然后和原始尺寸的特征进行融合,得到N✖1152✖H/16✖W/16(384+768=1152)的特征图。

View Transformer设计流程:

1、输入:多视角图像特征

2、深度分布预测

3、2D→3D特征映射

4、输出:3D视锥特征(伪体素)

对每一个像素位置进行深度分布的预测,会预测一系列离散深度概率,这个概率作为权重乘上像素原始特征,就得到按深度分布的特征转换方法了。每一个像素会有一条投影射线,这条射线对应的是一个深度分布,把所有特征都投影完就组成了3D空间,这个空间从3D特征的角度看更偏向于一个体素空间,因为跟体素的概念很类似 ,都是网格,可以看作是一种伪体素空间。伪体素按照高度维度拍扁也好,卷积也好,池化也好,投影到BEV空间。

从图中可以看出,得到的深度分布特征图尺寸和原特征图一样,维度是N✖D✖H/16✖W/16,得到特征图后利用外接运算可以得到最终的特征表达,然后利用相机内外参数将特征图转换到3D点云场景中,由此完成2D到3D空间的转换过程。

BEV Encoder

1、输入:3D视锥特征(伪体素)

2、Pooling

3、多尺度融合  ResNet+FPN作为Backbone和neck

4、输出:BEV空间特征

BEV encoder和image encoder结构几乎一样,其实都是多尺度融合的网络结构,但BEV encoder输入是BEV空间信息,BEV encoder可以感知到深度方向的速度这些对3D目标检测而言比较关键的信息。

过拟合问题

Image层面的数据增强并不会改变BEV空间结构,所以BEVDet的增广应用于View Transformer模块后

图像层面的增广只能提升image encoder的表征能力,并不能提升BEV空间的表征能力。图像encoder的输入数据是BEV的6倍,多视角图像变成了一个,训练数据不足会导致过拟合,虽然两个编码器网络结构是类似的,但是BEVDet的作者将两个编码器数据增强的部分分开了,在BEV encoder上同样进行了与图像encoder相似的数据增强,包括翻转、旋转、缩放等等。

Scale-NMS设计流程(目标检测一般会用到):

1、输入:检测结果

2、主要步骤:通过Scaling→NMS→Rescaling步骤,去除误检框

3、输出:后处理结果

BEV空间中不同类别的空间分布与图像视图的空间分布是完全不同的,图像视图相机的透视成像机制导致不同类别共享相似的空间分布,因此经典的NMS是对不同的类别采用相同的阈值,比如在2D目标检测中,两个实例的bounding box IoU是低于0.5的(这句话存疑),在BEV空间中,所有实例间的重叠接近于0,预测结果中IoU分布也因类别而异,在BEV空间中有些目标例如行人占比很小,冗余的框可能和GT间并没有交集,那就是IoU等于0,这就导致正样本和负样本空间关系如果依赖IoU的NMS其实是失效的。

Scale-NMS一般先根据每个对象的类别对预测好的目标进行大小的放缩,比如图中下面的左边图里5个实例在小的时候没有交集,变大之后产生了明显的交集,再根据NMS去滤除,然后再rescaling回到原始尺寸。目标类别不同,缩放因子也不同,缩放因子又是怎么得到的呢?是对验证集搜索得到(遍历),去遍历看哪个缩放因子是最有效的。

BEVDet作者做的几个版本,无非是输入分辨率、图像编码网络、BEV encoder的区别:

BEVDet性能对比:

总的性能和DETR3D差不多,比DETR3D高了0.036

下面是是否在各个部分做数据增强的性能对比

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值