PointNet阅读笔记

基本上翻译自[1]:Pointnet: Deep learning on point sets for 3d classification and segmentation,加了一点个人理解。

Introduction

典型的卷积结构需要规则的数据结构,比如图像或者voxel模型。对于点云、mesh这样的非规则数据结构,往往就会将它们转化成voxel模型或多视角下的二维图片,再用卷积进行处理。二维图像损失了部分几何信息,而体素化则引入了人工的误差,因此都不是理想的处理方式。

作者希望发现一种网络结构,可以直接处理点云。点云模型中,点的顺序和结果无关,因此这一模型必须是和顺序无关的(invariant to permutation)。另外,模型也需要对刚性变化保持不变性(invariant to rigid motions)。

作者提出了PointNet,它以点云作为输入,输出模型的类别(对于模型分类问题)或每个点所属的类别(对于模型分割问题)。PointNet的结构非常简单,它先对每个点进行独立相同(identical & independent)处理,再使用一个简单的对称函数(symmetric function,它的性质是,改变输入参数的顺序,不影响最后的结果)得到特征向量。在论文中,这一对称函数非常简单,就是逐元素取最大值(max pooling)。

论文的主要贡献为:

  1. 设计了一个处理点云的模型;
  2. 验证了模型可以用于模型分类、分割和语义信息提取;
  3. 对方法的有效性和稳定性提出了经验和理论的分析
  4. 对模型的有效性提出了符合直观的解释

Related Work

  • Point Cloud Features
  • Deep Learning on 3D Data
    • 体素化CNN(Volumetric CNN)
    • 多视角CNN(Multiview CNN)
    • 谱方法CNN(Spectral CNN)
    • 基于特征的深度网络(Feature-based DNN):传统方法提取几何特征,再使用全连接。

Problem Statement

  • 输入:NN个点,每个点3个坐标。
  • 输出:对于kk模型分类,输出kk维向量,分别表示kk个类别的概率;对于模型分割,对每个点输出mm维向量,表示该点属于mm个类别的概率。

Deep Learning on Point Sets

点云的性质

  • 无序性。对于N!N!种点不同顺序的组合,输出结果都应是一样的。
  • 点的互动。点之间满足空间上的度量,邻近的点构成了局部特征。
  • 变换不变性。平移和旋转不应改变物体的分类或分割结果。

PointNet的结构

PointNet阅读笔记

对无序输入的对称函数

处理无序输入往往有三种方式:

  • 先排序再输入。它的缺点有:对于高维数据,不存在唯一的排序。
  • RNN。在“OrderMatters”论文中,作者论证了RNN中顺序是无法被完全丢弃的。
  • 对称函数。PointNet即采用了这种方法。

本文构造的对称函数如下:
f({x1, ,xN})g(h(x1), ,h(xN)) f\left(\left\{ x_1, \cdots, x_N \right\}\right) \approx g\left( h(x_1), \cdots, h(x_N) \right)

其中,ff2RNR2^{\mathbb{R}^N} \rightarrow \mathbb{R}的函数,其中2RN2^{\mathbb{R}^N}表示NN维向量组成的集合作为输入。hhRNRK\mathbb{R}^N \rightarrow \mathbb{R}^K的函数,将原来的NN(仅考虑坐标则为3,若另有cc维的点上的特征,则为3+c3+c)变成KK维向量。gg是一个RKRKR\mathbb{R}^K * \cdots * \mathbb{R}^K \rightarrow \mathbb{R}的对称函数。

局部特征和全局特征的整合

对于模型分类问题,对上述的ff直接用SVM或者多层感知机(MLP)做分类就好了。

对于模型分割问题,将上述的全局特征向量,分别concatenate到每个点经过hh运算后的向量上。对concatenate后的向量,再使用SVM或MLP做分类就好了。使用这样的方法,论文中给出了预测每个点法向量的结果,这说明每个点能通过全局特征感知到自己的邻域。

PointNet阅读笔记

联合对齐网络

点云的语义信息应该不随点云的刚性几何变换(旋转或平移)而变化。一种自然的想法是在特征提取之前先做一次对齐。我们可以设计一个小网络(mini-network)来学习一个333*3的变换矩阵,并对N3N*3的点云做变换。

这样的想法可以进一步用于特征空间的对齐,因此在上方的流程图中,还有一个646464*64的变换矩阵,对特征空间做对齐。特征空间的变换矩阵维度(646464*64)要远大于几何空间(333*3),因此避免变换矩阵太难优化,在损失函数部分加上一个正则项,即
Lreg=IAATF2 L_{reg} = || I - AA^T ||_{F}^{2}

理论分析

全局估计能力

首先证明PointNet这样的设计可以逼近连续集合函数(continuous set function)。之所以要求集合函数的连续性,这样我们给输入点加上一个小误差时,不会给分类或分割结果带来明显的变化。

