以下笔记内容来自知网文献,阅读顺序本着先看最新发表的后看以前发表的,论文质量本着先看优秀期刊、优秀高校的,后看普通期刊普通高校的,论文类型本着先看博士论文后看硕士论文的原则。总结有不到位的,望各位看官指正。
激光雷达;点云; 三维目标检测; 注意力机制; 数据增强
三维目标检测(3D Object Detection) 三维边界框(3D bounding box) 增强现实(Augmented Reality, AR)
1 目标检测是计算机视觉领域的基本任务之一;
2 可以分为二维目标检测和三维目标检测;
3 当前基于深度学习的二维目标检测算法以趋于成熟,以 Faster R-CNN 和 YOLO 为代表的二维检测算法被广泛应用于实际生产和日常生活中;
4 三维目标检测领域方兴未艾,各种算法层出不穷。基于点云的逐点云检测方法,检测精度较高但速度较慢;基于体素的鸟瞰图检测方法,检测速度较快但检测精度较低[1]。
5 自动驾驶系统三个步骤:环境感知、行为决策、车辆控制;
6 感知系统探测周围场景信息:周围环境(道路、车辆、行人等)的相关信息(位置、方向、速度等);
当前主流的感知技术路线两种:基于摄像头的弱感知路线,以及基于激光雷达(Light Detection And Ranging,Li DAR)的强感知路线;
7 二维检测算法通常使用车载摄像头作为感知设备,基于车载摄像头弱感知系统具有成本低、实现性能较高的特点,无法提供准确的周围环境三维空间信息;
8 三维目标检测算法一般使用激光雷达作为感知设备,基于三维点云数据的感知算法,包含了目标对象的位置、距离、深度和角度等信息,数据构成更符合真实世界的情况;
9 目前国内外的主要激光雷达的生产商有:Velodyne、IBEO、Quanergy、思岚科技等公司,其中以 Velodyne 公司在业界中最为著名;
10 优缺点:摄像头成本低,雷达成本高;
11 激光雷达介绍:激光雷达全称激光检测和测距,又称光学雷达,是一种综合光探测与测量设备。工作时雷达通过主动发射激光束,然后接收器将接收到的反射信号回波与发射信号进行比较,处理到目标的相关信息(位置、角度、反射强度等),从而实现对目标的探测、跟踪和识别。目前市面主流的激光雷达有 32 线束、64 线束、128 线束等。激光雷达线束越多,测量精度越高。与传统照相机稠密像素点稠密像素点成像不同,激光雷达是稀疏点云成像的。此外点云是连续的,而图像则是离散的。点云可以反应真实世界目标的形状、姿态信息,但是缺少纹理、色彩信息,相对的图像则是对真实世界的目标离散化表达,缺乏目标的真实尺寸信息[1];
12 三维目标检测应该包括四个方面的输出:2D Bounding Box、3D Pose、3D Location 和 3D Bounding Box。传统的三维目标检测算法通常只输出物体的 2D Bounding Box 和 3D Pose,直到最近几年,才有少数的三维目标检测算法可以完整的输出 3D Bounding Box,而且其中多数算法依赖于物体的 CAD 模型或者训练多视角的模板[2]。
13 三维目标检测技术一定程度上建立在三维目标识别技术的基础上[3]。
基于图像的方法,基于点云的方法,基于点云和图像的方法。
基于图像的三维目标检测方法主要通过相机来获取图像数据。相机类型又可细分为单目相机、双目相机、多目相机、红外相机等。根据处理点云数据的方式进行分类,主要有三种:体素化,投影与保持原始点云状态。
(1)基于逐点云特征(Point-wise Feature)的目标检测方法;
(2)基于体素(Voxel)的鸟瞰图(Bird’s Eye View,BEV)目标检测方法;
(3)基于相机视图(Camera View)的目标检测方法;
(5)基于单目相机和低线束激光雷达的联合检测技术方案;
(1)单步检测(one-stage):单步检测直接通过主干网络给出检测目标的类别和位置信息,没有使用区域候选网络(RPN)。因此算法速度更快,但是检测精度相对双步检测网络略低。
如:YOLO
(2)双步检测(two-stage):双步检测通常包含一个多任务学习问题:1)区分前景物体框与背景并生成一系列样本候选框和类别标签;2)通过卷积神经网络回归一组系数使得检测框和目标框之间的交并比(Intersection over Union,IoU)最大化。最后,通过非极大值抑制(Non-Maximum Suppression,NMS)过程移除冗余的边界框(对同一目标的重复检测)。
如:Fast R-CNN,
近年来,随着深度神经网络的快速发展,目标检测由传统基于手工特征的检测方法发展到基于深度学习的检测方法,其中出现了以 RCNN、Fast RCNN、Mask RCNN 为代表的 two-stage 网络框架和以 YOLO、SSD 为代表的 one-stage 的网络框架[2]。
优缺点:较单步检测算法,双步检测算法通常检测速度较慢,但检测精度通常要高于单步检测。
根据传感器获取到的图像格式,可以将三维目标检测分成四类:基于单目相机的、基于双目/深度相机、基于激光雷达和基于多传感器融合。
(1)基于单目相机的三维目标检测,指的是使用单目相机拍摄的图像来进行检测的工作。由于单目图像缺乏场景的深度信息,因此需要通过物体的几何模型或者多视角约束来获取深度信息。
(2)基于双目/深度相机的三维目标检测,由于双目/深度相机不仅可以获取原始图像,还能直接获取对应的深度图像,检测相对于单目相机来说要容易一些。
(3)基于激光雷达的三维目标检测,是指使用激光雷达所获取的点云数据来进行物体的三维目标检测,在无人驾驶领域尤为常见。
(4)基于多传感器的三维目标检测,指的是融合多种传感器的信息,比如同时使用单目图像和激光雷达的点云信息,来对物体进行三维目标检测,这是未来无人驾驶的趋势所在。
尽管在工业领域可以采用多传感器融合的方式,但基于相机传感器的三维目标检测依然有成本低、适用范围广等优点,仍然是一个重要的研究领域。
室内场景相比于室外场景具有明显不同的特点。室内场景中包含的目标种类比较丰富,比如座椅、书桌、衣柜等,同类目标之间外观特征也可能存在着较大差异,并且室内场景尺度相对较小,以处理近距离目标为主。室内场景在传感器的选择上,更加偏向于使用双目/深度相机,相比于单目相机,除了能够获取目标丰富的纹理信息外还可以得到场景准确的深度信息。一般的双目/深度相机测距范围在几十米以内,在室内场景中更加适用。深度图指的是包含距离信息的图像,它的每个像素值保存的是传感器与拍摄物体的实际距离,看起来与灰度图像类似。基于双目/深度视觉的三维目标检测算法,物体离相机的距离是已知的,可以有效减少三维目标检测算法设计的难度。表 2.1分析了室内场景下不同三维目标检测算法的类型、机制和优缺点。
在室内场景中,基于双目/深度视觉的三维目标检测算法可以按照区域提取的卷积类型分为两类,2.5D 区域提议网络和 3D 区域提议网络。2.5D 区域提议网络指的是利用传统 2D 检测网络对双目图像和深度图进行处理,结合二维特征回归物体的三维信息。它的优点是网络结构相对简单,利用完善的 2D 检测网络快速实现目标提取和三维检测框的回归。3D 区域提议网络则是端到端的网络模型,直接使用三维卷积提取目标的三维空间特征。优点是充分利用了双目/深度相机所提供的物体三维空间信息,但是三维卷积相对于传统二维卷积计算量更大,在实时性上会有所不足。
室内环境下的基于单目视觉的三维目标检测方法通常需要对深度进行估计,其检测精度往往低于双目/深度视觉检测算法。但单目视觉算法的优点是传感器成本较低,应用范围广泛,通过单一的传感器完成三维目标检测使得系统的稳定性更强。
室外场景下的三维目标检测一个重要的应用领域是自动驾驶,主要是针对道路场景下车辆、行人、标识等多目标的三维边界框的回归问题。相比于室内场景,室外场景的三维目标检测更加具有挑战性,主要表现在以下两个方面:
① 室外场景受天气、光照的影响,背景环境相对于室内更加的复杂。
② 室外场景视野的变化更大,目标距离相对较远,并且有遮挡、截断的情况。
在自动驾驶中,目标三维空间定位和尺寸估计的精确度对安全性来说相当重要,对三维目标检测提出了更高的要求。表 2.2(引自文献[13])分析了室外环境下单目视觉和双目/深度视觉不同三维目标检测算法的机制和优缺点。
单目图像上的二维目标检测算法相对比较成熟,可以快速的实现目标在图像平面的分类和定位,但是在三维目标检测中仍然存在局限性,尤其是针对室外场景,对目标的深度估计更加困难,通过单一的纹理特征难以确定目标物体在三维空间中的位姿信息。因此,一些三维检测算法需要结合几何特征、三维模型匹配、先验信息融合、深度估计网络等方法回归目标的三维几何特征。 由于自动驾驶和增强现实等技术的发展,基于单目视觉的三维目标检测算法已经越来越成为研究的重点,其研究方法大致可以分为两类:一类是根据二维图像区域提取生成一系列三维目标候选框,在结合定义的先验信息回归精确的三维检测框;另一类是通过神经网络直接提取目标的三维特征,再结合三维模板匹配、重投影误差优化、深度估计等方法计算目标三维位姿,从而得到精确的三维检测框。基于单目视觉的方法缺少目标的深度信息,在三维目标检测的精度上始终有所不足,并且在处理遮挡、截断和远距离目标的情况下还存在不少困难。但是单目视觉在数据处理和传感器成本上有很大的优势,依然是不少领域中主流的选择方案。
室外场景中单目视觉三维目标检测算法,检测精度较低的主要原因是对目标的深度估计有较大偏差,尤其是对遮挡、截断和距离较远的目标。解决方法之一是使用双目/深度视觉相机,凭借准确的深度信息,在目标检测和定位上有明显的精度上的提升。双目图像可以利用左右两幅图像之间的匹配关系建立图像深度,获得深度图,所以双目视觉和深度视觉处理方法相同。 基于双目/深度视觉的三维目标检测算法可以分为两类:一类是基于单目图像和深度图的双通道卷积神经网络融合的方法;另一类是基于三维空间卷积的方法。室外场景下的三维目标检测算法与室内场景的解决方案类似,但是由于室外场景范围更广,目标的尺度变化范围更大,直接使用三维空间卷积会使计算量大幅度增加,故使用第一类检测方法更好。
Voxel Net
SECOND
PointPillars
Patch Refinement
PIXOR
HDNET
Voxel-FPN
MV3D
JPGVA
Frustum ConvNet
Object as Hotspots
PV-RCNN
Point RCNN
STD
3DSSD
CLOCs
SqueezeSeg
PointSeg
LaserNet
RangeRCNN
在目标检测领域中有一些通用的评价指标用于分析目标检测算法的优劣,比如在传统二维目标检测任务中,通常采用查准率(Precision)、查全率(Recall)、平均精度(Average Precision,AP)来定量分析目标检测算法的有效性和检测结果精度。
什么是回归?
寻找一种y=a0x1+a1x1+…+anxn+b
来你和真实的函数关系:y=f(x)
目标检测中的边框回归啧同理:
寻找(训练出)一个边框
拟合目标的真实边框,这个所谓的真实边框就是我们手动标定的边框。
参考文献:https://www.cnblogs.com/boligongzhu/p/15066380.html
不同于二维图像采用像素矩阵的统一表示,三维数据存在多种不同的数据表示形式,包括:
(1)多边形网格表示
(2)点云表示
(3)深度图像表示
(4)体素表示
(5)多视图表示
(6)and so on …
各种数据表示形式之间可以相互转换。图 1.4为不同三维数据表示形式的示例图。
多边形网格(Polygonal mesh)表示采用一系列顶点、边以及多边形面元来表示三维表面。面元形式包括三角形面元、四边形面元以及其它简单凸多边形面元,其中采用三角形面元的网格表示形式应用最为广泛 [23]。三角网格表示在数学上可表示为 M =< V, F >,其中 V 和 F 分别为顶点集和面元集,顶点集可采用一个二维矩阵表示 VNv∗3,每一行存储顶点的三维坐标,Nv为顶点数目,三角面元信息可采用一个二维矩阵表示 FNf∗3,每一行存储该三角面元的三个顶点在顶点集 V 中的索引,Nf为面元数目。多边形网格表示非常适用于三维建模和渲染等应用,广泛应用于计算机图形学领域。
点云(Point cloud)表示为一系列由物体表面采样的三维空间点的集合,每个点记录了该点在三维空间中的三维坐标 (x, y, z) 信息和其它属性(如反射信息)。点云在数学上可采用一个二维矩阵表示PN∗M,其中 N 为点云中点的数目,M 对应每个点的三维坐标、反射率等属性信息(M ≥ 3)。通常采用 LiDAR、
深度相机等传感器获取目标的点云。点云表示最大程度地保留了原始的传感器数据,不存在量化损失、投影损失。对于采用矩阵形式 PN∗M表示的点云,更改PN∗M中点的排列顺序(行序)不改变点云性质。
深度图像(Depth image)表示是一个单通道的图像,每个像素值为该像素对应的场景点到传感器成像平面的深度 / 距离。深度图像在数学上可采用一的二维矩阵表示 IN∗M,其中 N 和 M 分别为图像的总行数和总列数。
体素表示(Volumetric representation)或体素网格(Voxel grids)是二维图像像素化表示在三维空间的推广,是三维数据的一种结构化表示。体素表示将整个三维空间按照相互垂直的三个方向划分为三维网格,每个网格称为体素,是体素表示的最小单位。体素表示在数学上可采用一个大小 N ∗ M ∗ H 的三维矩阵表示,其中 N、M 和 H 分别为三维“图像”的长度、宽度和高度。体素表示具有规则性、均匀性,但其可看作对点云的一种量化处理,因此不可避免地丢失了物体的细节信息。同时,体素表示存在大量的冗余表示,使用了大量体素表示不在物体表面的“空”位置,存储消耗大,因此体素表示普遍分辨率不高。
多视图表示(Multi-view representation)为一系列从不同视角对三维目标进行成像获取的二维图像的集合,利用这些视角图像可以重建三维目标。
对于二维目标检测来讲,常用的数据集包括 ImageNet、PASCAL VOC、MS COCO 等。三维目标检测也有相应的数据集用于评价算法的性能。本章从室内和室外两个方面介绍常用的数据集,并介绍三维目标检测算法的一些评价标准。
SUN RGB-D 数据集是为了实现高级别场景理解任务所提出,包含 47 种不同的室内场景,19 种物体类别。
LineMod 数据集是室内工业用品数据集,包含 15 种无纹理的物体以及对应的3D 模型,共有 15 个视频,含有 18273 张图像,每一幅图像中都标注了物体的真实6D 姿态,并提供相机的内部参数。
NYU Depth 数据集是由纽约大学发布的针对室内目标检测任务的数据集,该数据集将室内场景分为厨房、客厅、浴室、卧室等多种类别,并使用 Kinect 传感器进行图像数据的采集。
KITTI 数据集是针对自动驾驶环境感知算法研究中最常用的公开数据集之一,可用于 2D/3D 目标检测、视觉测距、目标跟踪等计算机视觉算法的研究。
NuScenes 数据集是大规模自动驾驶数据集。与 KITTI 数据集不同的是,该数据集不仅包含了图像数据和激光点云数据,还包含了雷达数据。
PASCAL 3D+数据集是在 PASCAL VOC 2012 基础上进行 3D 目标标注的公开数据集,主要是针对三维目标检测和姿态估计任务。
三维数据集是三维视觉算法研究与评测的基础,目前已存在很多公共三维数据集 [24]。鉴于本文重点关注三维目标检测和三维目标识别任务,本节只介绍面向这两个任务的常用数据集,如图 1.5所示。
ModelNet 数据集 ModelNet 数据集 [15] 是普林斯顿大学视觉与机器人实验室(Vision&Robotics Labs)于 2015 年公开的一个大型三维 CAD 模型数据集,包含大约 662 类共计 120,000 个三维 CAD 模型。同时,ModelNet 还包含两个类别数目不同的子集,即 ModelNet10 和 ModelNet40。ModelNet10 共包含 10 类目标 4,899 个CAD 模型,而且所有的模型都沿着重力轴方向进行了人工姿态对齐。ModelNet40共包含 40 类目标 12,311 个 CAD 模型,未作姿态对齐处理。目前,ModelNet10 和ModelNet40 是最常用的三维目标识别基准数据集。
ShapeNet 数据集 ShapeNet 数据集 [25] 是由斯坦福大学、普林斯顿大学以及芝加哥丰田技术研究中心于 2015 年共同发布的大型三维形状数据集,包含大约 3135 个类别总共 220000 个人工合成的三维模型。同时,ShapeNet 还包含两个子集:ShapeNetCore 和 ShapeNetSem。ShapeNetCore 包含 55 类约 51300 个三维模型,主要应用于三维形状检索的性能评估。ShapeNetSem 包含大约 270 个类别共计 12000 个三维模型,除了类别标签外还包括目标的物理尺寸信息。
Sydney Urban Objects 数据集 Sydney Urban Objects 数据集 [26] 是悉尼大学于 2013 年公开的一个三维点云数据集,数据通过激光雷达 Velodyne HDL-64E 扫描悉尼中央商业区的城市街道获得,包含各种常见的城市街道目标,如车辆、行人、树木等。该数据集共包含 14 个类别共计 631 个目标的点云数据。由于目标点云数据由场景中截取,因此目标点云中包含背景干扰。此外,由于激光雷达只从一个视角进行扫描,因此点云中目标的形状是不完整的,对于识别任务该数据集相比于ModelNet以及hapeNet等数据集更具挑战性。
ScanNet数据集ScanNet数据集[[27]是斯坦福大学、普林斯顿大学以及德国慕尼黑工业大学于2017年共同发布的真实室内场景三维数据集。通过RGB-D深度相机对707个不同的室内场景进行录像,最终获得1500次扫描多达250万个视角的数据,并提供了相机三维姿态、表面重建、实例语义分割等标注信息,可用于场景分类、语义分割、目标检测等多种任务的评测。此外,ScanNet还提供了三维目标识别任务数据集,包含49个类别,采用体素表示形式,分辨率为32x32x32,每个样本被旋转12次,最终训练集包含111,660个样本,测试集包含31,272个样本,目标数据中同样包含背景干扰。
KITTI 数据集 KITTI 数据集 [16] 是德国卡尔斯鲁厄理工学院和丰田美国技术研究院于 2012 年联合发布的大型数据集,是目前世界上最大的面向自动驾驶应用的计算机视觉算法评测数据集。所有的数据通过装载在车辆上的 LiDAR、高分辨率视频相机、GPS/IMU 等传感器进行采集,包括市区、乡村以及高速公路等场景,可用于立体视觉 (stereo)、光流估计 (flow)、目标检测、目标跟踪以及语义分割等多种任务的算法评测。其中,三维目标检测数据集同时提供了已同步的 RGB 图像、点云数据、相机矫正参数以及目标的二维、三维检测框标注信息,包含 7481帧训练数据和 7518 帧测试数据,主要关注汽车Car)、行人(Pedestrian)以及骑车人(Cyclist)等三类目标。数据集中的目标存在一定程度的遮挡和截断,根据遮挡的程度以及目标尺度,分别建立了简单、中等以及困难等三种评测基准。此外,三维目标检测数据集还提供了鸟瞰图(Bird’s Eye View)下的检测性能评估。
SUN RGB-D 数据集 SUN RGB-D 数据集 [28] 是普林斯顿大学视觉与机器人实验室于 2015 年发布的一个 RGB-D 图像数据集。通过使用 RealSense、Xtion、Kinect 等多个深度传感器对多个室内场景进行成像,共获取 10,355 幅 RGB-D 图像。数据集包含 47 个场景类别、约 800 类目标,可用于场景分类、语义分割以及三维检测等多个评测任务。
考虑到三维目标检测技术一定程度上建立在三维目标识别技术的基础上,本节将先介绍三维目标识别技术的研究现状。
三维目标识别的本质就是通过对三维目标数据的分析确定目标的类别信息,可以概括为两个阶段,包括:
(1)特征提取。
(2)分类识别。
核心在于获取目标形状的高分辨力特征表示。根据三维数据表示形式的不同,基于深度学习的三维目标识别方法主要分为:
(1)基于体素卷积神经网络的方法。
(2)基于投影图卷积神经网络的方法。
(3)基于点云神经网络的方法等 。
(4)基于 mesh 表示的学习方法。
基于三维体素卷积神经网络的方法以三维数据的体素网格表示形式作为输入,利用体素卷积神经网络进行特征学习和分类识别。这种方法可看作二维图像领域的目标识别网络在三维领域的推广,输入数据由像素(pixel) 扩展到体素 (voxel),卷积网络的卷积操作由二维卷积扩展到三维卷积。
该类方法的开创性工作是由 Wu 等人 [15] 于 2015 年提出的 3DShapeNets,该方法将三维形状视作三维体素网格(voxel grid)上的二值概率分布,每个体素的值为 0 或 1,1 表示体素内包含目标数据,0 表示不含目标数据,从而得到三维数据的二值化体素网格表示。将该体素表示作为输入通过一个三维卷积深度置信网络(Convolutional Deep Belief Network,CDBN)进行目标识别和最佳视角预测(如图 1.6所示)。整个网络采用类似于深度置信网络的预训练、微调两阶段训练方法。同时,作者还公开了目前广泛使用的三维数据集 ModelNet。Maturana 和 Scherer[36] 进一步研究了三种不同的体素网格表示方法,并提出了一个相对简单、更易训练的体素卷积神经网络 VoxNet(如图 1.7),可直接采用标准的 BP 算法进行训练,其在 ModelNet 数据集上的性能大大超过了 3DShapeNets。Brock 等人 [37] 引入图像识别领域的 Inception、残差网络连接等技术,构建了一个深层体素卷积残差网络 VRN(Voxception-ResNet),并将多个 VRN 组合得到了一个多达 45 层的识别网络,在 ModelNet 数据集上取得了目前的最好性能。
一些研究工作利用多任务学习提高体素卷积神经网络的识别性能。Sedaghat等人 [38] 在目标分类网络的基础增加目标方向预测网络,同时学习目标分类主任务和目标方向预测辅任务,提出的网络结构 ORION 在 ModelNet10、Sydney UrbanObjects 等数据集上取得了较好的性能。Qi 等人 [39] 在分析了已有体素卷积神经网络不足的基础上提出了改进型三维体素卷积神经网络,通过利用辅助训练、NIN(Network In Network) 等手段提高了网络的泛化能力。Zhi 等人 [40, 41] 结合以上两种方法的优势,通过结合 NIN 和多任务学习机制设计了一个相对较浅的网络LightNet,在保持识别性能的同时提高了网络的计算效率。
近年来,随着以生成模型为代表的无监督学习的发展,有一些工作利用无监督学习解决无标签下的三维特征学习问题。Wu 等人 [42] 首次将生成对抗机制引入体素卷积神经网络,提出了无监督的三维生成对抗网络 3D-GAN,表明了生成对抗学习在三维目标识别任务中的可行性。Sharma 等人 [43] 受去噪自动编码器(Denoising Auto-Encoder,DAE)的启发设计了一个体素全卷积自动编码器网络VConv-DAE,通过估计体素网格状态从噪声数据中学习物体的三维形状特征表示。
针对三维体素表示形式存在的稀疏性、冗余性,一些工作利用三维数据的体素稀疏性表示来提高体素卷积网络的效率。Riegler 等人 [44] 提出采用八叉树对三维空间进行逐级划分,针对不同密度的局部点云采用不同分辨率的体素表示,最终得到混合分辨率的三维体素表示形式。同时,该团队设计了与之适应的卷积、池化等网络操作,并构建了一个八叉树神经网络结构(Octree Network, OctNet),网络的效率显著提高。此外,该网络结构可实现高达 2563 体素分辨率的输入。然而,该方法在体素分辨率降低后网络的效率会严重下降。Graham 等人 [45] 提出了一种三维稀疏卷积网络,可以只针对激活的体素及其相邻的体素进行卷积运算,对于非激活体素(一般为“空”体素)不进行计算,从而大大地提高了三维卷积运算的计算效率。但是随着卷积层的深入,激活的体素会不断扩散,体素表示的稀疏性不断降低,该方法的效率会严重下降。Wang 等人 [46] 充分借鉴前两个工作的优点,提出了一种基于八叉树的卷积神经网络 O-CNN,通过将三维形状表示成八叉树形式只在三维形状的表面所在的稀疏叶节点进行三维卷积运算,极大地提高了网络的效率,但该方法在网络设计时缺乏一定的灵活性。
基于投影图卷积神经网络的学习方法通过投影将三维数据转换为一幅或多幅二维图像,从而将三维视觉任务转换到二维图像上进行,通过对二维投影图像进行特征学习与融合获取三维目标的特征表示。投影方法包括多视角投影、全景图投影、切片投影等多种方法。
采用多视角投影的方法从物体周围不同视角对三维形状进行投影获取一系列二维投影图,研究工作主要集中在如何更有效地融合多视图间的特征信息。经典代表作是 Su 等人 [47] 于 2015 年提出的多视角卷积神经网络(Multi-viewConvolutional Neural Net- works, MVCNN),如图 1.8所示。该方法通过在三维模型周围不同视角下放置多个虚拟相机获取不同视角下的多幅二维投影图,然后采用网络参数共享的卷积网络提取投影图特征,最后采用视角池化层(view-pooling)融合多个视角的特征图获取三维形状特征表示。利用在 ImageNet [14] 预训练的卷积网络 VGGNet 提取的投影图像特征具有更强的特征表达能力。MVCNN 在ModelNet40 数据集上的三维目标识别和检索性能都远远超过了 3DShapeNets [15]。
Qi 等人 [39] 在 MVCNN 的基础上利用多分辨率三维卷积核获取三维数据的多尺度信息,进一步提高了网络在 ModelNet40 上的性能。Johns 等人 [48] 将多视角图像序列分解成多组图像对,采用卷积神经网络独立对每组图像对进行分类,通过学习每组图像对的贡献权重综合所有的分类结果。该方法具有更高的精度且不依赖于多视角的位置。Ma 等人 [49] 受人类视觉认知启发,提出了衡量视角图像贡献度的视图显著性概念,并基于此构建了一个基于视角显著度的多视图卷积网络结构VS-MVCNN。Bai 等人 [50] 基于多视图投影的学习方法设计了一个实时三维形状
搜索引擎 GIFT,具有很高的三维形状检索效率。Cao 等人 [51] 提出了一种球形投影将三维形状投影到多个“经度条”和“纬度条”上。Wang 等人 [52] 提出了循环聚类池化操作,将 MVCNN 的一级池化扩展为多级池化,增加了融合特征的信息,但其计算量显著增加。
采用全景图投影的方法通过绕三维物体一周进行圆柱投影(cylinder projection)获得单幅全景图(panoramic image),仅需处理单幅图像,计算量更小,但是该方法严重依赖于圆柱投影主轴的选择。Shi 等人 [53] 先将三维形状投影到该物体的圆柱体外侧表面,然后将圆柱体侧表面展开得到单幅二维全景视角图。为了消除物体旋转的影响,作者设计了一种逐行最大池化层(row-wise max-pooling,RWMP)获取全景视角图的旋转不变特征表示。但是该方法的圆柱投影需指定主轴,对姿态未归一化的物体较敏感,同时其旋转不变形只能应对绕主轴的目标旋转。Sfikas等人 [54] 先采用基于反射对称性的 SYMPAN 算法 [55] 对三维模型进行姿态归一化,然后将三维模型分别在空间域和方向域上投影。该方法相比于 Shi 等人 [53] 的方法具有更好的旋转不变性。进一步,该团队通过将多个该网络进行集成得到一个表达能力更强的网络结构 [56],达到更好的三维目标识别性能。
采用切片 (sliced) 投影的方法沿某个方向对三维形状进行平行“切分”得到多个切面图像。该类方法虽具有较高的效率,但切片表示丢失大量信息,普遍精度不高。Xu 等人 [57] 通过 16 个平行于坐标系 XOY 的平面对三维形状进行“切分”得到 16 个切面图像,将这些图像按照 4 ∗ 4 的方式组合成一幅图像,以此图像作为输入训练二维卷积神经网络。Gomez-Donoso 等人 [58] 采用 XOY、XOZ、YOZ 三个平面对三维形状进行“切分”得到三幅切面图像,然后连接卷积网络提取的特征向量作为三维形状的特征表示。
此外,还有一些方法 [59, 60] 采用几何图来表示三维形状,同样在二维图像域训练二维卷积神经网络,在非刚体的三维目标识别中取得不错的效果。
基于点云网络的学习方法直接以点云表示作为输入,通过能处理点云的深度网络学习三维目标的特征表示。该类方法无需对点云数据进行体素化、多视图等变换,较好地保留了三维数据的原始信息,成为了目前研究的热点方向。
Qi 等人 [61] 于 2017 年首次提出了一种能直接处理点云数据的深度网络PointNet(如图 1.9),在三维目标识别及点云语义分割任务上均取得了不错的性能,开启了该方向的研究热潮。PointNet 按 N ∗ 3(N 为点数目)的格式组织点云,首先采用共享参数的多层感知机(multi-layer perceptron,MLP)提取每个点的特征,然后采用最大值池化层融合所有点的特征得到整个点云的全局特征。为了应对散乱点云的无序性问题,作者在网络中引入了对排序不敏感的对称函数,设计了能对点云进行旋转的小网络 T-Net。虽然该网络以 MLP 为核心组件,结构简单,但它的设计思想为设计点云网络提供了非常有价值的借鉴。Yang 等人 [62] 基于 PointNet构建了一个深度自编码器,实现点云特征表示的无监督学习,在 ModelNet 数据集上的性能超过了之前的无监督网络 3D-GAN [42] 和 VConv-DAE [43]。Achlioptas 等人 [63] 在 PointNet 中引入生成对抗学习,设计了一个针对点云的深度生成网络,在ModelNet 上的性能也超过了 3D-GAN [42] 和 VConv-DAE [43]。
针对 PoinNet 缺乏局部结构信息的问题,Qi 等人很快又推出了 PointNet 的升级版 PointNet++ [64]。PointNet++ 在欧式空间了定义了点的球形邻域,设计了点云采样、分组等操作,通过在每个球形邻域内采用 PointNet 提取点云特征来获取采样点的局部邻域信息。此外,作者还设计了多尺度分组和多分辨率分组两种点集抽取分组策略,可以提高网络对点云非均匀性的泛化问题。然而,PointNet++ 网络结构复杂,内存消耗严重,限制了其在大规模点云场景的使用。Wang 等人 [65]设计了一个网络模块 EdgeConv,通过 KNN 构建点的局部邻域,在点之间执行一个类似于卷积运算的操作来获取点的局部几何信息。Li 等人 [66] 基于 PointNet 提出了一个名为 SO-Net 的网络,通过建立自组织映射 [67] 对点云的空间分布进行建模,通过点到 SOM 节点的 k 近邻搜索可以调整网络的感知域,提高网络的局部感知能力。针对 PointNet 的 T-Net 模块无法应对大幅度旋转的问题,Jiang 等人 [68]受 SIFT 算法 [69] 的启发,提出了一种基于 PointSIFT 算子的点云网络框架,通过描述八个关键方向编码点云各个方向的信,同时通过堆叠多个方向编码单元获取多尺度表示。pointSIFT 具有更强的特征表达能力,对旋转、尺度等因素更鲁棒。
还有一些工作采用不同思路设计了直接处理点云的神经网络。Klokov 等人 [70]提出了一种基于 KD 树结构的点云网络 KD-network,采用 KD 树结构组织点云,在KD 树上模拟卷积神经网络操作构建计算图。由于受 KD 树规模限制,KD-network缺乏一定的灵活性,目前仅应用小规模点云上。Savchenkov [71] 定义了待处理点的邻域并建立了邻域内点之间的关系,通过多次随机选点迭代融合特征获得点云的特征表示。该方法的网络模型参数量极小,但在待选点选择、空间特征提取等设计上存在不足,性能一般。Hua 等人 [72] 提出了一种可直接应用于点云上的卷积操作,即逐点卷积(point-wise convolution),基于该卷积操作构建了一个面向三维语义分割和目标识别任务的点云网络。Li 等人 [73] 提出一种能够从输入点云中学习将点的顺序转换成通用顺序的变换(X-transformation),然后即可使用典型的卷积操作处理统一顺序后点云。基于该方法构建的网络 PointCNN 在 ModelNet [15]、ScanNet[27] 等数据集上的目标识别性能超过了PointNet。
基于 mesh 表示的学习方法将多边形网格表示作为输入采用图 (graph) 的方法或者谱(spectral)分析等方法学习三维物体表面几何信息。目前,该类方法主要应用于非刚体目标(如人体)。Masci 等人 [74] 在非刚体表面建立测地线 (geodesic)极坐标系统,构建了测地线卷积神经网络(Geodesic CNN)。但该方法依赖快速匹配算法的性能,同时没有有效的池化层。Bruna 等人 [75] 将卷积神经网络拓展到更一般的谱域上,提出了一种谱卷积神经网络(spectral CNN),可直接应用于图表示的流形表面。Boscaini 等人 [76] 将卷积神经网络拓展到非欧式空间,提出了一种各向异性卷积神经网络,可有效学习非刚体形状之间的稠密对应。针对 spectralCNN 没有有效的池化处理的问题,Yi 等人 [77] 提出了网络 SyncSpecCNN,引入了空洞卷积核的谱参数和一个谱变换网络。
除上面几类方法外,还有一些工作综合多种方法实现更高的目标识别性能。Hegde 和 Zadeh [78] 将多视图神经网络和体素卷积神经网络结合,取得了比两个独立网络更好的性能。Bu 等人 [79] 采用卷积神经网络和卷积深度置信网络对多视角表示和体素表示分别提取特征,同时获取三维形状的几何信息和视觉信息。这些方法虽然识别精度更高,但是网络的复杂度大大增加。
三维目标检测的任务就是要从三维场景中尽可能多地找出感兴趣的目标,并确定其在场景中的三维位置、尺寸以及姿态。传统的方法主要基于手工设计的点云特征,采用点云与模型配准、滑窗与分类器组合等方式实现目标检测 [80]。近年来,基于深度学习的方法快速发展,逐渐成为研究的主流。由于 RGB/RGB-D 图像的检测方法更偏向于二维图像领域的处理方法,因此本节将重点介绍面向点云数据(以及与 RGB 图像融合)的研究工作。主要方法可分为基于体素卷积网络的学习方法、基于前向 / 鸟瞰视图的学习方法、基于点云网络的学习方法以及基于多传感器数据的学习方法等 [21]。
基于体素卷积神经网络的方法采用三维网格形式表示三维场景,然后采用三维卷积神经网络进行三维目标检测。这类方法可以借鉴二维图像领域目标检测网络的设计思路,但是其计算量和内存消耗巨大,存在大量的冗余计算。
Song[81] 等人将RGB-D 图像转换成三维体素表示,构建了三维候选区域网络和目标识别网络分别进行目标似物性检测和目标识别,在室内场景的三维目标检测中取得不错效果。Li 等人 [82] 针对激光点云场景采用二值化体素表示,并采用基于三维体素全卷积神经网络的单阶段目标检测方法估计目标位置和姿态。但是该方法的效率很低,最高处理速度 1fps。为了提高处理效率,Engelcke 等人 [83] 利用先验信息固定每一类目标的待检测框尺寸,可以简化网络的结构,同时采用了稀疏卷积算法来减小模型的复杂度。
基于前向 / 鸟瞰(bird-view) 视图的方法将点云投影到前向或鸟瞰视图得到二维投影图像,然后采用类似于二维目标检测网络的方法进行目标检测,通过参数回归估计目标的三维包围盒(3D bounding box)。这类方法计算效率高,鸟瞰视图下遮挡少,但是点云投影丢失了大量目标的几何信息,尤其是鸟瞰视图下行人、自行车等小目标的信息丢失严重。
Li 等人 [84] 采用圆柱形投影得到二维投影图,投影图的两个通道分别编码点的高度以及距离信息,然后采用全卷积神经网络估计车辆的三维包围盒。Minemura等人 [85] 在此基础上提出采用带有空洞卷积 (Dilated Convolution) [86] 的全卷积神经网络结构,减小了约 30% 的计算时间,但是却牺牲了一定的检测精度。Beltrán 等人 [87] 将点云投影到鸟瞰视图下,采用密度、高度、强度等信息编码投影图像的三
个通道,然后采用经典的 Faster R-CNN [6] 网络结构检测目标,最后在后处理阶段估计目标的三维包围盒。为了达到实时处理,Simon 等人 [88] 将高效率的 YOLO 网络 [5] 作为鸟瞰图的基础检测网络,同时提出了针对三维包围盒的角度估计方法,最终得到的网络 Complex-YOLO 运行速度达到 50fps。Zeng 等人 [89] 提出了一种预RoI 池化的卷积技术,可以将鸟瞰图目标检测网络中大部分重复的卷积操作移到
RoI 池化操作前,提高了网络的运行效率。Feng 等人 [90] 利用鸟瞰图检测网络中的认知不确定性及观测噪声中的偶然不确定性等信息提高检测的精度。Yang 等人[91] 在相互垂直的三个方向对点云进行划分得到一个36 通道的鸟瞰图,并利用单阶段二维目标检测网络 RetinaNet [92] 提高了对小目标的检测性能。该团队在此基础上又引入高清地图信息,增加了网络对场景语义信息的学习,进一步提高了算法的性能 [93]。
基于点云网络的方法直接将点云作为输入采用点云网络提取点云数据的特征。该类方法不会丢失输入数据的几何信息,但是大规模的点云导致网络计算量高、内存消耗大,方法效率低。Zhou 等人 [94] 提出的 VoxelNet 网络(如图 1.10) 先按三维规则网格对点云进行空间划分,得到 D × H × W 个体元(voxel),采用基于 PointNet 的点云网络对每个非空体元内的点云提取特征,所有体元一起组成多特征通道的三维体素表示形式,然后采用体素卷积网络进行垂直方向卷积,从而得到一个多通道的二维鸟瞰特征图,最后采用二维目标检测网络进行检测目标。VoxelNet 网络中使用的体素卷积网络增加了网络的计算量和内存消耗。Yan 等人[95] 使用稀疏卷积神经网络 [45] 替换VoxelNet 网络中的体素卷积神经网络,提高了算法的运行效率,降低了内存消耗。
基于多传感器数据的学习方法综合利用 RGB 图像的颜色信息和点云的几何信息进行三维目标检测,可分为多视图融合和多模态网络两类方法。
这类方法将点云投影到前向 / 鸟瞰视图得到投影图像,然后融合投影图像与 RGB 图像进行目标检测。Chen 等人 [96] 先在鸟瞰图上估计三维候选目标区域,然后对候选区域对应在前向图、鸟瞰图以及 RGB 图像中的特征进行融合,最后利用融合特征对目标的位置、尺寸以及姿态等信息进行精细化估计。Ku 等人 [97] 在 MV3D 的基础上提出了 AVOD 网络,先融合每个预设三维锚(3D anchor)对应在 RGB 图像与鸟瞰图上的特征,然后再利用融合特征获取三维候选目标区域,进一步提高了检测的性能。此外,该方法还在图像特征提取网络中应用金字塔结构,有助于小目标的检测。Liang 等人 [98] 利用 ResNet [4] 分别提取 RGB 图像和鸟瞰图的特征,然后通过一个 PCCN(Parametric ContinuousConvolutional Network) 将 RGB 图像的特征图投影到鸟瞰图的特征图上,最后利用融合后的鸟瞰特征图进行目标检测。
这类方法不进行点云投影,分别采用点云网络和二维卷积神经网络对点云数据和 RGB 图像进行特征学习。Qi 等人 [99] 提出的三维目标检测网络 F-PointNet 先采用二维目标检测网络检测 RGB 图像中的目标,并根据 RGB图像与点云的几何关系得到二维目标框对应在三维空间中的锥体 (frustum) 及其内部的点云,然后采用基于 PointNet++ [64] 的点云网络对锥体内的点云进行三维实例分割和三维包围盒估计。该方法对 RGB 图像进行预检测,降低了后续点云网络的处理规模与难度,但是串行的网络结构导致该方法严重依赖于二维检测网络的检测结果,容易受到光照、遮挡等因素的影响。Xu 等人 [100] 结合 F-PointNet [99] 和AVOD[97] 二者的特点,在提出的PointFusion 网络中先将点云的全局特征、RGB图像的全局特征与点云特征进行融合,然后再对融合的点云特征采用点云网络估计三维包围盒。Du 等人 [101] 提出了一种通用车辆三维检测流程,先在 RGB 图像上进行二维目标检测并得到对应 2D 包围框的点云,然后利用 RANSAC 算法 [102]与车辆三维 CAD 模型获得三维候选框,最后再利用二维卷积网络进行参数的精细化估计。但是该方法严重依赖于车辆模型,对噪声敏感,模板匹配耗时。
目前各类三维目标检测算法各有优缺点:
• 基于前向 / 鸟瞰视图以及多视图融合的方法将问题转换到二维图像域进行处理,具有一定的效率优势,但是投影过程不可避免存在信息丢失,设计更好的鸟瞰视图表示方法甚至采用学习的方法获得鸟瞰图将是未来的一个研究方向。
• 基于点云网络的学习方法不存在输入数据信息丢失,在纯点云目标检测上具有很大的发展潜力,但是该类方法大规模场景下的应用受限,采用预检测降低点云网络处理规模将是未来的一个研究方向。本文在第二章针对该类方法存在的效率问题展开了一些研究工作。
• 多模态网络方法通过多源数据利用了更多类型的信息,在性能方面具有很大的发展潜力,但是目前算法存在特征融合方法简单、计算量大等问题,更好的特征融合方法将是研究的一个重要方向。本文在第三章针对多模态网络的特征融合问题展开了一些研究工作。
三维目标检测的任务就是从三维场景中尽可能多地找出感兴趣的目标,并确定目标在场景中的位置、尺寸以及姿态,如图 2.1所示。
输入数据为点云,由一系列无序的三维空间点组成,每个点记录了该点在三维空间中的三维坐标 (x, y, z) 信息,通常采用一个二维矩阵 IN∗3表示,其中 N 为点云中点的数目, 矩阵 IN∗3的每行对应一个点的三维空间坐标 (x, y, z)。需要注意的是,点云是零散无序的,更改点云中点的排序(即调换矩阵 I 的行顺序)不改变原来的点云。
三维目标检测的输出为一个或多个目标的带类别与姿态的三维包围箱(3Dbounding box)。对于三维包围箱,可以有多种形式,如直接采用其 8 个顶点的坐标进行表示。由于三维包围箱通常为一个标准的立方体,目前常采用的表示方法是通过三维包围箱的中心位置 cx, cy, cz、三维包围箱的三维尺寸 h, w, l 以及绕三维空间坐标轴的旋转角 θ, ϕ, ψ 进行表示。因此,三维目标检测的任务就是对目标的 K分类(K 为待检测目标的种类数)以及对三维包围箱参数 (cx, cy, cz, h, w, l, θ, ϕ, ψ)的预测估计。一般来说,激光雷达等点云获取设备在安装时会与水平面平行。因此,为了简单通常只考虑绕垂直轴的旋转角 θ。
目标检测算法性能的评估通常采用平均精度均值 (Mean Average Precision,mAP) 作为评价指标,即各类别待检测目标的平均 AP 值
其中,APi为第 i 类目标的平均精度(Average-Precision,AP),对应“准确率 - 召回率曲线”(PR 曲线)下的面积
对于一个预测结果需要判定其目标分类准确度与目标位置信息准确度,目标位置信息准确度通常采用重叠度 IoU(Intersection over Union)来度量 [6, 106]。IoU描述预测的包围框(箱)与真实的包围框(箱)的重合程度,即
其中,Area of Overlap 为预测的目标包围框(箱)与真实的目标包围框(箱)之间的交集值,Area of Union 则为预测的目标包围框(箱)与真实的目标包围框(箱)之间的并集值。对于二维图像目标检测,公式中的交集值与并集值分别对应于交集与并集的面积;对于三维目标检测,公式中的交集值与并集值则分别对应于交集与并集的体积。图 2.2为 IoU 的计算示意图,二维包围框 IoU 中的交集为一个矩形,而三维包围箱 IoU 由于三维姿态角的原因,其交集则为一个多面体。IoU值越大,预测的包围框 (箱) 与真实的包围框 (箱) 的重合度越高,预测的位置信息越准确。在评价目标检测算法时通常预设置一个 IoU 阈值,只有大于该阈值且预测类别正确的检测结果才是一个正确的正检测(True Positive)。
Qi C R, Su H, Mo K, et al. PointNet: Deep learning on point sets for 3D classi-
fication and segmentation [C]. In 2017 IEEE Conference on Computer Vision and Pattern
Recognition (CVPR). jul 2017: 4.
多层感知器 MPL :
候选区域:
候选的三维检测框:
体素化:是将点云数据划分为有空间依赖关系的体素立体网格。通过体素化三维空间,在原本无序的点云中引入了空间依赖关系。
锚点(anchor),先验框(prior box),默认框(default box):
[64] Qi C R, Yi L, Su H, et al. PointNet++: Deep Hierarchical Feature Learning on
Point Sets in a Metric Space [C]. In Advances in Neural Information Processing Systems.
2017: 5105–5114.
(1)算法首先利用体素化的方法对点云空间进行等尺度划分。
(2)接着对抽样划分后的点云空间,提取柱内点云特征,堆积生成鸟瞰图(BEV),
(3)最后利用多尺度深度卷积神经网络对鸟瞰图提取场景目标特征,实现目标的分类和回归。
目的:特征提取
组成:卷积神经网络通常由卷积层、激活层和池化层组成,输入 RGB 图像数据,输出图像的特定特征空间。
各层的作用:
(1)卷积操作是卷积神经网络中最基础操作,主要包括卷积核大小、步长、填充
(padding)等参数,通过输入图像的空间坐标(x,y),使用卷积核计算对应区域的
数值和。
(2)激活层的主要作用是引入非线性激活,目前主流的激活函数有:ReLU、Sigmoid、tanh 等。
(3)降采样是池化层的主要功能,目的是为了降低特征图的特征空间(分辨率),太多的图像细节不利于高层特征的提取。目前主要的池化操作有最大池化和平均池化。池化操作能够降低参数量以及特征图分辨率。
适用范围:
PointNet 是首个直接输入三维点云输出分割结果的深度学习网络,后续很多研究都将 PointNet 作为三维目标检测领域算法的基准线(BaseLine)。算法使用N×3 的点云作为输入,首先通过 T-Net 将点云在空间上进行对齐,接着通过多层感知机(Multi-layer Perceptron, MLP)将其映射到 64 维的空间上,并再次对齐,最后将点云映射到 1024 维的空间上。对于每一个点,最终都会有一个 1024 维的向量表征,而这样的向量表征对于一个 3 维的点云明显是冗余的,因此算法引入最大池化操作(Max-Pooling),在 1024 维的通道上都只保留最大的那一个,最终输出 1×1024 的向量,也就是 N 个点云的全局特征。对于分类问题,算法直接将得到的全局特征再送入多层感知机(MLP)输出类概率即可;对于分割问题,由于需要输出逐点的类别,因此其将全局特征拼接在点云 64 维的逐点特征上,最后通过多层感知机,输出逐点分类概率即可。PointNet 能够对所有点云数据提取一个全局的特征。图 2-3 为 PointNet 结构图。
适用范围:可以适应多尺度的目标检测任务,较为符合点云数据尺度变换大的特点。
[1]詹为钦. 基于深度学习的三维目标检测[D].常州大学,2021.
[2]张杰. 增强现实中的三维目标检测方法的研究[D].重庆大学,2020.
[3]马超. 基于深度神经网络的三维目标检测与识别技术研究[D].国防科技大学,2019.
[4]姚钺. 基于点云与图像特征的深度学习三维目标检测方法研究与实现[D].南京理工大学,2020.