概述
本文是基于图像的3D目标检测算法。
提出动机与贡献:
以往基于图像的方法在精度上始终远远低于基于点云的方法,其中的原因一般被认为是基于图像的深度估计效果不好,而作者认为是数据表示的问题,作者将预测到的深度图转换成了伪点云,然后应用基于点云的算法进行检测,得到了远超普通基于图像方法的效果。(当时30m范围内,基于图像方法的SOTA是22%的准确率,本文达到了74%)
ps:
- 以往基于图像的方法,最主要的工作就是模态融合,辅助基于点云的方法得到更好的效果 害!
- 纯图像的话,也都是将深度图当成辅助信息的,而伪点云这一类的方法,将深度图转换成为伪点云作为检测的主要信息进行后面的检测。
基于伪点云方法的优点
:
- 转换成伪点云之后,就将数据从2维转换到了3维,空间信息的表示就很明确了,模型的学习会容易一点(纯图像的话空间信息是隐含的;将深度图作为额外通道添加到图像当中,空间信息同样不明确,空间坐标只知道z,x和y还是隐含的或者说需要转换的)
- 在3维空间中学习可以得到一些3维空间独有的信息,这是2维中获取不到的
- 可以借鉴基于点云的算法了
细节
一些分析
效果上:
左下角是SOTA的基于双目相机的深度估计算法得到的深度图,其实已经能够很好的展现深度信息了。左上角是基于伪点云的方法与基于点云的方法的效果对比,发现检测效果已经很接近了。右边是伪点云与点云的鸟瞰图效果,发现他们对齐的很好(生成的伪点云和原始点云是很接近的)。
点云和图像深度相关的分析
激光雷达信号,无论是使用原始点云还是采用鸟瞰图形式,对象的形状和大小对于深度而言是不变的,所以在原始点云中采用3D卷积,以及在鸟瞰图中采用2D卷积是很合理的事情(虽然鸟瞰图中会将不同高度的点聚合到一起,但是一般情况下,这些点都是来自同一个物体的)。
而图像中的深度预测是对每个像素都进行的密集预测,对于远处的物体、微小的物体,是很难进行估计的。
而且卷积的基本假设在深度图中显得不那么契合,一方面相邻像素之间的深度可能会差距很大(相邻像素在3D空间中距离可能非常远),另一方面,深度图中也有多尺度问题(相同深度的目标,占据的像素数可能大不相同),图像中使用FPN之类的方法缓解。
网络结构
网络结构的核心是深度估计、深度图转换为伪点云、基于点云的检测算法,其中第一部分和第三部分可以是任意算法,当然深度估计最好还是用双目图像效果会好一点。
深度图转换为伪点云:
采用下面的公式,将原图上的像素坐标和深度图中的深度值,转换成了点云的空间坐标。
这个公式其实是相机成像的逆过程(详情可以参考:【3D目标检测】单目相机成像原理)
后处理:
按照点云的一般高度剔除部分伪点云,另外雷达信号的反射强度在伪点云中全部设置为1了