X={S:S[0,1]mandS=n}\mathcal{X} = \{ S: S \subseteq [0,1]^m and |S|=n \},即X\mathcal{X}是一个有nn个元素的集合,其中每个元素都是一个mm维,在[0,1][0,1]上的向量。f:XRf : \mathcal{X} \rightarrow \mathbb{R}ff是一个集合函数,它的连续性定义在集合的Hausdorff距离上,即
ε>0,δ, for any S,SX, if dH(S,S)<δ, then f(S)f(S)<ε \forall \varepsilon > 0, \exists \delta, \text{ for any } S, S' \in \mathcal{X}, \text{ if } d_H(S,S')<\delta, \text{ then } |f(S)-f(S')|<\varepsilon
即如果集合上的差异(Hausdorff距离)足够小,那么通过ff运算后的结果也差异足够小。

定理1

假设f:XRf: \mathcal{X} \rightarrow \mathbb{R}是定义在Hausdorff距离dH(,)d_H(\cdot, \cdot)上的一个连续集合函数,ε>0\forall \varepsilon > 0,则存在一个连续函数hh和一个对称函数g(x1, ,xn)=γMAXg(x_1, \cdots, x_n) = \gamma \circ \text{MAX},使得对于任意的SXS \in \mathcal{X}
f(S)γ(MAXxiS{h(xi)})<ε \left| f(S) - \gamma \left(\text{MAX}_{x_i \in S} \{h(x_i)\}\right) \right| < \varepsilon
其中,γ\gamma是一个连续函数,MAX\text{MAX}是一个逐元素取最大值的操作。

证明

由于ff的连续性,取一个δε\delta_{\varepsilon},有对任意的S,SXS,S' \in \mathcal{X}dH(S,S)<εd_H(S,S')<\varepsilon,都有f(S)f(S)<ε|f(S)-f(S')|<\varepsilon

K=1/δεK=\lceil 1/\delta_\varepsilon \rceil,我们将[0,1][0,1]区间分成KK等分(每等分大小都小于δε\delta_\varepsilon),并将SS中的每一个点都映射到自己所处的那一份的左边界,即进行一个如下的变换:
σ(x)=KxK \sigma(x) = \frac{\lfloor Kx \rfloor}{K}

令经过变换后的集合为S~\tilde{S},由于每一等分都小于δε\delta_\varepsilon,显然有f(S)f(S~)<ε|f(S)-f(\tilde{S})|<\varepsilon

hk(x)=ed(x,[k1K,kK])h_k(x) = e^{-d(x,[\frac{k-1}{K}, \frac{k}{K}])},其中,d(x,I)d(x,I)表示点xx到区间II的距离。令h(x)=[h1(x); ;hK(x)]h(x) = [h_1(x); \cdots; h_K(x)],那么h:RRKh: \mathbb{R} \rightarrow \mathbb{R}^K

vj(x1, ,xn)= max {hj(x1), ,hj(xn)}v_j(x_1, \cdots, x_n) = \text{ max } \{ h_j(x_1), \cdots, h_j(x_n)\},若第jj区间中有点,则vjv_j就为1,否则小于1。令v=[v1; ;vK]v = [v_1; \cdots; v_K],则v:RR[0,1]Kv: \mathbb{R} * \cdots * \mathbb{R} \rightarrow [0,1]^K是一个对称函数,表示每个区间中是否有点。

τ(v)={k1K:vk=1}\tau(v) = \left\{ \frac{k-1}{K}: v_k=1 \right\},可以看到,τ\tau将向量转化为点集,即{0,1}KX\{0,1\}^K \rightarrow \mathcal{X}

容易证明τ(v(x1, ,xn))S~\tau(v(x_1,\cdots,x_n)) \equiv \tilde{S}。令γ(v)=f(τ(v))\gamma(v) = f(\tau(v)),则γ(v)=γ(MAX(h(x1), ,h(xn)))\gamma(v) = \gamma(\text{MAX}(h(x_1), \cdots, h(x_n))),证毕。

说明

上面的一些步骤,似乎将xix_i视为了标量,不过很容易看出,变成向量并不会影响结论。上述证明的直观理解是,在最差的情况下,我们将点云变成voxel,然后按voxel的方式进行处理。

维度瓶颈和稳定性

通过理论和实验,作者发现网络的表达力和最大化层的维度KK非常相关。令u= MAX xiS{h(xi)}u=\text{ MAX }_{x_i \in S} \{h(x_i)\},则有定理2成立。定理2告诉我们,只要关键点(critical points,对应CSC_S)不变,增加一些小误差(noise,对应NSN_S),不会改变最终结果。

PointNet阅读笔记

定理2

u:XRKu: \mathcal{X} \rightarrow \mathbb{R}^K满足u= MAX xiS{h(xi)}u=\text{ MAX }_{x_i \in S} \{h(x_i)\},且f=γuf = \gamma \circ u,则
(a) S,CS,NSX,f(T)=f(S) if CSTNS(b) CSK \begin{aligned} \text{(a) } & \forall S, \exists C_S, N_S \subseteq \mathcal{X}, f(T) = f(S) \text{ if } C_S \subseteq T \subseteq N_S \\ \text{(b) } & |C_S| \leq K \end{aligned}

证明

显然,SX\forall S \in \mathcal{X}f(S)f(S)都是由u(S)u(S)决定的,u(S)u(S)一共有KK维,每一维最多新增一个点到CSC_S,所以(b)显然成立。在CSC_S的基础上,增加其他点,都不改变u(S)u(S),因此(a)也显然成立。证毕。

说明

我个人的理解是,CSXC_S \subseteq \mathcal{X},但XNS\mathcal{X} \subseteq N_S,所以,只要在变换后,不超出CSC_S边界的噪声点,都不会影响最终的结果。定理2说明了PointNet的稳定性。

一些impressive的结果

对部分可见的模型的分类和分割

PointNet阅读笔记

对部分可见的模型的正确率

PointNet阅读笔记

参考文献

[1] Qi, Charles R., et al. “Pointnet: Deep learning on point sets for 3d classification and segmentation.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017.