Bevformer 学习

Why

纯视觉感知难点:准确的测距

单目:尺度问题
双目:特征点匹配 + 对极几何, 计算量很大,严重依赖标定, baseline限制测距范围

目前常用3D视觉检测: #### 视觉几何: * 假设地面平坦、目标接地 * 先验:目标size、相机焦距

满足假设并已知先验的情况下,可以根据相似关系,估算深度,再经内参转换后可以得到3D box位置

局限性:假设和先验难以满足,多视角检测难处理(对齐/拼接)

深度估计

获取伪雷达点云,再采用点云3D检测,对深度估计结果要求高

BEV

传统的BEV方法是进行逆透视变换(IPM),多相机内外参标定,获取相机到地面的单应矩阵,再进行多视角图像拼接, 这种方法的局限性就是依赖标定,并且需要假设地面平坦,目标接地

这几年基于深度学习的方法比较流行,稳定性和精度都相较于传统BEV方法有不小的提升,而且BEV本身也比较方便被下游使用

初步尝试:LSS(2020, nvidia)

自底向上的方法 LSS直接估计每个像素的深度,再通过内外参投影到BEV空间
bev平面下,每个存在高度信息的像素称为体素,无限高度的voxel称为pillar
LSS: lift, Splat, Shoot * Lift: 每个像素点做一系列离散深度值的概率,取概率最大的深度值,获取深度分布特征和图像特征,做外积后可以得到一个视锥特征 * Splat: 把视锥投影到BEV平面,对视锥的每个点分配给最近的pillar,pooling后得到BEV特征 * Shoot:根据BEV特征进行3D检测、语义分割、预测规划等任务

BEVDET/BEVerse

  • BEVDET:首先对多视角图像进行特征提取,再基于LSS进行视角转换,投影到BEV平面下再对BEV平面进行特征提取,再做目标检测(得到了显示的BEV特征)
  • BEVerse:加入时序序列,融合时空特征
  1. 1-t时刻,根据LSS思路预测每个点的深度分布并投影到BEV空间
  2. 根据ego-motion将1~t-1时刻都转换到t时刻
  3. 3D卷积学习时序特征
  4. 根据未来的标签,预测当前和未来的特征分布

DETR/DETR3D

自顶向下的稀疏BEV 3D检测范式

DETR: detection transform
首先应用在2D目标检测,即给定一张图像后,预测一个包含了所有目标的无序集合 CNN提特征 -> transformer encoder 全局特征编码,得到kv后再通过预设的object queries做cross attention, 再经过FFN得到目标分类和bbox回归结果

Deformable DETR: 针对DETR计算量大,收敛慢的问题,基于可变卷积提出了一种可变注意力机制
引入了参考点和采样点,一个query不用和全部图像特征进行交互计算