BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View
作者单位
PhiGent Robotics
目的
2D 的视觉感知在过去的几年里有了急速的发展,涌现出一些优秀的范式工作,这些工作有较高的性能,可扩展性,以及多任务的兼容性(比如 Mask R-CNN)。
但是在自动驾驶感知领域,最新的一些 benchmarks 还是有很多不同的范式。比如在 nusences 数据集上,就有一些 基于图像的方法,比如 FCOS3D,PGD等,还有一些基于 BEV 的方法,比如 PON,LSS,VPN。
因此本文提出了 BEVDet,尝试以一种统一的框架解决不同的任务。
方法
网络结构
BEVDet采用了模块化的设计,共由四个模块组成:
- image-view 编码器
- view transfomer
- BEV encoder
- task-specific head
Image-view Encoder
backbone + neck 的结构
backone:resnet,SwinTransformer
neck:FPN,FPN-LSS,FPN-LSS只是将1/32输入分辨率的特征上采样到1/16输入分辨率,并将其与 backbone 生成的 concat 起来。
View Transformer
view transfomer 的作用是将图像特征 转换到 BEV 空间下。这里采用的是 LSS
BEV Encoder
BEV encoder 进一步 编码 BEV 空间中的的特征。bev encoder 的结构与 backone 和 neck 类似,就是一些残差块组成的网络。
Head
就是一些基于不同任务的head。3D目标检测的 head 的目标是检测出 可移动物体的位置,scale,方向和移动速度等属性。
这里直接使用了 centerpoint中的 第一阶段的head,基于 LiDAR 的head PointPillar 和 VoxelNet。
数据增强策略
图像空间下的增强策略:
对于一些常见的数据增强策略,比如 翻转, 裁剪,旋转,都可以使用一个 3x3的转换矩阵来表示。
当我们将图像空间的坐标投影到3D空间时,可以通过数据在增强的转换矩阵,来实现数据增强的操作,这样不会改变数据的在BEV空间分布。
BEV空间下的数据增强策略
多个view 图像只能生成一个 BEV 空间下的样本,所以模型容易拟合 BEV空间下的特征。于是采用了一些 2D空间下的增强策略,包括翻转,缩放,旋转。在实践中,需要同时在 view transformer 输出的特征 和 3D目标 上作相应的操作,以保证空间一致性。需要注意的是,这种增强方法的先决条件是 view transfomer 可以将 image view encoder 和 后续的模块解耦、
Scale-NMS
在2D图像空间下,因为透视关系的存在,多个物体之间存在遮挡重叠,所以使用 经典的 nms 可以降低冗余的预测。但是在 BEV空间下,预测的物体几乎是没用重叠的,也就是说 物体的 iou 几乎是0,所以传统的 iou 就失效了。
于是本文提出了 scale-nms,在执行 nms 之前先对不同类别的物体 乘上各自的 scale(除了障碍物类别之外,因为障碍物的大小范围太过),这样就可以使 nms 重新发挥作用了。
相关资料
https://zhuanlan.zhihu.com/p/557613388