张冬冬,郭 杰,陈 阳
(陆军工程大学野战工程学院,南京 210007)
目标检测,作为三维数据处理与分析的基础技术、基础算法,是计算机视觉当前热门研究方向之一。数据是研究的基础,目前主流的三维数据表示方法主要有深度图、三角网格、体素和点云。其中,点云是最简单的一种三维数据表示方法,具有获取简单、易于存储、可视性强、结构描述精细等优点,而且能够方便地与深度图、体素等其他数据格式相互转换,已成为三维重建、三维目标检测、SLAM(即时定位与地图构建)等研究领域最基本的数据格式。点云定义为同一空间坐标系下表达目标空间分布和目标表面光谱特性的海量离散点集合,每个点包含特定的位置信息和其他属性信息,如颜色、激光反射强度等。与传统的二维图像相比,点云在分辨率、精度、纹理信息等方面有了很大提升,具有多属性、可量测、高精度、高穿透、受环境和天气因素影响小等特点,已在许多重大工程和典型领域得到广泛应用,如机器人与自动驾驶、军事目标侦察、森林资源调查、电力走廊安全巡检、文物三维数字化、临床医学辅助诊断和治疗等[1]。
早期对点云场景的目标检测主要是基于三维特征的识别,即利用点云的几何空间结构提取物体的特征信息,然后与已有的特征信息进行比对进而完成检测。特征比对主要是利用支持向量机(SVM)、随机森林(Random Forest)及Adaboost等已经训练好的分类器,因此只能对分类器已经学习到的物体进行识别,且特征提取、数据处理仍依托人工操作,方法较为繁琐复杂。随着深度学习的迅速发展和广泛应用,研究人员提出了大量基于深度学习的三维目标检测方法,点云的特征提取与数据处理才渐渐变得智能自主而无需人工干预,并且与传统方法相比,此类模型性能得到显著提升,达到了更高的基准。
目前已有一些基于深度学习的三维目标检测综述性研究[2-5],本文在前人工作基础上进行了丰富和完善,总结了基于图像视锥、基于数据降维、基于原始点云3类三维目标检测方法,比较了每类方法的优缺点,提炼了每类方法的工作原理和主要创新点,最后对三维目标检测未来研究方向进行了展望。
随着深度学习在二维目标检测的迅速发展和优异表现,越来越多的研究人员尝试将其应用于点云的目标检测。然而,点云本身具有稀疏性、离散性、无序性和旋转平移不变性等,二维目标检测的成熟技术无法直接应用于点云,对点云数据的处理仍面临较大挑战。
激光雷达在采集点云数据时,近处物体反射的点较多、远处物体反射的点较少,因此采集到的点云会呈现“近密远疏”的特点,如图1所示。并且,采集过程中通常还会伴有一定环境噪声,会造成采集到的点云存在很多干扰点。此外,还会因为障碍物遮挡、物体之间相互遮挡、高反射物体等情况导致部分物体点云不完整或空洞缺失。
图1 Velodyne HDL-64E激光雷达采集的点云数据Fig.1 Point clouds scanned by Velodyne HDL-64E LiDAR
在应用深度学习对点云进行目标检测时,首先需要提取点云的特征。二维目标检测中一般利用卷积核和卷积神经网络遍历整个图像提取特征,借鉴二维目标检测的方法,采用三维卷积核和单纯的三维卷积方法遍历整个点云提取特征,会带来两个问题:一是消耗非常巨大,因为点云广泛分布在三维空间内,遍历整个点云会带来巨大的内存和时间消耗;二是大部分卷积为无效特征提取,因为点云的稀疏性,大部分空间不存在点,会导致无效空卷积。
点云的离散性主要表现在两个方面:(1)空间分布离散,点云中每个点都是独立扫描相互独立的,不依赖于其他点而单独存在,从整体上看,点云是一个离散的、非结构化的点集合,不定义在某个区域内,相邻点之间的距离也不固定,因此建立点与点之间的关系较难;(2)组织结构离散,简而言之就是不同数量的点云可以表示同一物体,点云通过其整体几何结构信息来描述物体,而不依赖点的数量,因此描述一个物体的点云其数量是不确定的。如图2所示,描述同一架飞机的点云稀疏稠密不同,左图能够描述飞机的更多细节,但右图也可判断出物体的类别。虽然人眼能清晰地分辨出二者不同,并判断其均属于飞机类别,但神经网络却无法简单实现这一点。
图2 不规则离散分布在空间中的三维点云Fig.2 Irregularly and discretely distributed point cloudsin space
点云本质上是空间中一群点的集合,每个点包含了大量属性信息。从数学的角度或数据结构的角度,点云应当由“集合”来描述,集合中一个元素代表点云中一个点。集合中每个元素的地位是相同的,元素之间是无序的。同样地,点云中每个点的地位也都是相同的,点与点之间是无序的,存储在集合中点的先后顺序对于集合而言无关紧要,也不会因为点存储的先后顺序改变点云的性质特征。然而,神经网络却对输入数据的排序非常敏感,点的存储顺序直接影响神经网络的理解学习。如图3所示,假设一个物体的点云数据由7个点组成,左图将其表示为[P1,P2,P3,P4,P5,P6,P7],右图将其表示为[P4,P6,P5,P7,P3,P1,P2],显然不论张量中点的顺序如何变化,映射回三维空间中仍然表示的是同一个物体。然而,以左图张量为输入训练出来的神经网络模型很可能无法对右图张量做出正确预测。
图3 同一点云的不同张量表达Fig.3 Different tensor expressions of the same point clouds
对于点云而言,无论如何旋转或平移,点与点的相对位置始终保持不变,点云所表示物体的形状和大小也不会发生任何变化,如图4所示,它是一种刚体变换。然而,当对点云进行旋转或平移时,点云中的点的坐标会发生相应变化。因此,旋转或平移虽然并未改变物体的空间结构,但却改变了表达其空间结构的三维坐标。神经网络需要适应点云的这种旋转平移不变性质,无论如何旋转或平移,无论参考坐标系怎样变化,均应输出一致结果。
图4 点云的旋转平移不变性Fig.4 Rotation and translation invariance of point clouds
基于图像视锥的方法,结合了二维图像的高分辨率优势和三维点云的精确位置信息优势来进行目标检测,其主要思想是利用现有成熟的二维目标检测算法,首先从二维图像中获得目标的2D边界框,然后利用二维图像与三维点云的对应关系,将该2D边界框映射到三维点云中得到一个3D锥体候选区域,再从该区域提取目标的3D包围盒。此类方法的典型代表为Frustum PointNets[6],后续的基于图像视锥的研究工作大多是在此基础上进行改进的,其工作原理如图5所示,给定一个RGB-D数据,首先使用卷积神经网络在RGB图像中生成目标的2D边界框,然后从点云中获得其对应的3D视锥,最后利用PointNet++[7]来学习各个3D视锥的点云特征,从而提取目标的3D包围盒。
图5 Frustum PointNets三维目标检测原理Fig.5 Frustum PointNets 3Dobject detection principle
由于Frustum PointNets仅利用了图像中的位置信息,并没有使用其颜色信息,PointFusion[8]对其进行了改进,首先通过ResNet提取2D边界框内图像的特征(包括位置信息和颜色信息),然后与3D视锥点云特征进行融合。
SIFRNet[9]随后对Frustum PointNets再次进行了改进,如图6所示,提出了一种尺度不变和特征重加权网络(Scale Invariant and Feature Reweighting Network),包含Point-UNet、T-Net、Point-SENet三个模块,Point-UNet模块主要是对3D视锥点云进行分割,捕获点云的不同朝向信息以及强鲁棒性的形状尺度;T-Net模块主要是对物体3D包围盒中心进行估计;Point-SENet模块预测输出最终的3D包围盒。
图6 SIFRNet目标检测流程意图Fig.6 Thepipelineof SIFRNet for 3Dobject detection
Shin等[10]提出了RoarNet,解决了2D边界框投影到3D空间中LiDAR和相机两个传感器同步的问题。F-Con⁃vNet[11]在Frustum PointNets网络的基础上,改进了视锥区域点云的特征提取方式,如图7所示,具体就是在锥体轴上产生一系列的锥体,然后提取各个锥体内点云的特征,将点云的逐点特征转为视锥体级特征,进而利用全卷积网络(FCN)回归3D包围盒,这样不仅可以避免大范围遍历点云,提升检测效率,还可以在回归时减少对稀疏前景点的过度依赖,提高检测性能。
图7 F-ConvNet视锥特征提取Fig.7 F-Convnet frustumfeatureextraction
基于数据降维的方法,核心思想就是将不规则、稀疏无序、数据量巨大的点云数据降维转化后再进行处理,以节约内存和降低时间消耗。数据降维的处理方法有多种,较为典型的主要有以下3类。
(1)基于伪图片的方法,即将三维点云转化为二维伪图片数据,然后再运用已经相对成熟的二维目标检测技术进行检测。该方法的典型代表是PointPillars[12]和CenterPoint[13]。PointPillars能够在保证一定精度的同时实现较快的检测速度,其网络结构如图8所示,包含3个部分:Pillar Feature Net将三维点云转化为二维伪图片(Pseudo image),首先根据点云的X轴、Y轴坐标将点云划分到一个个Pillar(柱体)中,然后提取Stacked Pillars(堆叠柱体)的特征,并对Pillar所在维度进行Max Pool⁃ing(最大池化)操作得到Learned Features(学得特征),最后将其转化为二维伪图片;Backbone利用二维卷积对伪图片进行特征提取,Detection Head主要利用SSD回归物体的3D包围盒。CenterPoint主要从原始点云中学习生成表征目标中心位置的鸟瞰热力图(表示为M∈ℝW×H×F),然后利用二维卷积找到物体的大致中心点(热力图的峰值位置),并使用中心特征回归物体的位置和方向。
图8 PointPillars网络结构Fig.8 Network framework of PointPillars
(2)基于多视图的方法,主要从前视、俯视等不同视角将三维点云数据进行二维化处理,得到激光雷达前视图、鸟瞰图(BEV)等特征图,然后对这些特征进行融合,再应用2D目标检测器进行检测,典型的方法有BirdNet[14]、MV3D[15]和AVOD[16]等。BirdNet将点云投影转化为高度、强度和密度的三通道BEV特征图(其中密度进行归一化预处理),然后在BEV特征图上应用2D目标检测器,结合高度信息(将物体的最大高度减去地面估计高度)最后得到3D包围盒。BirdNet的重要贡献是提出密度归一化操作,使得高分辨率点云中训练的模型可以在较低分辨率的点云上使用。MV3D首先从多通道特征图(由高度、密度和反射强度组成)中计算候选区域,然后将候选区域映射回鸟瞰图(BV)、前视图(FV)和图片(RGB)3个视图中,如图9所示,利用3个视图的ROI区域进行ROI pooling获得3个视图特征并融合,最后进行目标分类和3D包围盒回归。AVOD对MV3D进行了改进,舍弃了MV3D中前视图(FV)特征输入,仅使用鸟瞰图(BV)和图片(RGB),使用裁剪、调整特征图尺寸大小和按位均值融合代替了MV3D的ROIpool⁃ing进行多模态特征融合,并且进行了两轮RPN区域建议,提高了小物体(如行人)的检测效果。
图9 MV3D网络结构Fig.9 Network framework of MV3D
(3)基于体素网格的方法,首先将三维点云降维转化为一个个堆叠的、相同大小的规则体素网格,然后应用3D卷积对体素网格进行特征学习提取,最后回归预测物体的类别和位置,典型的方法有VoxelNet[17]、SEC⁃OND[18]等。VoxelNet网络结构如图10所示,首先将点云划分为等间距体素,利用VFE层(voxel feature encoding layer)提取体素特征,然后将得到的体素特征降维成2D鸟瞰图,最后使用RPN网络输出检测结果。SECOND对其进行了改进,使用稀疏3D卷积替换了普通3D卷积,大大提高了推理效率。目前,稀疏3D卷积已成为体素点云特征提取的主要范式。
图10 VoxelNet网络结构Fig.10 Network framework of VoxelNet
基于原始点云的方法,直接作用于原始三维点云提取点云的特征,然后回归物体的3D包围盒,无需借助2D图像边界框获得3D点云视锥,也无需进行多视图投影或体素化等数据降维操作。典型的方法有Poin⁃tRCNN[19]、VoteNet[20]和3DSSD[21]等。
PointRCNN是一种两阶段网络,其网络结构如图11所示,第一阶段进行前景点和背景点分割,生成少量高质量初始检测盒,首先利用PointNet++对原始点云进行特征提取,然后进行Foreground Point Segmentation(前景点分割),同时额外增加一个Bin-based 3D Box Genera⁃tion(基于Bin损失的3D包围盒生成网络)来输出3D proposals(候选建议),Bin损失方法核心思想是将复杂困难的3D包围盒回归任务转化为简单容易的分类加回归任务;第二阶段对初始3D包围盒进行细化精修,首先利用Point Cloud Region Pooling(点云区域池化)对上述获得的3Dproposals进行局部特征提取,并将该局部特征进行Canonical Transformation(规范变换),即对每个pro⁃posal建立一个独立坐标系,坐标系的中心点为proposal的中心,X轴指向物体朝向,然后将其送入MLP获得新特征,并与全局语义特征堆叠融合,最后利用融合特征进行3D包围盒优化和置信度预测。
图11 PointRCNN网络结构Fig.11 Network framework of PointRCNN
VoteNet是一个基于深度点集网络和霍夫投票的端到端3D目标检测网络,如图12所示,整个网络分为两部分:第一部分处理现有的点云以生成Votes(投票),首先利用Point cloud feature learning backbone(点云特征学习骨干网络)提取原始点云(N×3)的特征,生成Seeds(种子点),然后利用Hough voting with deep networks(霍夫投票深度网络)为每个Seed学习一个3D空间的偏置和特征空间上的偏置以生成Votes(一些靠近3D物体质心的虚拟点);第二部分利用Votes来预测物体类别和3D包围盒,首先使用FPS(最远点采样)以及ball query(球查询)的方式采样聚合Votes得到K个Vote clusters(投票群集),然后经过两层MLP输出预测结果。
图12 VoteNet网络结构Fig.12 Network framework of VoteNet
3DSSD主要有3点贡献:一是开创性地将单阶段目标检测网络结构引入到三维目标检测中,在保证性能与两阶段检测器相当的情况下大幅度提高了检测效率;二是提出了一种融合空间距离与语义特征距离为度量新的采样方法F-FPS,并与距离最远点采样方法D-FPS、融合采样策略(F-FPS和D-FPS结合)进行了对比实验;三是提出了Candidate Generation Layer(候选点生成层),将采样初始点坐标向其对应实例的中心点进行偏移修正,提高了3D包围盒质量。
表1汇总了本文提及的三维目标检测各方法模型的提出年份、输入数据类型、关键技术、在KITTI测试集汽车类别上的3D检测性能和检测时间。
表1 基于深度学习的三维目标检测方法归纳与总结Tab.1 Induction and summary of 3D object detection methods based on deep learning
基于图像视锥的方法,将目标锁定到2D边界框对应的3D视锥范围中,相对于从整个三维点云中搜索目标而言,仅需从3D视锥区域内搜索目标,大大缩小了搜索空间,提高了搜索效率和检测精度。但是,顺序的操作流程也导致其性能受到二维图像检测器的限制。基于数据降维的方法,将三维点云降维转化成伪图片、多视图、体素后再进行目标检测,能够较好地利用成熟的2D目标检测技术,并且可以拥有较高的检测速度。但是,数据降维会导致点云数据信息隐性丢失。基于原始点云的方法,直接对原始的三维点云进行处理,保留了点云的原始数据特征,但同样不可避免存在一些问题:一是难以有效进行特征提取,二是难以处理大规模点云。
现有的三维目标检测方法达到了较高的精度和速度,但仍存在一定局限性。基于前述内容,对三维目标检测展望如下。
(1)随着传感器技术的发展和传感器成本的降低,未来的三维目标检测数据来源不仅仅是相机采集的图片和LiDAR采集的点云,还可能包括视频、radar等多模态数据,多模态数据融合的目标检测方法可能会是未来发展趋势。
(2)现有的三维目标检测模型对距离较近、尺寸较大、点云稠密的目标检测效果较好,但对距离较远、尺寸较小、点云稀疏以及存在遮挡重叠情况的目标检测效果较差。实际应用中的目标检测情况十分复杂,所以针对这一问题的解决方案非常值得挖掘和探索。
(3)三维数据标注成本较高,所以现有的目标检测模型大多是在标注充分的公开数据集训练和实验的。对于特定需求场景下的点云目标检测,由于缺乏标注数据集大多无法展开。弱监督或无监督的目标检测技术能够有效解决此问题,可能会是未来的一个重要研究方向。