文章地址:[2206.09474] 3D Object Detection for Autonomous Driving: A Comprehensive Survey (arxiv.org)
这篇文章紧接上一篇文章:自动驾驶3D目标检测综述(一)-CSDN博客从第三章开始介绍。
目录
第三章 基于激光雷达的3D目标检测
本章主要介绍基于激光雷达的3D目标检测方法,这也是目前最常使用的方法。主要会介绍一些算法的模型(有基于点的、基于网格的、基于点体素的和基于范围的)。之后学习3D目标检测器的学习目标,有基于锚点(anchor)的框架和无锚点的框架以及基于雷达的3D目标检测的辅助任务。
首先下图展示了基于激光雷达的目标检测方法时间序列图:
可以看到基于网格(Grid)的方法最早在2015年出现,也就是vote3D;接着是基于点(Point)的方法,即PointRCNN和IPOD;之后是基于范围(Range)的方法LaserNet;最后出现的是基于点体素(Point-Voxel)的方法:PVCNN,在2019年才被提出。
一、3D目标检测的数据表示
我们生活上拍摄的照片都是由大量的像素组成,这些像素排列都是均匀的:
从上面的图我们可以看到,照片无非就是由许许多多的像素点组成的(也就是图中一个个小格子),分辨率就是像素点数量的表示:像素点越小越多,分辨率越高,图片越清晰。而点云是一种较为稀疏和不规则的表示,通常需要对专门设计的模型进行特征提取:
可以看到,点云图是由大量的点组成,这里的点是一个个小圆点,而不是像像素点那样的方格点。可以看到,这里的点都非常密集、紧凑,这种图像包含了3D信息但没有RGB的值。RGB代表图像的三元色(Red Green Blue三种通道颜色的值)。要想使用点云图就需要对其进行处理,而不是直接使用卷积网络。我们的目标就是找到这样一个能够有效处理点云图像并且尽可能保持高效率的模型。
1、基于点的3D目标检测
1.1 整体架构
上图展示了基于点的3D目标检测方法的简单流程。输入的点云数据首先通过基于点的骨干网络进行点的逐级采样,其中特征被被点云算子学习,之后下采样特点和特征用于预测3D边界框。下采样实际就是卷积神经网络的池化操作(最大池化或平均池化):
上面展示的最大池化的操作,通过下采样减少了特征和参数的数量,且降低了卷积网络计算的复杂度;实际上就是过滤作用小、信息冗余的特征,保留关键信息(而信息关键与否就体现在对应像素的value是否被激活的更大。
上图是基于点云采样和特征学习的基于点的目标检测方法分类。
1.2 点云采样
上图展示的方法从左到右分别是最远点采样(FPS)、基于分割的采样以及基于体素的采样。
最远点采样是目前最为广泛使用的方法,主要方法是从初始点开始依次选取离该点最远的点收集采样,这样可以保证最大范围内采样点云集,这种方法也可以确保采样的均匀性和代表性。PointRCNN是最早采用这种方法的网络;
基于分割的采样通常是现将图像利用分割算法分割成几个区域,通常每个区域对应着一个对象或者背景,再将每个分割区域中的点进行收集采样;
基于体素的采样通常首先对整个点云数据计算边界框,确定所有点云的分布范围,再根据需求和分辨率大小对整个边界框进行划分,这样整个点云数据就被划分成一个个小立方体(也就是体素),每个体素内包含的点云数量不一定相同。
1.3 特征学习
上图展示的三种特征学习的方法,从上至下分别是抽象集合、图神经网络和变换器。抽象集合对于每一个采样的点(图中红色的圈)计算其与每个其他输入点的距离,并选择距离小于某个阈值的邻居点作为该点的的一个集合,图中红色虚线圈内的蓝色点就是通过计算得到的邻居点。对每个集合内的点使用多层感知器等神经网络进行特征提取,生成相同长度的特征向量(图中蓝色长方体代表着n维的特征向量),这些向量以邻居点的坐标、颜色、法线等作为输入。将着四个向量通过最大池化操作生成最终的特征,这个过程叫做聚合,图中红色长方体代表生成的最终特征。图神经网络中不仅有节点还有边的概念存在,如图所示的代表点(采样得到的点,红色圈)及其邻居点之间都有以双向箭头表示的边存在,邻居点和各边都具有特征向量:点特征向量描述节点的属性或状态,而边特征向量描述节点之间的关系或交互行为。在得到四个【这里三条边却有四个权重 待博主进一步学习解答】初始化的特征向量(w1 w2 w3 w4)之后使用图算子进行处理(Graph Operator),图算子可以进行多种操作:1、节点的增删改2、聚合邻居节点以更新节点特征表示或者应用变换函数转换节点特征向量3、实现图算法,执行图遍历算法等等 4、构建图神经网络层,将节点特征向量和边信息输入提取节点深层特征表示。经图算子处理后得到了最终的特征向量(红色长方体)。变换器在接受输入图节点特征后将其转换成固定维度的向量(嵌入操作),在通过三组线性变换分别得到查询(Query)、键(Key)、值(Value)向量,计算公式为:
,
,
其中、
、
是不同的可训练权重矩阵,Q、K、V分别表示查询、键和值矩阵。对于每一个查询向量和键向量计算相似性得分:
得分代表了每个节点和其他节点的相关性。为了稳定梯度和避免极大的数值,通常将点积的结果score除以一个缩放因子,
是键向量的维度。最后对每个查询位置的得分应用Softmax函数,得到其他元素注意力权重:
根据计算得到的权重对所有值向量加权求和得到该位置最终输出向量:
这里就是Transformer最终输出的特征向量,综合了输入中其他节点的信息。这个特征向量会根据输入节点的全局信息进行动态调整,从而捕捉输入序列的长距离依赖关系。
1.4 预测
最后是预测模块,从候选的点(采样点)和特征中预测3D的目标。
1.5 数据处理流程
接下来是整个流程的数据处理过程图:
下面对每个部分进行单独介绍
1.6 输入
首先我们的输入是N个点云数