URL
TL;DR
- 本文介绍了一种
BEV
视角下的3D
障碍物检测算法,该算法的输入是由多张(6张)图片组成的车身环视视角,输出为车身周围障碍物的3D bbox
- 与
LSS(lift-splat-shoot)
算法较为相似,但任务不同,LSS
想要解决的是BEV
视角下的分割问题,BEVDet
想要解决的是3D
障碍物检测问题 - 与
FCOS3D
等单目3D
障碍物检测的任务类型相似,区别在于:单目3D
障碍物检测对每个视角做3D
障碍物检测后,需要使用后处理融合跨视角的物体,BEVDet
可以将跨视角融合问题内嵌到模型中(BEV
)
Algorithm
总体结构
由上图可以看出,模型主要由四个部分组成,分别是:
Image-view Encoder
:图像特征提取(backbone + neck
),6个视角分别做特征提取,不做视角间特征融合View Transformer
:视角变换(同时也实现了图像间信息融合),从图像视角转换为BEV
视角,使用的方法和LSS
方法一样,输出为BEV feature
BEV Encoder
:对BEV feature
用一个较小的BEV backbone
做特征提取Head
:任务头,预测3D bbox
等,本文使用了CenterPoint Head
算法流程的伪代码表示
1 | # 定义输入,shape: (8, 6, 256, 704, 3) [batch, camera, H, W, C] |
数据增广方法
- 独立图片空间数据增广:图片的翻转、裁剪和旋转可以用
3x3
矩阵表示,在View Transformer
的时候需要做对应逆变换,即 同时更改图片和 View Transformer 过程 - BEV视角下的数据增广:在BEV空间的学习中,数据量少于图像视图空间,因为每个样本包含多个摄像机图像,所以更容易过拟合;该增广方法遵循常见的
LiDAR
方法,采用了2D
空间中的常见数据增广操作,如翻转、缩放和旋转,需要对应修改目标3D bbox
,即 同时更改 BEV Feature 和 3D bbox GT
Scale-NMS
- 由于
BEV
空间中不同类别的空间分布与图像视图空间中的分布非常不同,所以作者提出了Scale-NMS
,在执行经典的NMS
算法之前根据每个对象的类别来缩放每个对象的大小,可显著提高了对小面积类别(如行人和交通锥)的预测性能
Thought
- 从模型结构和数据增广方式看
BEVDet
本质是一个二阶段算法:image Encode + View Transformer
:环视图像编码到BEV
空间BEV Encoder + Task Head
:BEV
空间下的3D
障碍物检测
- 但第一阶段输出的
BEV Feature
没有用LiDAR
点云监督就有点怪…(后续的改进算法加了)