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-t时刻,根据LSS思路预测每个点的深度分布并投影到BEV空间
- 根据ego-motion将1~t-1时刻都转换到t时刻
- 3D卷积学习时序特征
- 根据未来的标签,预测当前和未来的特征分布
DETR/DETR3D
自顶向下的稀疏BEV 3D检测范式
DETR: detection transform
首先应用在2D目标检测,即给定一张图像后,预测一个包含了所有目标的无序集合
CNN提特征 -> transformer encoder
全局特征编码,得到kv后再通过预设的object queries做cross attention,
再经过FFN得到目标分类和bbox回归结果
Deformable DETR:
针对DETR计算量大,收敛慢的问题,基于可变卷积提出了一种可变注意力机制
引入了参考点和采样点,一个query不用和全部图像特征进行交互计算