阅读的文献是国防科技大学的一篇综述:Guo Y , Wang H , Hu Q , et al. Deep Learning for 3D Point Clouds: A Survey[J]. 2019. 关于点云处理介绍的比较全面。
根据自己的情况选择了以下四个方向进行研读。
任务一:点云形状分类(3D shape classification)
任务二:点云目标分割(3D object detection)
任务三:点云语义分割 (3D point cloud semantic segmentation)
任务四:点云实例分割 (3D point cloud instance segmentation)
一些公开可用的数据集:
ModelNet ,ShapeNet ,ScanNet ,Semantic3D 和KITTI Vision Benchmark Suite
任务一:点云形状分类(3D shape classification)
一般过程:先学习单点特征,再聚合全局特征,再接两个全连接来分类。
1. 基于多视图的方法(Multi-view projection methods)
将3D对象投影到多个视图中,如俯视图,正视图,侧视图,在不同方位的视图中分别提取相应的特征,然后融合这些特征进行目标识别。关键点在于如何融合多视图特征,使之聚合为一个可区分的全局表示。MVCNN是该类方法的开创性工作,将三个视图的特征最大池化为一个全局描述符,用于分类。MHBN 通过协调双线性池化整合了局部卷积特征,以生成紧凑的全局描述符。
2. 基于体积占用的方法(Volumetric-based methods)
也是投影方法的一种,相当于把点投影到规则网格中,每个网格可能存在不止一个空间点.
代表:
VoxNet 网络:就是二维卷积在三维的扩展。
3D ShapeNet:用体素网格上二进制变量的概率分布表示3D形状。
存在的问题:上述两种方法无法很好地应用到密集的3D数据,因为计算和内存占用量会随着分辨率的增加而三次增长。OctNet首先使用混合网格八叉树结构对点云进行分层划分,使用位串表示对octree的结构进行有效编码,并通过简单的算法对每个体素的特征向量进行索引。树结构的优点是没有点云的地方不再细分,从而降低内存占用。
3. 基于点的方法(Point-based methods)
无需投影和体素化,直接对点操作。
3.1 单点独立处理式
直接对单点进行Multi layer perceptron (MLP)处理,即每个点的输出特征只与自己上一层的输入点特征有关,不受邻域点特征的影响。最后通过一个聚合函数(聚合函数可以是max pooling, avg pooling等)提取全局点云特征,用于形状分类。
代表:
PointNet:T-Net调整点云姿态;max pooling 解决点云排列不变性。
DeepSets: 用summing up + nonlinear transformation实现permutation invariance。
存在的问题:上述两种方法不考虑点云的局部空间关系。
PointNet++:使用set abstraction结构逐层提取特征。Set abstraction 包括 sampling,grouping 和 PointNet三部分。
Sampling:对输入点云进行采样,只保留部分点进入下一层网络。采样数一般是输入点云总数量的一半,
采样算法是Farthest point sampliing (FPS),以保证采样点均匀分布在整个点云上 。
grouping:为每个采样点寻找半径r(r=0.2)内的固定k(k=32)个邻域点,所有点坐标都是归一化后的。
PointNet: 对这些点用PointNet中的MLP提取特征并max pooling 聚合为采样点坐标。
如此,做两次set abstraction 操作。
如果是分类任务,就再接一个PointNet+max pooling 提取全局特征;
如果是分割任务就进行插值+concat+Pointnet来提取单个点云特征。与set abstraction 对应,插值操作也是两次。
PointNet++还给出了两种局部特征提取方式:Multi scale grouping (MSG), Multi resolution grouping (MRG)
文章用的MSG。PointNet结构简单又具有强大的表达能力,因此很多网络都在PointNet的基础上发展而来。如Achlioptas,PAT,Mo-Net,PointWeb,SRINet。
FPS:https://blog.csdn.net/dsoftware/article/details/107184116
3.2 考虑邻域空间关系的卷积式
连续卷积式: 卷积定义在连续空间
离散卷积式: 卷积定义在离散的规则网格上。卷积的权重与相对中心点的偏移有关。
3.2.1 连续卷积
在连续空间中定义卷积核,相邻点的权重与相对于中心点的空间分布有关。即邻域子集点的加权和。
代表1:
Relation-shape CNN (RS CNN, CVPR2019):RS CNN的核心操作是RS-Conv,它借鉴graph attention networks的思想,利用MLP学习邻域点集的权重w,并将学习到的权重与邻域点集的特征进行对应元素相乘。最后通过聚合函数得出采样点特征。输入到MLP的特征是邻域点与采样中心点的欧氏距离(坐标距离),或者特征距离。
hij是邻域点与采样中心点的关系(距离),M是MLP, f是点特征, A是聚合函,sigma是**函数。文章实验结果表明:1)同时使用点特征,特征距离,欧氏距离作为MLP输入效果最好。2)在收集邻域点时,在邻域内随机选点比KNN效果好。3)聚合函数max表现比avg,sum都好。
代表2:DensePoint: 参考二维图像网络DenseNet结构,将不同层得到的信息进行整合(整合方式为concat),即网络中每一层的输入都与前面所有层输出有关。
代表3:PointConv (CVPR2019)
与RS CNN 类似,但引入密度信息。原因是点密度不均匀时,学下到的特征主要受密度大的区域主导,因此要降低高密度区域点特征的影响,提取密度加权卷积。为了处理这个问题,论文先离线计算出每个点的Density,然后使用一个MLP网络学习出inverse density,来对输入点特征Fin进行调整(re-weight)。除此之外,作者提出了一种pointconv的高效实现方式,还在点云分割阶段,将pointconv扩展到pointdeconv。
注意:PointConv的邻域点集是在坐标空间中找,用的是局部坐标。聚合函数用的是sum求和。
原始的PointConv:
高效的PointConv:
PointDeconv由两部分组成:插值和PointConv。首先,我们使用插值来传播前一层的粗粒度特征,通过从3个最近点来进行线性特征插值。然后,使用skip links将插值特征与来自卷积层的具有相同分辨率的特征连接起来。连接后,我们在连接的特征上应用PointConv以获得最终的反卷积输出。我们反复执行此过程,直到所有输入点的要素已传播回原始分辨率。
其他方法:
MSCNN, SPider CNN, PCNN,KPConv(可形变卷积),spheral CNN(球面卷积)等。
3.2.2 离散卷积
代表1: Pointwise CNN
3.3 考虑邻域空间关系的图卷积式
3.3.1 空间域图卷积
3.3.2 频率域图卷积
3.4 树结构式