CVPR2020 3D点云相关论文总结(持续更新)
- A. 3D目标检测
- 1. A Hierarchical Graph Network for 3D Object Detection on Point Clouds
- 2. HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detection
- 3. Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud
- 4. What You See is What You Get: Exploiting Visibility for 3D Object Detection
- 4.2 实现细节:
- 5. ImVoteNet: Boosting 3D Object Detection in Point Clouds With Image Votes
- B. 3D点云分析(分类、语义分割)
- 1. FPConv: Learning Local Flattening for Point Convolution
- 2. SpSequenceNet: Semantic Segmentation Network on 4D Point Clouds
- 3. Fusion-Aware Point Convolution for Online Semantic 3D Scene Segmentation
- 4. Multi-Path Region Mining for Weakly Supervised 3D Semantic Segmentation on Point Clouds
- C. 3D实例分割
- D. 3D点云上采样和补全
A. 3D目标检测
1. A Hierarchical Graph Network for 3D Object Detection on Point Clouds
1.1 创新
这篇论文主要以VoteNet作为backbone,并在上面提出了一系列改进。由下图可以看出:(1)其将votenet中的PointNet++换成了特征捕捉能力更强的GCN。(2)在up-sample的多层每一层都接上voting模块,整合了多个尺度的特征。(3)在proposal之间也使用GCN来增强特征的学习能力。
1.2 实现细节
(1)本文提出了一个Shape-attentive Graph Convolutions,并且将这个卷积同时用在了down-sampling pathway和up-sampling pathway中。这实际上与2019CVPR的GACNet和PointConv之类没有本质的区别。其具体的公式如下:
其中g是一个MLP,将3维的相对位置输出成一维的接sigmoid的权重。, 其中为相对位置,为拼接操作。
(2)本文提出了一个Proposal Reasoning Module,在proposal之间学习其特征之间的交互。其具体公式如下:
其中是proposal的特征,P记录它们之间的坐标相对位置,和都是一维卷积,而是内积操作。其本质是一个注意力机制的模块。
1.3 实验结果
他们不仅使用mAP去衡量,还是用了coefficient of variation for AP (cvAP)去衡量捕捉不同物体的适应能力,具体公式如下:
他们的结果在两个数据集上都比VoteNet要更好。
2. HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detection
2.1 创新
本文先指出之前的3D detection工作的不足,Point-based的方法encode的能力不够,而voxel-based的方法又很难平衡voxel-size(精度)和速度之间的关系。本文提出了一种新的基于点云的三维物体检测的统一网络:混合体素网络(HVNet),通过在点级别上混合尺度体素特征编码器(VFE)得到更好的体素特征编码方法,从而在速度和精度上得到提升。
2.2 实现细节
整个HVNET包括:HVFE特征提取模块;2D卷积模块;以及检测模块,用来输出最后的预测结果。下图中第一行是HVNet的整个结构。
HVFE特征提取模块
第二行是混合体素特征提取器的结构,由四部分组成:
a) x-y平面多尺度预体素化;
b) 并行多流的注意力机制体素特征编码层(AVFE)编码多尺度点云特征;
c) 编码特征聚合;
d) 注意力机制体素特征编码输出层(AVFEO)层结合聚合特征和目标尺度信息进行动态特征投影。
AVFEO层用于将不同尺度的特征通过注意力机制映射到固定的尺度去,如上图所示。不同尺度的feature map最后拼接输入给下一个模块。
2D卷积模块
2D 卷积部分,他们利用HVFE layer提出的多尺度的feature map,在特征图上面也进行多尺度的融合。由于点云的稀疏性和特征图的低分辨率性,他们提出了尺度融合金字塔网络(FFPN)来进行进一步的特征融合。多尺度特征首先在主干网络中浅层融合,然后在提出的FFPN网络中进行深度融合。
检测模块
利用不同层的feature map感受野不同的特性,对不同的层设计相应的anchor box进行预测。具体来说,对于不同层的feature map,在detection head部分只会对相对应的尺度的类别进行预测,这样的方式可以有效减少类别间的混淆。
2.3 实验结果
这篇论文提出的方法在KITTI上面达到了不错的水平,尤其是小物体(cyclist),比第二名高了2个点,这也部分说明了他们方法的合理性。
并且作为一个单阶段的模型,其运行速度也很快,如下图所示:
3. Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud
3.1 创新
基于点云的3D目标检测具有非常重要的应用价值,尤其是在自动驾驶领域,使用LiDAR传感器获得的3D点云数据刻画了周围环境,3D目标检测能够比单纯使用RBG摄像头提供更多的目标信息(不仅有位置,而且有距离)。
该文作者指出,以往一些使用CNN的方法处理点云数据时往往需要在空间划分Grids,会出现大量的空白矩阵元素,并不适合非密集数据的点云。而近来出现的类似PointNet的方法对点云数据进行分组和采样,取得了不错的结果,但计算代价太大。如下图:
3.2 实现细节
Point-GNN方法主要分三个阶段:
(1)图构建
(2)GNN目标检测
(3)bounding box合并与打分
图构建阶段,根据点云中某一点和以其为中心固定半径距离的近邻构建图,图中每个顶点特征不仅包括其3D位置信息也包括一个固定长度状态值向量(反应其近邻关系)。因为点云中含有大量的点,作者并不是对每一个点都构建进图,而是事先进行了体素下采样,降低了数据处理的规模。
GNN目标检测阶段,对构建的图,使用多层感知机(MLP)进行特征提取和聚合,这个过程重复T次,最后对每个顶点使用MLP进行目标类别的分类和位置的回归。
Bounding box合并与打分,对上一步得到的众多的目标bounding box进行合并(同一个目标可能在多个顶点被检测出来),因为上一步的分类分数不能代表bounding box定位精度,使用重叠bounding box的聚类来改进。算法如下:具体来说,就是通过NMS并不是筛选bbox,而是通过他们的iou和所占体素的占比去加权融合。
3.3 实验结果
4. What You See is What You Get: Exploiting Visibility for 3D Object Detection
4.1 创新
1)使⽤Lidar等传感器进⾏信息采集时,总是不可避免地遇到遮挡问题。⽽障碍物之 后的信息是不可⻅的(可能是free space,也可能被物体占据)。
2)和从Mesh上采集到的点云不同,Lidar数据实际上是2.5D的(因为有遮挡)。如果单纯把Lidar采集到的深度信息单纯地看作⼀个全3D的点云,那么⼈们就⽆法从中区分某个空⽩区域到底能否被sensor探测到(即visibility)。如下图。
3) 当前的detection⽅法都没有考虑到Lidar数据中的visibility,都将它看作纯3D的点 云。从⽽丢掉了数据中的visibility信息。
4.2 实现细节:
根据Lidar数据的采集原理(Ray casting):传感器朝着某个⽅向发出激光,激光碰到遮挡物后返回。根据TOF和激光⽅向便可以算出障碍点的xyz坐标。基于这个原理,在激光 出发到碰到障碍物之前的路程上,都是能确定为free space。 因此,作者提出现将空间离散化为voxel grid,然后从sensor的坐标出发,对点云中的每⼀个点进⾏ray casting,并对ray casting路径上的每⼀个voxel进⾏标注(free、occupied、unknow)。
标注完成的voxel grid就是⼀个visibility volume,反映了Lidar数据的可⻅信息,它可以和相应的原始点云结 合,作为⽹络的输⼊参与到⽹络的训练中。特别地,visibility volume可以⼗分容易 地被整合到现有的detection⽹络中。作者⽂章中选择了pointpillar作为backbone。 并提出early fusion和late fusion两种整合⽅式,实验表明,额外加⼊visibility volume可以⼤幅度提⾼现有detection⽹络的性能。
5. ImVoteNet: Boosting 3D Object Detection in Point Clouds With Image Votes
5.1 创新
这篇文章探索了如何使用image信息辅助基于voting的3D检测框架。之前的VoteNet依靠voting机制有效增强了点云中的几何信息。这篇文章展示了ImVoteNet如何使用额外的图像,提供geometric,semantic和texture信息于3D voting的过程,详细介绍了如何将2D的geometric信息提升到3D。通过使用基于梯度混合的多模态的训练方法,ImVoteNet极大提升了处理稀疏或不友好分布点云的3D检测性能。
5.2 实现细节
网上写的已经够多了,例子。
B. 3D点云分析(分类、语义分割)
1. FPConv: Learning Local Flattening for Point Convolution
1.1 创新
利用类似注意力机制的映射,将每个采样点的邻居结点映射到2D平面上再使用2DCNN去进行局部特征聚合。
1.2 具体实现
局部使用PointNet去得到一个局部的全局特征,然后拼接到每个点的坐标上,通过学习一个映射矩阵,映射到2D的网格中,再使用2D CNN去得到一个编码的特征。
1.3 实验结果
其在ScanNet和S3DIS上都达到了不错的效果,其还可以加到SOTA的模型上,进一步提升其效果。
2. SpSequenceNet: Semantic Segmentation Network on 4D Point Clouds
2.1 创新
用LIDAR数据的前后帧关系去做语义分割。
2.2 实现细节
论文的Pipeline比较简单,就是通过两帧的数据作为输入,中间使用sparseconv进行网络搭建。两个核心模块是Cross-frame Global Attention (CGA) modules和Cross-frame Local Interpolation (CLI) module。前者就是一个attention机制,后者就是在差值的时候用前一帧的特征去3-NN插值。
2.3 实验结果
在SemanticKITTI上结果一般,仅能达到43.1。
3. Fusion-Aware Point Convolution for Online Semantic 3D Scene Segmentation
3.1 创新
与上一篇工作一样用到多帧之间的关系,不过是做室内场景的。通过RGB-D为输入,通过Global-local tree去构建graph,然后通过Point convolution去聚合特征。
4. Multi-Path Region Mining for Weakly Supervised 3D Semantic Segmentation on Point Clouds
4.1 创新
提出了点云上的室内场景弱监督学习,通过只预测是否有类别,来获得PCAM,最终形成pseudo labels。
C. 3D实例分割
1. OccuSeg: Occupancy-Aware 3D Instance Segmentation
1.1 创新
基于体素化的3D实例分割网络,会由于对无效的空体素的处理而浪费大量的计算,空间稀疏卷积网络出现可以有效的消除体素化网络的这一缺陷,作者在稀疏卷积的基础上提出了OccuSeg网络,并引入了“3D occupancy size/signal”的概念(表示每个实例所占据的voxels的数量),occupancy signal能够缓解3D点云中目标尺度,位置,纹理和光强等模糊性的诸多问题。
1.2 实现细节
Pipeline
OccuSeg的网络框架如下图所示,主要分为Multi-task Learning和Instance Clustering两个阶段。首先将体素化(voxel size为2cm)的点云scene输入到3D UNet backbone中进行特征提取,然后用三个task head分别产生语义分割的特征和空间嵌入以及occupancy回归的结果,最后进行graph-based以及occupancy-aware的instance clustering过程产生最终的实例分割结果。
Loss
论文联合学习的Loss如下所示:
其中为语义分割中每个voxel类别标签预测的交叉熵损失,是实例嵌入(包括空间和特征嵌入)的损失,是occupancy size的回归损失。
(1)Embedding Learning
作者注意到空间嵌入是scale-aware的而特征嵌入并没有这一特点,故区别于其他直接将空间嵌入和特征嵌入结合在一起的方法,作者将这两者分开考虑,将实例嵌入定义为:
其中为空间嵌入损失,为特征嵌入损失,为用于正则化处理的协方差项。各项的具体表达式如下:
其中C是输入点云的实例数,是第c个实例中的体素数,是第i个体素的空间嵌入,代表第c个实例中第i体素的位置。这其实是votenet中的voting操作,将每个实例的点靠近每个实例的中心。
其中方差项使得当前点的特征嵌入靠近其所属实例平均的特征嵌入,距离项使得各个实例之间尽量远离,正则项用于保证嵌入值有界。
其中代表第c个实例的平均特征嵌入,表示第c个实例中第i个体素特征嵌入,阈值和被预定义为0.1和1.5,以确保实例内的嵌入距离小于实例间的距离。
协方差项旨在学习每个实例最优化的聚类区域,代表第c个实例中第i个体素预测特征/空间的协方差,在第c-th实例中平均化bi得到,然后将i-th体素属于c-th实例的概率定义为:
其中表示预测的c-th实例的中心位置,
公式(8)其实将空间embedding和特征embedding都归一化到一个均值为0,方差为1的正太分布上,因此当pi > 0.5时,就认为i-th体素属于c-th实例,故可将协方差项的损失定义为交叉熵损失:
yi = 1表示i属于c,N表示输入点云中点的数目
(2)Occupancy Regression
其中c-th实例中的平均值被视为当前实例的occupancy size的预测值(为了提高鲁棒性,occupancy size的真值和预测值均做了对数表达)
作者还定义了相关预测误差来评估occupancy size预测的性能
Instance Clustering
作者在这里采用graph-based的分割方法,利用bottom-up的策略将输入的voxels分组成super-voxels以实现实例分割,(由于3D空间中实例boundary的几何连续性,这种方法比对应的2D问题处理更有效)
定义super-voxel 的空间嵌入为:
其中表示属于中的所有voxels的集合,为中voxels的数目。的特征嵌入,occupancy size ,协方差也类似地定义。
定义occupancy ratio ri,来指导instance clustering过程,表示vi中的voxel过多, 表示vi中的voxel过少
根据上述的super-voxel的定义,可以建立一个无向图, 表示产生的super-voxel, 表示super-voxel顶点对,表示顶点对之间的权重(和之间的相似性),权重越大表示vi和vj越有可能属于同一个实例
其中,,分别表示特征协方差,空间协方差和occupancy ratio,在这里r能够起到惩罚over segmentation和merge部分分割的作用
在满足的条件下(设置为0.5),对于E中所有的边,选择权重最高的边将其顶点merge为一个新的顶点,反复迭代,直至没有边的权重 > T0,这时,G中剩余的顶点在满足的条件下label为实例以消除假阳性。这个步骤类似于条件随机场。
1.3 实验结果
该工作在ScanNet的语义分割和实例分割benchmark上都刷到了第一名,并且网络非常地轻巧。
D. 3D点云上采样和补全
1. Cascaded Refinement Network for Point Cloud Completion
1.1 创新
这篇工作提出了一个串联的coarse-to-fine的点云上采样网络,并提出了local-patch的对抗学习方法。
1.2 实现细节
(1)这篇论文的pipeline如图所示,先有PointNet(图中的Feature Extraction)提出一个全局的特征,通过两层FC层得到一个粗糙的重建结果(图中的Coarse Reconstruction)。然后原始点云通过最远点下采样(FPS)得到的点与该重建结果在点的个数维度拼接起来,送入Lifting module。
(2)Lifting module的结构如下,主要就通过了点云的坐标,全局特征和2Dgrid(FoldingNet中提出的,即通过cutting, squeezing, 或stretching的方法将物体映射到2D平面)一起作为输入,然后通过up-down-up的结构(如PU-GAN)去进行重构。
(3)这篇工作还提出了一个patch-based的对抗学习,结构如下:
1.3 实验结果
实验结果其比baseline的PCN和TopNet好了很多,但是没有对比最近的SOTA方法。
2. Point Cloud Completion by Skip-attention Network with Hierarchical Folding
2.1 创新
这篇工作提出了一个利用跳跃注意力机制来更好地重建的方法。
2.2 实现细节
Pipeline
如图所示,encoder其实就是一个PointNet++,decoder被称为folding block(下面会讲)在encoder和decoder相同的scale的层之间会有一个注意力机制去加权encoder的特征到decoder的每个点上,这是这篇工作的核心贡献。
Folding block
其实也是使用了PU-GAN之中up-down-up的操作,只不过在up模块中多了一个自注意力机制。并且这篇工作中改进了FoldingNet中的folding模块。
在FoldingNet中(如上图),由3D投影到的2D grid被拼接到复制过的全局的特征上,并通过新的MLP生成3维度的逐点特征,再继续拼接,出重建点云。但是再这一篇工作里它对于每一个层使用了不同分辨率的对2D grid进行采样,通过逐渐增加密度来不断encode更密集的特征(如下图)。