PointNet
原文:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
https://arxiv.org/pdf/1612.00593
Stanford University
定义3D点云
点云:一组3D点 { P I ∣ i = 1 , . . . , n } \{P_I|i=1,...,n\} {PI∣i=1,...,n},其中 P i P_i Pi由坐标 ( x , y , z ) (x,y,z) (x,y,z)及其他特征构成。在PointNet这篇论文中,仅使用了坐标。
3D点云的特点
- Unordered: 点之间是无序的。因而,模型的输出结果应不随输入顺序改变而改变。
- Interaction among points: 点之间是有空间(距离)关系的,并非独立存在的。因而,模型需要捕获局部结构关系。
- Invariance under transformations: 变换不应改变点本身的分类或者分割关系。
原文这一段的写法非常值得借鉴,简明介绍了点云数据的特点,又点出了对点云模型设计的需求。
PointNet架构
核心模块包括:
- the max pooling layer as a symmetric function to aggregate information from all the points
- a local and global information combination structure
- two joint alignment networks that align both input points and point features
Symmetry Function for Unordered Input (针对无序输入的对称映射方法)
为了保证数据的置换不变性(结果不随数据输入顺序而改变),一般有三种选择:
- 将序列进行排序,得到一个绝对顺序
- 枚举全部排序进行训练
- 使用对称映射方法将所有点的信息聚合,例如加法、乘法
本文选取第三种方式,用神经网络拟合一个对称映射方法。具体而言:
f ( { x 1 , . . . , x n } ) ≈ g ( h ( x 1 ) , . . . , h ( x n ) ) f(\{x_1,...,x_n\})\approx g(h(x_1), ..., h(x_n)) f({x1,...,xn})≈g(h(x1),...,h(xn))
其中 h h h是MLP, g g g是一个单值函数和一个最大池化层(max pool)。
此处是为了解决前文提到的unordered的问题
Local and Global Information Aggregation (局部和全局信息整合)
主要指架构中的Segmentation Network部分,即在获得全局信息(global feature)后,将全局信息与此前步骤得到的局部信息整合。具体来说,将全局信息(1 x 1024)扩展成(n x 1024),与前面得到的(n x 64)进行整合,得到(n x 1088),然后用MLP进行信息提取。
主要解决Interaction among points问题
Joint Alignment Network(对齐网络)
使用T-net架构,并且引入了正则化loss,使其接近正交矩阵,在降低参数量的同时尽可能保持信息。
正则化loss:
L
=
∣
∣
I
−
A
A
T
∣
∣
F
2
L=||I-AA^T||^2_F
L=∣∣I−AAT∣∣F2
此处笔者仍存在疑惑,敬请读者指导更正。
在此之后还产生了一系列比较知名的工作,例如PointNet++、Point Transformer V1~V3,对这一领域的影响极其深远。