天天看点

【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

南方科技大学

代码链接https://github.com/KuangenZhang/ldgcnn

本文是基于DGCNN和PointNet进行改进之后的工作,主要是用于点云特征提取任务,可以很方便的扩展到点云分类和点云分割任务。主要工作就是在DGCNN的基础上加了不同层之间的skip connections,作者称之为"link",使得点云分类精度有了0.7% 的提升,而且由于去掉了点云变换网络,速度比DGCNN更快了。

现有的点云分类任务上精度最好的网络是DGCNN(1024个点,不使用额外的法向量信息等前提下),其主要的问题是:

  1. DGCNN依赖于transformation network对点云进行预处理(延续了pointnet的思想)但是这个transformation network使得网络的size翻倍,参数量太大
  2. Besides, the deep features and their neighbors may be too similar to provide valuable edge vectors.

本文在DGCNN的基础上,将dynamic graph的不同level 之间的特征进行级联,以此捕获丰富的边缘向量。

不同于pointnet,为了捕获局部特征,使用KNN进行邻域搜索,然后用MLP对邻域内的点特征进行聚合提取。

为了使得网络能够适应点云分类和点云分割的任务,作者认为网络的分类支以及分割支应该满足:

  1. Permutation invariance (排列不变性),因为点云是无序的,对不同的输入顺序应当有相同的输出
  2. Transformation invariance(变换不变性),对一个点云进行任意旋转平移,其结果应当是不变的
  3. Extracting local features(局部特征), 局部特征是点与其邻居之间的关系,这对于点云识别的成功至关重要。 因此需要学习局部特征,而不是分别处理每个点(点名pointnet和pointnet++)

下面看看LDGCNN是怎样实现的:

Graph 初始化:

We do not construct fully connected edges for the pointcloud because it consumes large memory

这里使用了KNN进行最近邻搜索,然后在邻域内建立 locally directed graph:

【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

左边就是一个local graph

在图卷积的每一个level,都进行KNN搜索并更新边的链接关系,这样就可以在both Euclidean space and feature space 建立local graph

特征提取:

After constructing the local graph, we extract local graph features based on the edge convolutional layer

对每一个点pi,输出其local graph 的local feature :

l i = f e ( G ( p i , e i ) ) = max ⁡ { h ( p i , e i 1 ) , h ( p i , e i 2 ) , … , h ( p i , e i K ) } \begin{aligned} l_{i} &=f_{e}\left(G\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}}\right)\right) \\ &=\max \left\{\boldsymbol{h}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{1}}\right), \boldsymbol{h}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{2}}\right), \ldots, \boldsymbol{h}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{\boldsymbol{K}}}\right)\right\} \end{aligned} li​​=fe​(G(pi​,ei​))=max{h(pi​,ei1​​),h(pi​,ei2​​),…,h(pi​,eiK​​)}​

h ( p i , e i j ) \boldsymbol{h}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right) h(pi​,eij​​)是点pi的边向量 e i j e_{i_{j}} eij​​的hidden feature vector.

max操作是顺序不变的

上面hidden feature vector的计算方法:

h c ′ ( p i , e i j ) = ∑ c = 1 C w c ′ c i c + w c ′ ( c + C ) ( p i j c − p i c ) + b c ′ h ( p i , e i j ) = ( h 1 ( p i , e i j ) , h 2 ( p i , e i j ) , … , h C ′ ( p i , e i j ) ) \begin{aligned} h_{c^{\prime}}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right) &=\sum_{c=1}^{C} w_{c^{\prime}} c_{i c}+w_{c^{\prime}(c+C)}\left(p_{i_{j} c}-p_{i c}\right)+b_{c^{\prime}} \\ \boldsymbol{h}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right) &=\left(h_{1}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right), h_{2}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right), \ldots, h_{C^{\prime}}\left(\boldsymbol{p}_{\boldsymbol{i}}, \boldsymbol{e}_{\boldsymbol{i}_{j}}\right)\right) \end{aligned} hc′​(pi​,eij​​)h(pi​,eij​​)​=c=1∑C​wc′​cic​+wc′(c+C)​(pij​c​−pic​)+bc′​=(h1​(pi​,eij​​),h2​(pi​,eij​​),…,hC′​(pi​,eij​​))​

