中国科学院大学学报  2022, Vol. 39 Issue (5): 677-683   PDF    
基于双目点云的三维物体检测准确性分析
刘王超1,2,3, 娄鑫1,2     
1. 上海科技大学信息科学与技术学院, 上海 201210;
2. 中国科学院上海微系统与信息技术研究所, 上海 200050;
3. 中国科学院大学电子电气与通信工程学院, 北京 100049
摘要: 双目相机虽然能通过算法生成密集的深度数据,但其在精度上与激光雷达生成的深度数据有着较大的差距,特别是在纹理不明显的区域。针对这种现象,尝试使用激光雷达的精确点云来排除由双目相机产生的pseudo-LiDAR数据中与之差别较大的部分点,然后将优化后的pseudo-LiDAR用以进行三维物体检测。实验结果显示,将pseudo-LiDAR数据中的不准确点(坏点)排除,有助于提高检测准确率,最多可提高21.02%。因此,如何不依赖激光雷达数据来排除pseudo-LiDAR点云中的坏点是进一步提高双目相机系统检测准确率的关键。
关键词: 三维物体检测    激光雷达    双目相机    点云    误差    
Accuracy analysis of 3D object detection based on stereo point cloud
LIU Wangchao1,2,3, LOU Xin1,2     
1. School of Information Science & Technology, ShanghaiTech University, Shanghai 201220, China;
2. Shanghai Institute of Microsystem & Information Technology, Chinese Academy of Sciences, Shanghai 200050, China;
3. School of Electronic, Electrical and Communication Engineering, University of Chinese Academy of Science, Beijing 100049, China
Abstract: 3D object detection is a crucial task in autonomous driving. Recently, the accuracy of LiDAR-based 3D object detection algorithms have improved dramatically. However, if we replace the LiDAR data with the depth map that generates from stereo cameras, the detection performance drops a lot. In a recent research, it is found that by transforming the stereo-based depth map to point cloud representation, referred to as pseudo-LiDAR, the performance of 3D object detection can be improved significantly. However, there is still a big gap of accuracy between LiDAR-based and stereo-based algorithms. One of the main reasons is that there are error points in the transformed pseudo-LiDAR data. To study this, we use the LiDAR points cloud to correct the pseudo-LiDAR data, i.e., to detect and exclude the error points. Then we use the optimized pseudo-LiDAR to perform 3D object detection. Experimental results show that the detection accuracy can be improved by as much as 21.02%.
Keywords: 3D object detection    LiDAR    stereo cameras    point cloud    error    

三维物体检测是自动驾驶中一项重要的任务。目前已存在的三维物体检测算法都依赖于激光雷达获取的准确的三维点云数据。虽然激光雷达能获取精确的深度信息, 但它仍有较大的局限性, 原因有二: 第一, 激光雷达很昂贵, 会大幅度提高自动驾驶的硬件费用, 不利于商业上推广使用; 第二, 盲目依赖单一传感器可能会导致一些安全隐患, 因此需要其他传感器以防意外发生。双目相机就是一个很好的备选方案。光学相机的成本要低很多, 并且不同于激光雷达受限于稀疏的激光扫描光束, 双目相机可以获得密集的深度图。

近年来, 一些文章研究了用单目或双目深度估计[1-2]来做三维物体检测[3-4]。然而, 主要的研究成果都集中在用双目深度图作为激光雷达方法的一种补充[5]。单独使用深度图像的方法只能实现很低的检测准确率。

最近有研究表明, 双目深度图相对于激光雷达点云在检测表现方面存在巨大差距的主要原因不在于深度信息上的准确性, 而是因为双目所采用的三维信息数据表示方式不适用于三维物体检测的卷积网络[6]。文献[6]提出一种分为两步的基于双目相机的三维物体检测方法。首先将通过双目算法估计得到的深度图转化为点云图, 这种对激光雷达数据的仿制称为pseudo-LiDAR; 然后, 再将pseudo-LiDAR数据放入到基于激光雷达点云的三维物体检测流程中训练。通过改变三维数据的表现形式, 实现了在检测准确率上的巨大提升。

然而, 这种通过改变数据表示形式得到的准确率相对于原始激光雷达数据得到的检测准确率仍然有不小的差距。对比双目深度图和激光雷达点云图, 除了在数据表示形式上的差别, 发现原作者在假设时认为双目相机和激光雷达的深度信息的准确性是一致的, 这种假设是存在缺陷的。众所周知, 激光雷达的数据是通过激光扫描直接获取, 而双目相机需要通过算法计算不同位置相机拍摄的图片的对应匹配点进而获取深度信息。对比这两种传感器的数据获取方式, 明显激光雷达的数据更加精确, 而双目深度图更加密集。这种数据的精确程度对检测结果会产生什么影响是原作者没有考虑的。针对这个问题, 本文设计实验并分析这些因素对检测准确性的影响。

1 基于双目的三维物体检测模型 1.1 三维点云数据处理

点云数据是一堆空间点的集合, 具有无序性和旋转性, 而图像是一堆像素点按照固定的顺序整齐排列的, 由于这两种数据表现形式的巨大差别, 所以无法用现有的处理二维图像的卷积网络处理三维点云。目前, 利用点云数据来做三维物体检测的算法, 主要使用下述这几种方法对数据进行预处理。

第一, 多视角方法。MV3D(multi-view 3D)[7]将激光雷达的点云数据从不同角度进行投影获取多角度特征, 然后特征被视图池化过程(view pooling procedure) 聚合起来成为三维物体。第二, 体像素法。VoxelNet[8]通过将点云数据视为空间中的体像素, 然后用类似于平面上的二维卷积方法进行三维卷积对空间中的点云进行特征提取。第三, 点云直接处理方法。PointNet[9]直接处理空间中的无序点云, 通过空间变化和池化操作对点云整体提取出全局特征。

1.2 深度估计

要使用双目相机代替激光雷达, 首先是要获取精确的深度信息。双目视觉算法计算深度的典型流程包括匹配代价计算, 代价聚合, 视差计算和视差优化。其本质就是找到一对图像中的匹配对应点。最近, 随着深度学习的发展, 大量利用深度卷积神经网络的方法[10-11]开始在双目视觉上使用。PSMNet[12]就是一种基于全局信息立体匹配的卷积神经网络, 其通过网络的学习自动找到匹配点, 并通过引入空间金字塔池化(spatial pyramid pooling)结构, 将像素级的特征提升为区域级, 减少病态(ill-posed)区域带来误差的问题, 实现了结果上的明显提升。

由于通过双目算法得到的是视差图(disparity map), 然而实验中要求的是深度信息, 所以需要将其转化为深度图。视差与深度之间存在的转换关系为

$ D=\frac{f \times b}{d \times p_{\mathrm{s}}}. $ (1)

其中:b(baseline)为一对相机之间的间距,f为左相机的水平焦距,d为视差,ps为相机的像素长度,D则为需要求得的深度。

1.3 Pseudo-LiDAR数据的生成

在以往对于深度信息的处理中, 通常以深度图的形式表示。但是深度图是一种二维的图片, 相对于激光雷达三维点云的表示形式, 有两个明显的问题: 第一, 在图片中, 由于相机成像的特点, 远距离的物体会变得很小, 目前对小物体的检测是很困难的; 第二, 在进行局部计算, 例如卷积或者池化操作时, 图片上相邻的2个像素点, 在实际的三维场景中可能分布于2个深度相差很远的物体上, 这使得确定物体在三维空间中的位置变得困难。所以, 将深度信息以空间中点云的形式表现出来可以更好地表现物体的实际信息。将相机坐标系中的每一个像素点(u, v)转变为世界坐标系中的三维位置坐标(x, y, z)。变换公式如下:

$ x=\frac{\left(u-c_{\mathrm{U}}\right) \times z}{f_{\mathrm{U}}}, $ (2)
$ y=\frac{\left(v-c_{\mathrm{V}}\right) \times z}{f_{\mathrm{V}}}, $ (3)
$ z=D(u, v). $ (4)

其中: fU是水平焦距, fV是垂直焦距, 都是相对于左相机, (cU, cV)是左图的中心位置像素。通过上面的变换公式, 可以将深度图中的全部像素点, 转变为三维世界中的空间点。将这种通过公式变换后的三维点云称之为pseudo-LiDAR。

2 问题描述和验证方法 2.1 问题描述

将pseudo-LiDAR作为输入数据放入到三维物体检测模型中进行测试的实验结果显示, 虽然检测结果相对于没有经过改变的双目深度图的结果有了很大的提升, 但是与使用激光雷达的点云作为输入的表现相比, 仍然有着不小的差距。文献[6]作者得出的结论是基于一个假设, 认为激光雷达的点云和双目相机产生的深度图在检测中结果的不同, 不在于数据的精度, 而在于数据的表示形式。但是实验结果却表明, 不仅数据的表示形式会对实验结果有影响, 同时数据的精度同样可能会有影响。所以我们认为文献[6]中的假设是不全面的。由于激光雷达和双目相机获取深度信息的方式不同, 导致在数据的精确程度上, 激光雷达要优于双目相机。但是, 激光雷达的数据相对于双目相机来说是稀疏的, 因此在数据的密集程度上, 双目相机是有优势的。所以, 数据的精确程度和点云的密集程度, 会对最后的检测结果产生什么样的影响, 是接下来要讨论的问题。

2.2 验证算法 2.2.1 实验流程

图 1为本论文提出的验证基于pseudo-LiDAR的三维检测准确性的流程图。首先, 在获得相机的原始双目图像之后, 通过PSMNet算法和深度估计得到深度图。然后, 将深度图转化为pseudoLiDAR点云数据。不同于文献[6]中直接将未处理过的pseudo-LiDAR数据送入三维物体检测模型的做法, 本文用激光雷达数据作为参考数据, 通过相应算法排除pseudo-LiDAR中的误差数据, 即与激光雷达数据差距较大的点。最后将优化过的pseudo-LiDAR输入到三维检测模型中去, 对比数据优化前后的检测结果以研究深度数据精度以及密度对检测的影响。

Download:
图 1 验证pseudo-LiDAR检测准确性流程图 Fig. 1 Flow chart to validate the accuracy of pseudo-LiDAR detection
2.2.2 Pseudo-Lidar数据优化

激光雷达通过激光投射到物体表面进而利用回波的方式来探测物体距离, 相比较于双目相机产生的深度信息, 其数据的准确性更加可靠。根据上述原因, 在接下来的算法中, 都将激光雷达的数据作为真实深度数据, 用来排除pseudo-LiDAR中误差点。数据优化的过程可分为如下3步。

1) 截取投影区域。激光雷达数据是通过水平光束扫描整个空间获得的, 辐射范围达到360°。但是通过双目相机产生的pseudo-LiDAR数据只采集了相机正前方的环境信息, 可视角度小于激光雷达。本文需要用激光雷达的数据作为参考数据来排除pseudo-LiDAR中的误差数据, 因此需要保证可视角度的一致性, 即保证两种传感器所感知的环境范围一致。本文通过获取pseudo-LiDAR的可视角度范围, 然后截取激光雷达的点云, 截取后的点云就是算法中所需要的真实数据。图 2展示了激光雷达数据的一个场景截取前和截取后的对比。

Download:
图 2 激光雷达截取前和截取后的点云场景 Fig. 2 Point cloud scenarios of LiDAR before and after interception

2) 搜索pseudo-LiDAR点云附近的激光雷达点。经过截取激光雷达的点云数据后, 激光雷达与pseudo-LiDAR的数据在空间中是存在对应关系的。但是, 与图像中像素点整齐排列不同的是, 点云数据在空间中并不是整齐有序分布的。也就是说, 在一组对应的点云数据中, 很少会出现2个坐标完全一致的点。但是, 在对应的点云中空间坐标相近的点仍然可以认为表示相同的信息。因此, 本论文利用K近邻搜索算法, 在pseudoLiDAR中每一个点附近都搜索到K个激光雷达的数据点。这样搜索之后, 在每一个pseudoLiDAR点的邻近区域都分布着K个激光雷达的数据点, 并且在空间中表达的信息是相似的。再考虑到优化数据的准确性, 本文中只取与之距离最近的一个点, 也就是1NN算法。还有, 虽然激光雷达和pseudo-LiDAR的数据都是三维点云, 但在本文验证算法中, 搜索过程中并没有使用点云数据的三维信息, 而是采用了投影平面的二维信息来搜索相关点云, 因为另一个维度的信息(深度信息)需要用来判断误差。

