ECC notes:Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs

论文主要介绍了一种在图结构上进行卷积操作的一种方法,简称为ECC。总结而言,ECC的卷积操作和常规的二维图像卷积操作都是一种加权平均操作,不同之处在于ECC可以作用在任何图结构上,并且其权重由节点间的边权所决定。

Edge-Conditioned Convolution(ECC)

ECC是一种对一个图的局部信息进行卷积的方法。Edge-Conditioned的意思是其卷积核由图上的来决定。

概念与符号定义
  • 对于一个有向图或者无向图G=(V,E)|V|=n ,|E|=m ,设l \in \{0,...,l_{max} \} 为前馈神经网络的层数索引。
  • 设图G的顶点和边上都有标签(label)。记第l层的每个顶点的标签(也称信号或特征)维度为d_l, 则通过矩阵X^l \in \mathbb{R}^{n \times d_l }来表示这n个顶点上的标签。同理以L \in \mathbb{R}^{m \times s}表示边上的标签(也称属性)。注意到这里,顶点上的标签维度会随着层数的改变而改变,而边上的标签维度s不随着网络层数而变化。记X^0为输入信号。
  • 顶点i的邻居被定义为与i直接相连的顶点(在有向图中则为i的先辈节点)以及i本身,即:

N(i) = \{j; (j,i) \in E\} \cup \{i\}

ECC具体方法

对于一个顶点,ECC的作用域为其所有邻居。

l层的第i个顶点的特征值X^l(i) \in \mathbb{R}^{d_l}为是由第l-1i的所有邻居的特征值X^{l-1}(j) \in \mathbb{R}^{d_{l-1}}加权求和得到的。

若要解决顶点无序性以及邻居节点数目不确定的问题,显然以常规的方法定义权重是行不通的(比如二维矩阵上的卷积核定义)。ECC的做法:定义一簇可学习的(learnable)函数F^l: \mathbb{R}^s \mapsto \mathbb{R}^{d_l \times d_{l-1}} ,其输入是一条边e_{ji}上的标签值L(j,i),输出则是一个权重矩阵\Theta_{ji}^l \in \mathbb{R}^{d_l \times d_{l-1}}。那么ECC则可表示为:
X^l(i) = \frac{1}{N(i)} \sum_{j \in N(i)}F^{l}(L(j,i); \omega^l)X^{l-1}(j) + b^l
= \frac{1}{N(i)} \sum_{j \in N(i)}\Theta_{ji}^l X^{l-1}(j) + b^l
其中b^l \in \mathbb{R}^{d_l}是一个learnable的偏置,\omega^l是函数F^l的learnable的参数。文中使用多层感知机mlp来表示函数F^l。在训练阶段,b^l ,\omega^l在每一次迭代时都会被更新。测试阶段,b^l ,\omega^l都不会再变化,而\Theta_{ji}^l的具体值仍依赖于给定的边e_{ji}上的标签值L(j,i)。因此ECC是一种使用了动态卷积核的方法。

点云上的应用

点云(PointCloud)也可以被视为一种图结构。论文介绍了在原始点云数据结构上进行构图以及对其进行下采样的方法。

点云构图 Graph Construction on point cloud P
  • 用点云中每个点p作为图G中的每个顶点v

  • 每个顶点v的初始取值为相应的p的特征值(密度、RGB值等)

  • 顶点v_i空间邻域内的所有顶点v_j被认为是v_i的邻居。空间领域可以有多种取法,可以用knn取,也可以在固定半径的范围内取,实验中固定半径的方法更好

  • v_i与其所有邻居v_j以有向边e(j,i)相连

  • 每条边的label以一个6维向量来表示:
    L(j; i) = (δx, δy, δz, ||δ||, arccos( δz/||δ||) ,arctan(δy/δx) ).
    其中\delta=p_j - p_i , 即p_j,p_i 两点在欧氏空间下的向量偏移。上式中前三个分量为\delta 在笛卡尔坐标系下的坐标值,后三个分量为其在球坐标系下的坐标值

点云下采样 Graph Coarsening on point cloud P

使用VoxelGrid方法对点云进行粗粒度化(也即pooling)。具体做法:

  1. 使用一个分辨率为r^h的3d网格框住整个点云P^{h-1}
  2. 对于网格中的每个voxel, 用该voxel中的中心点来表示该voxel内的所有点
  3. 用上一节的方法对新的点云P^h进行图的构造,得到更粗粒度的图G^{h}

按论文中的说法,对于每一个输入图G,都事先使用Graph Coarsening方法为其建立一个h^{max}层的图金字塔,金字塔的层数越高,对应的图具有更粗的粒度。然后在网络的pooling层,则根据金字塔中对应的相邻层的结点映射关系来执行pooling操作。

你可能感兴趣的:(ECC notes:Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs)