基于深度的BEV论文
LSS
出发点:传统方法是先在图像上做分割,然后转化为bev视角供自动驾驶使用,本文提出了LSS的方法,直接在特征层面转化为BEV,做到了端到端的检测。
方式
1、Lift,通过深度抬升维度,2D->3D。因为每个像素点点分布是模糊的,所以在每一个像素点产生所有深度可能的分布。作者采用的离散的深度分布,每一个像素点的特征都会lift为a个深度的分布。深度分布变为onehot向量ai*c。
2、Splat。柱状池化
通过相机的内外参,将lift后的特征点映射到车身坐标系。通过体素池化,生成BEV特征。
这两步是视角转换的核心
3、Shoot:
分割头
论文:https://arxiv.org/pdf/2008.05711.pdf
代码:https://github.com/nv-tlabs/lift-splat-shoot
代码解析:
https://developer.aliyun.com/article/1173815#slide-2
相机模型:https://web.archive.org/web/20220704002218/http://epixea.com/research/multi-view-coding-thesisch2.html
BEVDet
把LSS的分割头转化为检测头。核心思想和LSS一致。另外文章提出了两个小tricks。1、在BEV space做数据增强;2、scale-NMS,对小物体先放大scale, 做nms后再还原。可以去除冗余框
可以看出上述两个方法都依赖度深度估计都是否准确。目前采用的方式为生存深度网格,让模型自己学习深度分布,属于隐式的深度估计,所以不是很准。
BEVDepth
核心:LSS和BEVDet的深度都是隐式的,估计不准。本文直接使用显式的深度监督,提高深度估计的准确性。监督gt使用3D点云产生。
- Camera-aware Depth Prediction 训练depthnet时,把摄像机的内参也作为一个输入。因为不同相机有不同的FOV,内参和深度本身具有相关性。
- Depth Refinement Module 增加感受野,环境车辆行驶途中抖动引起的外参变化。
消融实验
参考:BEVDepth:为多视图的3D目标检测获取可靠深度值 - 黄浴的文章 - 知乎
https://zhuanlan.zhihu.com/p/535514815