3) 双目数据优化。在经过搜索pseudoLiDAR点云附近的激光雷达点云数据之后, 可以得到以每一个pseudo-LiDAR为中心点, K个不均匀分布在周围的激光雷达点的数据集。如果搜索范围是一个很小的局部区域, 可以认为它们深度信息是一致的。但是, 由于激光雷达数据的稀疏性, 部分pseudo-LiDAR的周边区域搜索到的激光雷达数据点可能距离较远。所以为了保证两种数据表达信息的一致, 本文设置一个搜索范围阈值D。至此, 可以通过比较分布在周围的激光雷达的点的深度信息与pseudo-LiDAR的深度差来判断是否存在误差。为简化问题, 取距离pseudoLiDAR最近的激光雷达的点作为真实数据。设两组数据之间的深度差为Δ, 判断深度阈值为T。本文提出两种不同的优化方法。①保留有效点。如果Δ < T, 就认为这个pseudo-LiDAR点为有效点, 保留这个点。②排除误差点。如果Δ>T, 就认为这个pseudo-LiDAR点为误差点, 排除这个点。一个场景优化前和通过优化方法①排除误差后的点云俯视图如图 3所示。

Download:
图 3 Pseudo-LiDAR优化前和优化后的点云场景 Fig. 3 Point cloud scenarios of pseudo-LiDAR before and after optimization

本论文通过上面的一系列步骤, 实现了对pseudo-LiDAR的优化处理。但是在优化数据的过程中使用了两种不同的算法, 这对实验结果是有影响的, 但具体对物体检测准确率的影响如何, 需要在实验中确定。

3 问题描述和验证方法

使用KITTI物体检测基准(benchmark)[13]来验证提出假设的准确性。根据文献[8]中的方法, 将数据集中提供的7 481训练数据按照大约1:1的比例分为训练集和验证集, 每一部分分别包含3 712和3 769个数据。

同时为保证验证结果的可靠性, 本文还使用了两种不同的三维物体检测算法, AVOD[14]和FPointNet[15]。这两种算法都使用图像和激光雷达的信息作为输入。但在本文的训练以及检测过程中, 需要将经过优化后的pseudo-LiDAR代替激光雷达作为输入数据。

3.1 衡量指标

在物体检测中, 通常用交并比(intersection over union, IoU), 也就是预测边框和真实边框的交集和并集的比值, 来衡量检测的难度。交并比数值越大, 表示检测出来的物体与真实物体重合度越高。在三维物体检测中, 主要使用三维(3D) 和鸟瞰图(bird’s eye view, BEV)平均检测率衡量检测的准确率。本文分别用A3DABEV表示三维和鸟瞰图平均物体检测准确率。

本文中, 选择在IoU为0.5和0.7时, 分别使用三维和鸟瞰图平均物体检测率来验证测试集上的结果, 并且主要验证的是汽车这个类别。同时, 在KITTI数据集中, 根据真实边框的高度和遮挡或者缺失程度, 文献[13]中还将每一个类别分别划分为简单、中等、困难3个等级。通常, 距离传感器30 m距离以内, 可以称之为简单等级。

3.2 实验结果及分析

本实验是在Ubuntu16. 04操作系统下进行的, 使用英伟达的GTX2080TI进行加速。

首先, 设置参数搜索差值阈值D为0.033(即D的平方为0.001), 误差阈值T为0.3, 使用只保留有效点的优化方法, 将产生的数据作为AVOD和F-PointNet的输入进行训练, 产生的结果如表 1所示。表中记录的是关于汽车类别的A3DABEV

表 1 优化前后的检测效果 Table 1 Detection effects before and after optimization

