背景
在自动驾驶场景下,以往工作是目标检测任务用图像视角做,语义分割用BEV视角做。本文提出了BEVDet,实现了一个统一的框架,它模块化设计分为图像编码器,视角转换器,BEV编码器以及BEV空间的3D检测头。然而框架定下来不代表性能好了,BEVDet在BEV空间上过拟合了,这需要在图像空间增加数据增强,但只有在没有BEV Encoder时才会有正效果。此外,由于图像空间到BEV空间是像素级联系的,图像空间的数据增强并不会对BEV编码器与检测头有正则化效果。所以这里我们在BEV空间进行数据增强
来增加鲁棒性。
主要贡献
- BEV空间与图像空间都用了数据增强方法,并且解耦合
- 提出了BEV编码器,并且沿用LSS的深度估计方法,将图像转到BEV空间进行目标检测。
- 提出了NMS的改进版本,Scale-NMS对不同类别的物体不同放缩处理。
- 训练沿用了CBGS,方便训练样本均衡。同时在视角转化增加了加速方法,提前计算好辅助索引,即每个点与BEV网格的对应关系。
方法
图像编码器
这部分BackBone使用ResNet或SwinTransformer处理,neck部分使用FPN或者FPN-LSS,FPN-LSS就是将1/32分辨率的上采样到1/16与原Backbone提取的特征拼接即可。
视角变换器
这里首先使用LSS的方法预测深度,使用softmax得到每个深度的概率值,得到深度分类图与特征图进行外积相乘得到每个深度下的特征图,形状为ND64H/16W/16,这也就类似于伪点云特征了,将他们转到BEV坐标系上,并在高度维度上使用最大池化或平均池化。
BEV编码器与检测头
与图像编码器类似,最后得到统一的BEV特征图输出即可,但这里的BEV特征图能学到更关键的信息如尺度、速度等等。3D检测头直接使用的CenterPoint的第一阶段检测头。
数据增强策略
由于我们对于图像使用数据增强,这会导致得到的BEV特征图描述信息与真实的3D检测框不一致。对于图像上的点 p i m a g e p_{image} pimage=[ x i , y i , 1 x_i,y_i,1 xi,y