【点云系列】FPConv:Learning Local Flattening for Point Convolution

tech2025-06-27  12

文章目录

1. 概要1.1 原文出处1.2 背景知识 2. Motivation:3. 思想3.1 整体框架3.2 分割框架 3. 算法3.1 局部平面化3.2 特征密度归一化 4. 实验结果5. 几点思考

1. 概要

1.1 原文出处

题目: FPConv:Learning Local Flattening for Point Convolution, CVPR 2020 论文:https://arxiv.org/abs/2002.10701 代码:https://github.com/lyqun/FPConv

1.2 背景知识

点云分析所使用方法: Volumetric-style 点卷积: 通过体素化编程规则的网格结构,使用3D卷积来操作。 缺点:低表达性能 + 高计算量, 且不能够很好地补获均匀区域。

Graph-style点卷积: 增加了点之间的关联性,比volumetric-style更有效;一般可定义在谱域。 缺点:取决于特定图结构, 且可靠的关联性并不容易建立;

Surface-style点卷积: 大部分工作将形状表面投影到中间网格结构,然后在使用传统卷积进行操作。例如RGBD。 缺点:多视角的冗余表达。切线角的话取决于切线估计,不足以面对复杂场景。不能准确进行表面估计。

2. Motivation:

不需要转换为3D网格或图之类的中间表达形式,而是可以直接处理点云的表面几何,是Surface-style点卷积中的一种。传统方法通常分成两步骤:映射+2D卷积,那么是否可以将投影和插值简化为单个权重图学习的过程,使得表达更加通用和隐含?答案当然是肯定的也就是这篇文章的亮点所在。

3. 思想

为点云分析提出了一种 平面化的卷积方法,摒弃了先映射再2D卷积的两步骤,合称为一个过程定义为FPPConv的平面卷积操作,通过学习权重矩阵来实现。简言之,就是,为每个面片(每个点及其邻居点所构成)学习非线性投影,然后展平到2D栅格内。相当于将每个点及其领域映射成了一个平面处理,类似局部点域的注意力机制。

3.1 整体框架

如下图所示,输入的坐标和特征都来源于在p点随机选取一定范围内的N个随机点,及其对应特征;

3.2 分割框架

其中的分割框架如下: FPConv块设计如下: 融合卷积设计如下:

3. 算法

3.1 局部平面化

p p p是点云 P \mathcal{P} P中的一个点, F ( p ) \mathcal{F(p)} F(p)为定义在点上的标量函数。在这 F ( p ) \mathcal{F(p)} F(p)能够编码来自网络中间层的像颜色、几何或特征等信号。 N ( p ) \mathcal{N(p)} N(p) p p p点为中心的一个点云块。 N ( p ) = { q i = q i − p ∣ ∣ ∣ q i − p ∣ ∣ 2 < ρ , q i ∈ P } \mathcal{N(p)=\{q_i=q_i-p | ||q_i-p||_2<\rho ,q_i \in \mathcal{P}\}} N(p)={qi=qipqip2<ρ,qiP} ,其中 ρ \rho ρ是选定的半径。

公式(1):定义了一个虚拟2D平面, π \pi π N ( p ) \mathcal{N(p)} N(p) S S S的映射; 公式(2):为定义在点 p p p的卷积,其中 c ( u ) c(u) c(u)为卷积核。

公式(3):由于 π \pi π S S S中的映射是离散点,因此需要使用差值方法来估计 S ( u ) S(u) S(u)的所有信号。 公式(4):如果将 S S S信号离散化到网格大小为 M w × M h M_w \times M_h Mw×Mh的屏幕。对于每个网格 S ( v j ) S_(v_j) S(vj)而言,其中 j ∈ { 1 , 2 , 3 , . . . , M w × M h } j \in \{1,2,3,..., M_w \times M_h\} j{1,2,3,...,Mw×Mh}可以得出此公式。 公式(5):由于 w j i = w ( v j , π ( q i ) ) w_{ji}=w(v_j, \pi(q_i)) wji=w(vj,π(qi)), 因此我们可以改写公式(2)成一个近似离散的形式,即为公式(5),其中 c j c_j cj是离散化卷积的核权值。设 L = M w × M h , W f ∈ R N × L , W f ( i , j ) = w ( v j , π ( q i ) ) , F ( p ) = ( F ( q 1 ) , . . . F ( q N ) ) T ∈ R N × C L=M_w \times M_h, W_f\in \mathbb{R}^{N \times L}, W_f(i,j)=w(v_j, \pi(q_i)), F(p)=(\mathcal{F(q_1),...\mathcal{F(q_N)})}^T\in \mathbb{R}^{N \times C} L=Mw×Mh,WfRN×L,Wf(i,j)=w(vj,π(qi)),F(p)=(F(q1),...F(qN))TRN×C,

3.2 特征密度归一化

由于网格化到平面后的特征密度可能不平衡,导致网络难以收敛,因此继而提出来两个归一化方法用来学习投影权值:

密集网格平面: 一种方式是在第一维度除以所有和,确保在每个点的密度和为1。有点类似双线性差值,但为了避免除0,我们使用softmax如公式(6)所示:

稀疏网格平面: 由于点自然的稀疏性,归一化投影权值获取密集网格平面不是最优的。因此,设计了稀疏网格平面。 分两步: Step 1: 归一化第二维度来平衡由局部邻居点获取的密度。 Step 2:归一化第一维度来平衡每个点位置密度。但是选取了另一种Max方式来确保连续的稀疏性。

4. 实验结果

分类效果一般,其中使用了数据增强:z轴随机旋转和抖动;

ScanNet数据集上的效果一般,但是在S3DIS数据集上的分割效果还不错。

参数方面,使用了Switchable Normalization, SGD优化器momentum=0.98, 训练的batch_size为12,应该在调参上下了一番功夫。

5. 几点思考

相对于平坦的区域表现更好,可作为体素的补充;平滑区域ok,但曲率大的就不适用了。有点类似FoldingNet思想;都是通过2D流体来模拟点云;
最新回复(0)