从实验结果可以清楚地看出来, 在简单等级下, 优化前和优化后数据, 最后的检测结果相差不是很大。但是在困难等级下, 尤其是在IoU为0.7时, 检测准确率最高提高21.02%。根据文献[13]中的等级分类, 简单等级意味着目标检测物完全可见并且遮挡较少, 困难等级就是目标物遮挡较多, 不易完全看见。通常情况下, 简单等级下检测的是距离传感器较近的物体, 困难等级下检测的时较远的物体。表 1中的数据表明, 双目相机产生的数据与激光雷达的数据相比是存在误差的, 这种误差在物体距离传感器较近时是很小的, 但是会随着距离的增大而增大。

同时做了两组优化参数误差阈值T和搜索范围D的对比实验。控制D为0.033时优化误差阈值T和保持T为0.3时优化搜索范围D。实验结果分别如表 2中误差阈值T和搜索范围D部分所示。从经验上分析, 误差阈值和搜索范围越小, 优化后的数据就与激光雷达的数据越接近, 数据就越精确。但是实验结果却与预想的并不一样。实验结果显示缩小搜索范围和降低误差阈值有时并不能确保检测准确率的提高, 而需要将参数保持在一个合理的范围内。最后统计了优化后的点云数量占原始点云的数量的百分比。可以明显发现, 优化后的数量占比20% 左右时会有一个比较好的效果, 当优化后的点云规模只有10% 左右的时候, 检测精度大幅下降。这就说明减小参数, 虽然数据会更精确, 但是也排除了大量误差不是很大的点云数据, 从而导致优化后的点云数据过于稀疏, 同样会影响最后检测的结果。

表 2 不同参数和不同优化方法的检测效果 Table 2 Detection effects of different parameters and different optimized methods

最后, 在此基础上, 又做了一组对比实验。各参数保持不变, 使用前文提到的两种不同的方法来优化pseudo-LiDAR数据, 然后分别将优化后的数据输入到AVOD算法中进行训练, 最后得到的实验结果如表 2中优化方法部分所示。使用排除误差点这种方法来优化数据, 对实验结果基本上没有影响, 甚至有点下降。而保留有效点这种方法却有很大提升。这是因为激光雷达的数据点是稀疏的, 而pseudo-LIDAR的数据点是密集的, 所以会出现pseudo-LiDAR的邻近区域内没有激光雷达的点。而排除误差点方法不仅包含了保留有效点方法得到的所有点, 还将那些远离激光雷达的pseudo-LiDAR的数据点保留下来。这表明在原有精确的稀疏数据的基础上, 加上一些对缺失区域的补充数据, 如果这部分数据存在误差, 不仅不会对原始数据有提高, 还会降低数据的可靠性, 带来检测准确率的降低。也就是说, 在三维物体检测中, 数据的密集程度对检测结果的影响不是很大, 数据的准确性才更重要。所以, 可以得出结论, 在三维物体检测中, 准确的数据点才是关键, 盲目地多传感器数据融合有时并不会带来效果的提高。

4 结束语

针对基于双目数据生成的pseudo-LiDAR的三维物体检测结果相对于基于激光雷达点云的结果仍有不小差距的问题, 提出自己的假设, 认为差距产生的主要原因是pseudo-LiDAR数据中存在深度不准确的点。基于上述假设, 基于激光雷达的精确点云数据, 利用K近邻算法对pseudoLiDAR的数据进行了优化, 并以此为输入进行物体检测, 检测结果有了明显提升。这表明通过双目算法产生的pseudo-LiDAR数据中的不准确点对三维物体检测结果有较大的影响。采用两种不同的方法来优化pseudo-LiDAR, 实验结果表现出明显的差别。这表明对物体检测的准确性的影响不在于数据的密集程度, 而在于数据的精确程度, 盲目地多传感器融合有时并不会带来检测结果的提高。本文的不足之处在于仍然使用了激光雷达的数据作为校准数据, 优化了pseudo-LiDAR数据的精度, 从而提高了物体检测的准确率。接下来的工作要直接从pseudo-LiDAR数据本身来优化数据, 实现检验准确率的提高。