wc′c,wc′(c+C), 以及bc′是MLP中需要学习的权重.

保持变换不变性

pointnet和DGCNN中都使了变换网络对点云进行对齐,但是本文没有使用.作者通过数学证明得出结论:MLP可以近似的起到变换网络的作用,在训练时注意使用旋转变换的数据扩增方式即可.

对点云进行变换可以表示为:

P offset  = [ x 1 y 1 z 1 x 2 y 2 z 2 ⋮ ⋮ ⋮ x n y n z n ] [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] \boldsymbol{P}_{\text {offset }}=\left[\begin{array}{ccc} x_{1} & y_{1} & z_{1} \\ x_{2} & y_{2} & z_{2} \\ \vdots & \vdots & \vdots \\ x_{n} & y_{n} & z_{n} \end{array}\right]\left[\begin{array}{lll} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{array}\right] Poffset ​=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​y1​y2​⋮yn​​z1​z2​⋮zn​​⎦⎥⎥⎥⎤​⎣⎡​r11​r21​r31​​r12​r22​r32​​r13​r23​r33​​⎦⎤​

而MLP的计算过程可以表示为:

h ( P ) = [ x 1 y 1 z 1 x 2 y 2 z 2 ⋮ ⋮ ⋮ x n y n z n ] [ w 11 w 12 ⋯ w 1 C ′ w 21 w 22 ⋯ w 2 C ′ w 31 w 32 ⋯ w 3 C ′ ] + [ b 1 b 2 ⋯ b C ′ ] \begin{aligned} \boldsymbol{h}(\boldsymbol{P}) &=\left[\begin{array}{ccc} x_{1} & y_{1} & z_{1} \\ x_{2} & y_{2} & z_{2} \\ \vdots & \vdots & \vdots \\ x_{n} & y_{n} & z_{n} \end{array}\right]\left[\begin{array}{llll} w_{11} & w_{12} & \cdots & w_{1 C^{\prime}} \\ w_{21} & w_{22} & \cdots & w_{2 C^{\prime}} \\ w_{31} & w_{32} & \cdots & w_{3 C^{\prime}} \end{array}\right] \\ &+\left[\begin{array}{llll} b_{1} & b_{2} & \cdots & b_{C^{\prime}} \end{array}\right] \end{aligned} h(P)​=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​y1​y2​⋮yn​​z1​z2​⋮zn​​⎦⎥⎥⎥⎤​⎣⎡​w11​w21​w31​​w12​w22​w32​​⋯⋯⋯​w1C′​w2C′​w3C′​​⎦⎤​+[b1​​b2​​⋯​bC′​​]​

这里的C’是MLP的通道数.

二者的计算过程是非常i相似的,不同之处在于

The difference is that the transformation network canestimate a specific matrix for each point cloud, whereas theMLP is static for all point cloud.

但是只要MLP的通道数是不少于64的,一个通道意味着将点云进行了一次变换,这使网络近似为旋转不变的.

we also rotate, shift, and scale the input point cloud ran-domly and add random noise on each point. After augmentingthe training data, the network can learn rotation and translationinvariant features

网络结构

  1. 将DGCNN的不同level的特征进行了级联,原因:
    • avoid vanishing gradientproblem for the deep neural network
    • learn new features by using current indices to extractedges from previous features
    • get informative edge vectors
  2. 去掉了transformation network.
    【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

实验分析:

点云分类结果:
【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

优于DGCNN

点云分割结果:
【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

没有明显的优势,comparable

时间复杂度
【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

比pointnet、pointnet++慢,比DGCNN快

可视化

对提取的特征T-SNE降维后可视化:

【论文笔记】动态图神经网络处理点云 LDGCN: Linked Dynamic Graph CNN 2019LDGCN: Linked Dynamic Graph CNN Learning on PointCloud via Linking Hierarchical Features

最后,作者在训练时使用了freezing 的方法(与DGCNN的相同),即:

After training the whole network,I freeze the feature extractor and retrain the classifier.

继续阅读