单目3D目标检测入门

一、单目3D目标检测:

1. 3D目标检测领域有哪些任务和方法?

为了更直观,我画了一个思维导图,点击链接后,注意需要切换一下思维导图状态。

在3D目标检测领域,根据输入信息的不同,大致可分为三类方法。

  1. Point Cloud-based Methods (基于点云来做)
  2. Multimodal Fusion-based Methods(点云和图像的融合)
  3. Monocular/Stereo Image-based Methods(单目/立体图像的方法)

  首先,基于点云的经典方法,比如VoxelNet(2018年)、PointPillars(2019年)、PointRCNN(2019年)等,这类方法都是直接在点云数据上进行特征的提取和RPN操作,将2D目标检测中的网络结构和思想迁移到3D点云中。

  点云和图像的融合方法是当前3D目标检测的主流。比较经典的算法有,2018年的MV3D、Frustum PointNets、2019年的Pseudo-LiDAR、2020年的PointPainting等算法。这里的Pseudo-LiDAR(也叫为激光雷达)这篇文章对后来的单目3D目标检测领域的发展起到了促进的作用。这里使用了双目图像来生成深度图,根据深度图得到点云数据,再进行目标检测任务。

  Stereo Image-based方法中,主要是基于双目图像的3D目标检测,这一领域我不太了解,以后再做补充。单目3D目标检测我是2021年刚接触的,比较出色的单目3D检测方法主要有:Mono3D PLiDAR、AutoShape、MonoRCNN、CaDDN等。而在单目3D目标检测领域,又可细分为三类方法。关于单目3D目标检测的分类翻译自CaDNN这篇文章

  • 直接法(Direct Methods)
      所谓直接法就是直接从图像中估计出3D检测框,也无需预测中间的3D场景表示[9,52,4,32]。更进一步的说就是,直接法可以结合2D图像平面和3D空间的几何关系来辅助检测[53,12,40,3]。例如,可以在图像平面上估计出某对象的关键点,以帮助使用已知几何结构构建3D box[33,29]。[M3D-RPN][M3D-RPN: monocular 3D region proposal network for object detection. ICCV, 2019.][3]引入深度感知卷积,它按行划分输入并学习每个区域的no-shared kernels,以学习3D空间中位于相关区域的特定特征。
    可以对场景中的物体进行形状估计,从而理解三维物体的几何形状。形状估计可以从3D CAD模型的标记顶点中被监督[5,24],或从LiDAR扫描[22],或直接从输入数据以自我监督的方式[2]。
    直接法的缺点是检测框直接从2D图像中生成,没有产生明确的深度信息,相对于其它方法,定位性能较差。

  • 基于深度的方法(Depth-Based Methods)
      该方法先利用深度估计网络结构来估计出图像的像素级深度图,再将该深度图作为输入用于3D目标检测任务,[论文][Deep ordinal regression network for monocular depth estimation. CVPR, 2018.]。将估计的深度图与原图像结合,再执行3D检测任务的论文有许多[38,64,36,13]。深度图可以转换成3D点云,这种方法被称为伪激光雷达(Pseudo-LiDAR)[59],或者直接使用[61,65],或者结合图像信息[62,37]来生成3D目标检测结果。基于深度的方法在训练阶段将深度估计从三维目标检测任务中分离,导致还需要学习用于三维检测任务的次佳的深度地图。如何理解上边这句话呢?**对于属于感兴趣的目标的像素,应该优先考虑获取精确的深度信息,而对于背景像素则不那么重要,如果深度估计和目标检测是独立训练的,则无法捕捉到这一属性。**所以将深度估计和目标检测任务融合成一个网络,效果会不会更好呢?

  • 基于网格的方法(Grid-Based Methods)
      基于网格的方法通过预测BEV网格表示(BEV grid representation)[48,55],来避免估计用做3D 检测框架输入的原始深度值。具体来说,OFT[48]通过将体素投射到图像平面和采样图像特征来填充体素网格,并将其转换为BEV表示。多个体素可以投影到同一图像特征上,导致特征沿着投影射线重复出现,降低了检测精度。

2. 什么是单目3D目标检测?

推荐参考博客:

3.发展情况