参考文献
[1]
Lei Z Y, Wang Y, Xu Y F, et al. From coarse to fine: a monocular depth estimation model based on left-right consistency[C]//2019 IEEE 19th International Conference on Communication Technology (ICCT). October 16-19, 2019, Xi′an, China. IEEE, 2019: 1621-1625. DOI: 10.1109/ICCT46805.2019.8947220.
[2]
Mayer N, Ilg E, Huusser P, et al. A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). June 27-30, 2016, Las Vegas, NV, USA. IEEE, 2016: 4040-4048. DOI: 10.1109/CVPR.2016.438.
[3]
Chen X Z, Kundu K, Zhu Y K, et al. 3D object proposals using stereo imagery for accurate object class detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(5): 1259-1272. Doi:10.1109/TPAMI.2017.2706685
[4]
Xu B, Chen Z Z. Multi-level fusion based 3D object detection from monocular images[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). June 18-23, 2018, Salt Lake City, UT, USA. IEEE, 2018: 2345-2353. DOI: 10.1109/CVPR.2018.00249.
[5]
Liang M, Yang B, Wang S L, et al. Deep continuous fusion for multi-sensor 3D object detection[C]//European Conference on Computer Vision (ECCV). Munich, Germany: 2018: 663-678.
[6]
Wang Y, Chao W, Garg D, et al. Pseudo-LiDAR from visual depth estimation: bridging the gap in 3D object detection for autonomous driving[C]//2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). June 15-20, 2019, Long Beach, CA, USA. IEEE, 2019: 8437-8445. DOI: 10.1109/CVPR.2019.00864.
[7]
Chen X, Ma H, Wan J, et al. Multi-view 3D object detection network for autonomous driving[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). July 21-26, 2017, Honolulu, HI, USA. IEEE, 2017: 6526-6534. DOI: 10.1109/CVPR.2017.691.
[8]
Zhou Y, Tuzel O. VoxelNet: end-to-end learning for point cloud based 3D object detection[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition(CVPR). June 18-23, 2018, Salt Lake City, UT, USA. IEEE, 2018: 4490-4499. DOI: 10.1109/CVPR.2018.00472.
[9]
Charles R Q, Su H, Mo K C, et al. PointNet: deep learning on point sets for 3D classification and segmentation[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). July 21-26, 2017, Honolulu, HI, USA. IEEE, 2017: 77-85. DOI: 10.1109/CVPR.2017.16.
[10]
Guo X Y, Yang K, Yang W K, et al. Group-wise correlation stereo network[C]//2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). June 15-20, 2019, Long Beach, CA, USA. IEEE, 2019: 3268-3277. DOI: 10.1109/CVPR.2019.00339.
[11]
Wu Z Y, Wu X Y, Zhang X P, et al. Semantic stereo matching with pyramid cost volumes[C]//2019 IEEE/CVF International Conference on Computer Vision (ICCV). October 27-November 2, 2019, Seoul, Korea(South): IEEE, 2019: 7483-7492. DOI: 10.1109/ICCV.2019.00758.
[12]
Chang J R, Chen Y S. Pyramid stereo matching network[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). June 18-23, 2018, Salt Lake City, UT, USA. IEEE, 2018: 5410-5418. DOI: 10.1109/CVPR.2018.00567.
[13]
Geiger A, Lenz P, Urtasun R. Are we ready for autonomous driving? The KITTI vision benchmark suite[C]//2012 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). June 16-21, 2012, Providence, RI, USA. IEEE, 2012: 3354-3361. DOI: 10.1109/CVPR.2012.6248074.
[14]
Ku J, Mozifian M, Lee J, et al. Joint 3D proposal generation and object detection from view aggregation[C]//2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). October 1-5, 2018, Madrid, Spain. IEEE, 2018: 1-8. DOI: 10.1109/IROS.2018.8594049.
[15]
Qi C R, Liu W, Wu C X, et al. Frustum PointNets for 3D object detection from RGB-D data[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). June 18-23, 2018, Salt Lake City, UT, USA. IEEE, 2018: 918-927. DOI: 10.1109/CVPR.2018.00102.