KPConv
- Main Work:提出了KPConv,直接对点云中的点执行卷积操作(用kernel point代替kernel pixel),并可以扩展到可变形卷积进行自适应学习,极大提高了模型的自适应能力。
- 关于点云CNN的一些相关工作:
- Pointwise CNN:使用体素箱定位内核权重,因此缺乏网格网络的灵活性;
- SpiderCNN:将其kernel定义为对每个neighborhood应用不同权重的多项式函数族。施加到neighborhood的权重取决于neighborhood的距离顺序,使得过滤器在空间上不一致;
- Flex-convolution:使用线性函数来建模kernel,这可能会限制它的代表能;
- PCNN:使用point来携带kernel weight,以及一个相关函数。然而,这种设计是不可扩展的,因为它不使用任何形式的邻域,使得卷积计算是点数的二次型。
- Method
- Architecture
- Architecture
- KPConv简单流程:
- 选定3D空间中的一个点为球心,计算他的feature;
- 以radius划分一个ball,点云中被包含在ball中的点为选定点的neighbors;
- 在ball中找出K个kernel points(不是点云中的点),每个kernel point会对应一个权重矩阵Wk,ball中的neighbors会与kernel point计算一个correlation function(例如距离)得出对应的权重系数,并且做加权求和进行聚合:
-
rigid kernel:确定ball中的kernel points,并且位置不变。确定方式为:
1)球心作为一个kernel points;
2)球心对其他kernel points具有一定的引力以聚拢他们;
3)各个kernel points之间具有一定的斥力来相互远离;
4)由引力和斥力组成的稳定系统即可以确定多个kernel points。
-
deformable kernel:在rigid的基础上,通过学习shift,更加自适应地确定ball中的kernel points的位置。其中,使用以上介绍的KPConv学习一个偏移量(将out dim设置为3),再用KPConv对点特征进行聚合。
同时,还需要加入两个loss进行约束,第一个loss保证每个kernel point与其输入距离最近点的距离不能太远,第二个loss保证每个kernel point之间的距离不能太远:
deformable可以更好地适应复杂场景中的几何形状,即有效感受野:
PointConv
- Main Work:
- 使用MLP近似权重函数,提出使用逆密度(inverse density)尺度来重新加权MLP学习的连续函数,这对应于连续卷积的蒙特卡洛近似,从而实现非均匀采样(non-uniform sampling);
- 通过改变卷积求和顺序,实现了更加高效的计算;
- 实现了反卷积操作,可以更好地实现segmentation任务。
- Method
-
Architecture
-
逆密度的重要性:需要通过点的逆密度对卷积操作进行加权,这是因为点云可能被非均匀地采样。直观的说,每一次采样的local region中点的分布是非常多变的(这与image中的pixel有很大不同)。例如下图c中,点与点之间的距离相近,因此每个点的贡献应该较小:
-
如何抽象逆密度权重以及卷积的权重参数:
- 逆密度权重可以通过非线性变换——MLP对密度进行变换,点的密度通过kernel density estimation(KDE,https://blog.youkuaiyun.com/yuanxing14/article/details/41948485)进行预测,并输入MLP中;
- 卷积的权重参数可以通过MLP进行模拟,以point的坐标信息作为输入。
-
层级结构:与PointNet++类似,每一层都包含一个sampling layer,grouping layer以及PointConv(PointNet++的特征提取层用的是PointNet,而本文用提出的PointConv),每K个点的特征聚合为一个点的特征(K×Cin → 1×Cout)。然而,这种结构每层都需要用MLP对权重参数进行近似,计算代价大,因此文章提出了一种更加高效的方法Efficient PointConv:
- 文章通过证明:PointConv结构可以简化为1x1卷积以及矩阵乘法
-
Segmentation任务中的反卷积:
- 与PointNet++类似,首先通过三邻域插值上采样得到点的特征,并skip connection到相同分辨率层的特征,再经过PointConv进行特征聚合,由此组成了一个反卷积层。
-
- 一个泛化性实验:PointConv可以用于image任务,通过将image中的pixel抽象为point,在CIFAR-10达到了不错的效果,证明了PointConv中用MLP拟合卷积权重的有效性:
PointNeXt
-
Main Work:即使精度已经被PointMLP,Point Transformer超越,PointNet++的网络潜能并没有被完全挖掘。文章从两方面对PointNet++进行优化(改变训练策略,以及对PointNet++的结构进行调整,引入inverted residual bottleneck design和separable MLPs,扩大模型scale),提出了PointNeXt,实现sota精度。
-
Method
-
数据增强
- KPConv:在训练时随机丢弃colors;
- Point-BERT:点云重采样(common point resampling strategy-),随机采样1024点;
- RandLA-Net、Point Transformer:在分割任务中加载整个场景。
- 文章以PointNet++作为baseline,对各种不同的数据增强方法进行有效性验证。并且对于不同的任务,文章探索出最合适的数据增强方法:
1)data scaling都适用于分类和分割任务;
2)height appending适用于物体分类任务;
3)当color数据存在时,color drop有非常大的提升;
4)更大的模型更加需要数据增强。
-
优化策略
- 包括损失函数、优化器、学习率scheduler以及模型超参数;
- 文章应用了:AdamW、label smooth、Cosine Decay等。
-
感受野scaling
- 扩大模型感受野的两个方法:扩大neighbor query radius,设计层级结构。由于PointNet++已经实现了后者,因此文章只对前者进行探讨;
- 文章采用两种方法:扩大邻域大小,以及对点坐标进行正则化(若没有正则,坐标值△p=pj-pi数值太小,需要更大的模型权重值进行学习);
-
模型scaling
- 在SA block之后加入Inverted Residual MLP层,从而防止加大模型深度时导致的梯度离散问题;
- Inverted Residual MLP层中采用Separable MLPs,用于减少计算代价同时增强pointwise特征提取能力;
- 下图中红色框代表与PointNet++的不同之处,包括初始的升维度MLP、增加模型层数与channel数量等;
- 文章设计了四种结构,其中C代表首层MLP的升维channel number,B代表每一层中Inverted Residual MLP的数量:
-
- 探索性试验结果