Kitti的3D目标检测排行中,Car类第一的为SFD,Moderate中达到了84.76%,但是Setting中没有激光点云的符号。排第7的BtcDet使用了该符号,所示直接处理点云的方法至少达到了82%多的AP。

点云和图像融合的方法,在Car类的Easy和Moderate类中的AP,其实跟直接处理点云方法的AP差别不是很明显。

双目或者说是立体视觉3D目标检测的方法的AP大概在53%左右。

单目3D目标检测的AP在16%多吧。


(更新时间,2021年11月12日)
如果要查找更加详细的论文和模型精度、建议直接看KITTI关于3D目标检测的榜单:The KITTI Vision Benchmark Suite (cvlibs.net)


这里还有一个纯单目3D目标检测的榜单(包含代码和论文):

4. 为什么要做单目的3D目标检测?

为何最近单目3D目标检测也成为了一个小热点领域?起因可能是因为:

  • 伪激光雷达技术的提出(pseudo-LiDAR),利用图像模拟出雷达点云图像;
  • 单目深度估计的逐渐发展;
  • 纯点云,图像2D,多传感器融合检测的研究逐渐成熟,或者说快要达到天花板了。

从传感这个角度来说,
主动获取深度信息:如激光雷达、RGB-D相机

  • 价格昂贵,有效的距离小,并且线数再多的激光雷达获取的点云也是稀疏的,缺乏纹理信息的。况且激光雷达贵,一辆自动驾驶汽车装几个激光雷达、后期怎么维护保养,工业界最看重的是成本问题!!

再说说双目相机:

  • 误差较大,要求时间同步,体积较大(基线安装有要求,如果坏了一个,那就等于报废)

再说说单目相机:

  • 价格亲民
  • 体积小,功耗低;
  • 贴近实际应用需求。

  并且,单目3D目标检测也不一定只能用于自动驾驶呀!只要设备上有摄像头,有3D检测的任务。这里推荐大家一个单目深度估计的小应用场景:https://roxanneluo.github.io/Consistent-Video-Depth-Estimation/; 单目3D检测最重要的一环就是单目深度估计,而单目深度估计在AR领域是广泛应用滴。比如AR虚拟试衣间,或者京东淘宝上的一些AR试鞋,你拿手机摄像头对着自己脚,鞋自动覆盖到你脚上,这一块用到的应该是目标检测或者语义分割吧。

二、应用场景:

推荐点击在线试鞋,体验一下AR技术吧。
单目3D目标检测的具体应用。我随后会单独整理在一篇博客中。

三、相关论文:

3D目标检测综述

  • Deep Learning for 3D Point Clouds: A Survey----2020年
  • 3D Object Detection for Autonomous Driving: A Survey—2021年

  更多的文献可查看知乎上的这篇文章:单目3D视觉目标检测论文总结 - 知乎 (zhihu.com),总结了100多篇单目3D目标检测领域的文章。

本专栏下,我将会持续不断的更新我读的一些论文和代码运行工作。

  1. CaDDN:论文阅读  代码调试

四、相关数据集:

这里只列出比较常用的几个数据集的名字。数据集的详细说明在这篇博客中。

  • KITTI Dataset
  • Waymo Open
  • NuScenes Dataset
  • Cityscapes
  • Lyft L5
  • H3D
  • Applloscape
  • Argoverse

image source: 3D Object Detection for Autonomous Driving: A Survey

五、自动驾驶领域的相关企业:

百度华为地平线,小鹏蔚来特斯拉。还挺押韵滴!

国外: Waymo、Cruise、Nuro、Argo;

国内:百度、华为、AutoX、图森未来、Pony(小马智行)、Weride(文远知行)、Didi(滴滴)、Momenta、纵目科技、智加科技、小鹏、蔚来、理想、嬴彻科技、魔视智能。

每个公司详细介绍:

国内:百度、华为、AutoX、图森未来、Pony(小马智行)、Weride(文远知行)、Didi(滴滴)、Momenta、纵目科技、智加科技、小鹏、蔚来、理想、嬴彻科技、魔视智能。

每个公司详细介绍,我将单独整理在一篇博客中,包括公司的背景、薪资情况、主要发展方向。