当前位置:网站首页>【点云处理之论文狂读经典版12】—— FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation
【点云处理之论文狂读经典版12】—— FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation
2022-07-03 08:53:00 【LingbinBu】
FoldingNet: Point Cloud Auto-encoder via Deep Grid Deformation
摘要
- 背景: 目前的深度学习网络都是通过点集的形式直接处理点云,并且在分类和分割的点云处理任务上取得了不错的成绩
- 问题: 点云在无监督学习下的挑战
- 方法: 本文提出了一种端到端式的深度auto-decoder
- 细节:
- 在encoder端,使用一种基于Graph的增强方法提升PointNet的局部结构提取能力
- 在decoder端,使用基于folding的方法将一个规范的2D网络变形成点云的表面形状,在获取细节结构的同时还会导致很低的重建误差
- 优势:
- 所提出decoder使用的参数数量很少,但是能够产生更具鉴别性的表示
- 所提出的decoder是一个通用结构,在理论上能够根据2D网格重建任意点云的表面形状
- 代码:

引言
如表1所示,在decoder阶段,我们想要施加一个“虚拟的外力”,将2D网格 变形 成3D物体的表面形状,这种变形应该受到网格neighborhood相互连接的影响和约束。

FoldingNet Auto-encoder on Point Cloud
Auto-encoder的pipeline如图2所示。encoder的输入是一个 n × 3 n \times 3 n×3的矩阵,矩阵的每一行包含了3D点云的位置 ( x , y , z ) (x, y, z) (x,y,z)。输出是一个 m × 3 m \times 3 m×3的矩阵,表示重建后点的位置。重建后点的数量 m m m没必要与原始点云的数量 n n n相同。假设输入包含了点集 S S S,重建后的点集为 S ^ \widehat{S} S,那么重建误差可以使用 extended Chamfer distance进行计算:
d C H ( S , S ^ ) = max { 1 ∣ S ∣ ∑ x ∈ S min x ^ ∈ S ^ ∥ x − x ^ ∥ 2 , 1 ∣ S ^ ∣ ∑ x ^ ∈ S ^ min x ∈ S ∥ x ^ − x ∥ 2 } \begin{aligned} d_{C H}(S, \widehat{S})=\max &\left\{\frac{1}{|S|} \sum_{\mathbf{x} \in S} \min _{\widehat{\mathbf{x}} \in \widehat{S}}\|\mathbf{x}-\widehat{\mathbf{x}}\|_{2},\right. \left.\frac{1}{|\widehat{S}|} \sum_{\widehat{\mathbf{x}} \in \widehat{S}} \min _{\mathbf{x} \in S}\|\widehat{\mathbf{x}}-\mathbf{x}\|_{2}\right\} \end{aligned} dCH(S,S)=max{ ∣S∣1x∈S∑x∈Smin∥x−x∥2,∣S∣1x∈S∑x∈Smin∥x−x∥2⎭⎬⎫
min x ^ ∈ S ^ ∥ x − x ^ ∥ 2 \min _{\widehat{\mathbf{x}} \in \widehat{S}}\|\mathbf{x}-\widehat{\mathbf{x}}\|_{2} minx∈S∥x−x∥2强制原始点云中的任意的3D点 x \mathbf{x} x 都能够和重建后点云中的3D点 x ^ \widehat{\mathrm{x}} x相匹配, min x ∈ S ∥ x ^ − x ∥ 2 \min _{\mathbf{x} \in S}\|\widehat{\mathbf{x}}-\mathbf{x}\|_{2} minx∈S∥x−x∥2正好和上面反过来。max操作强制从 S S S 到 S ^ \widehat{S} S和从 S ^ \widehat{S} S 到 S S S的距离必须同时小。encoder计算了每个输入点云的表示codeword,那么decoder就会根据这个codeword重建点云。在本文中,codeword的长度被设置为512。
Graph-based Encoder Architecture
基于Graph的encoder遵循着和 KCNet 一样的设计,该网络使用点云的neighborhood graphs进行有监督学习。encoder是多个MLP层和基于Graph的max pooling层拼接而成的。Graph以输入点集的位置作为顶点,再通过KNN得到K-NNG。实验中,将 K K K设置成16。
- 首先,对于每个点 v v v,计算其大小为 3 × 3 3 \times 3 3×3的局部协方差矩阵,并将其向量化为 1 × 9 1 \times 9 1×9的向量。 v v v的局部协方差是利用K-NNG中 v v v(包括 v v v)的one-hop neighbors 点的三维位置来计算的;
- 将大小为 n × 3 n \times 3 n×3的位置矩阵和大小为 n × 9 n \times 9 n×9的局部协方差矩阵进行拼接,得到大小为 n × 12 n \times 12 n×12的矩阵作为输入,放到3层的MLP里;
- MLP的输出被放入两个连续的graph层中,其中每一层都对节点的邻域使用max pooling;
具体而言,假设K-NN Graph有邻接矩阵 A \mathbf{A} A和输入矩阵 X \mathbf{X} X,那么输出矩阵为:
Y = A max ( X ) K \mathbf{Y}=\mathbf{A}_{\max }(\mathbf{X}) \mathbf{K} Y=Amax(X)K
其中 K \mathbf{K} K是特征映射矩阵,矩阵 A max ( X ) \mathbf{A}_{\max }(\mathbf{X}) Amax(X)的第 ( i , j ) (i, j) (i,j)个元素为:
( A max ( X ) ) i j = ReLU ( max k ∈ N ( i ) x k j ) \left(\mathbf{A}_{\max }(\mathbf{X})\right)_{i j}=\operatorname{ReLU}\left(\max _{k \in \mathcal{N}(i)} x_{k j}\right) (Amax(X))ij=ReLU(k∈N(i)maxxkj)
上式中的局部max pooling操作本质上是在计算基于graph结构的局部signature,这个signature可以表示局部邻域的(聚合后)拓扑信息。通过拼接基于graph的max pooling层,网络将拓扑信息传播到更大的区域中。
Folding-based Decoder Architecture
所提出的decoder使用了两个连续3层的MLP,令2D网格更“贴合”输入点云的形状。输入codeword是通过上一节中的encoder得到的。
- 在将codeword输入到decoder中前,要将该codeword复制 m m m次,变成大小为 m × 512 m \times 512 m×512的矩阵,然后和包含了 m m m个网格的点坐标进行拼接,拼接的结果是一个大小为 m × 514 m \times 514 m×514的矩阵。
- 将拼接后的矩阵作为输入,以行为单位进行处理,放入一个3层MLP,输出是大小为 m × 3 m \times 3 m×3的矩阵。
- 将上面输出的矩阵再与重复的codeword矩阵进行拼接,再放入一个3层的MLP,最后得到大小为 n × 3 n \times 3 n×3的重建后输出。
再本文中, n n n取2048, m m m取平方后的数,2025。
定义
将重复codeword和低维网格点的拼接,再接一个point-wise MLP的操作称为一个folding。
folding操作本质上是一个通用的2D到3D的映射。为了直观地理解为何folding操作是一个通用的2D到3D的映射,记矩阵 U \mathbf{U} U为输入的2D网格点, U \mathbf{U} U的每行是一个二维网格点;记 U \mathbf{U} U的第 i i i行为 u i \mathbf{u}_i ui,从encoder中得到的codeword为 θ \boldsymbol{\theta} θ。那么在拼接后,输入到MLP中矩阵的第 i i i行可以写成 [ u i , θ ] \left[\mathbf{u}_{i}, \boldsymbol{\theta}\right] [ui,θ]。由于MLP是并行地在输入矩阵的每一行上进行处理,所以输出矩阵的第 i i i行可以写成 f ( [ u i , θ ] ) f\left(\left[\mathbf{u}_{i}, \boldsymbol{\theta}\right]\right) f([ui,θ]),其中 f f f表示由MLP构成的函数。该函数可以看成一个参数化的高维函数,其中codeword θ \boldsymbol{\theta} θ是引导函数结构的参数(folding operation)。由于MLP在估算非线性函数上能力很强,所以它们可以在2D网格上进行更好的folding operation。高维的codeword本质上存储着一种结构特征,迫使2D网格进行变形,使得folding operation更加的多样化。
所提出的decoder有两个folding operation。第一个folding operation是将2D网格从2D空间变换到3D空间,第二个folding operation是在3D空间内进行变换,见表1。
理论分析
理论1
所提出的encoder结构是排序不变的,即如果输入点云矩阵的行是可以任意排序的,得到的codeword仍然保持不变。
理论2
存在一个两层的MLP,能够使用folding操作将一个二维grid重构成任意的点云。
实验
Visualization of the Training Process

Point Cloud Interpolation

Point Cloud Interpolation


Transfer Classification Accuracy


Semi-supervised Learning:What Happens when Labeled Data are Rare

Effectiveness of the Folding-Based Decoder

生词
- downside n. 缺点,不足之处
边栏推荐
- AcWing 785. 快速排序(模板)
- createjs easeljs
- php public private protected
- LeetCode 438. Find all letter ectopic words in the string
- How to delete CSDN after sending a wrong blog? How to operate quickly
- AcWing 787. Merge sort (template)
- LeetCode 30. Concatenate substrings of all words
- 22-06-28 Xi'an redis (02) persistence mechanism, entry, transaction control, master-slave replication mechanism
- What is an excellent fast development framework like?
- On the setting of global variable position in C language
猜你喜欢
In the digital transformation, what problems will occur in enterprise equipment management? Jnpf may be the "optimal solution"
我們有個共同的名字,XX工
LeetCode 871. Minimum refueling times
LeetCode 508. 出现次数最多的子树元素和
高斯消元 AcWing 883. 高斯消元解线性方程组
PIC16F648A-E/SS PIC16 8位 微控制器,7KB(4Kx14)
Instant messaging IM is the countercurrent of the progress of the times? See what jnpf says
Mortgage Calculator
数字化管理中台+低代码,JNPF开启企业数字化转型的新引擎
Markdown learning
随机推荐
What is the difference between sudo apt install and sudo apt -get install?
The difference between if -n and -z in shell
MySQL three logs
URL backup 1
LeetCode 535. Encryption and decryption of tinyurl
Binary tree sorting (C language, int type)
LeetCode 324. 摆动排序 II
【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
数字化转型中,企业设备管理会出现什么问题?JNPF或将是“最优解”
Wonderful review | i/o extended 2022 activity dry goods sharing
too many open files解决方案
Parameters of convolutional neural network
AcWing 786. 第k个数
AcWing 787. 归并排序(模板)
The method of replacing the newline character '\n' of a file with a space in the shell
Using variables in sed command
LeetCode 532. K-diff number pairs in array
Vscode connect to remote server
22-05-26 西安 面试题(01)准备
Slice and index of array with data type