【3D计算机视觉】Edge-Conditioned Convolution——基于图的动态边缘卷积神经网络


代码:https://github.com/mys007/ecc

一、模型概要

论文主要介绍了一种在图结构上进行卷积操作的一种方法,简称为ECC。ECC的卷积操作和常规的二维图像卷积操作都是一种加权平均操作,不同之处在于ECC可以作用在任何图结构上,并且其权重由节点间的边权所决定。
【3D计算机视觉】Edge-Conditioned Convolution——基于图的动态边缘卷积神经网络

1.1 概念与符号定义

  • 对于一个有向图或者无向图G=(V,E)G=(V,E),结点的个数V=n|V|=n,边缘的个数E=m|E|=m ,设 l{0,...,lmax}l \in \{0,...,l_{max} \} 为神经网络的层数索引。
  • 设图G的顶点和边上都有标签,记第ll层的每个顶点的标签(即特征)维度为dld_l, 则通过矩阵XlRn×dlX^l \in \mathbb{R}^{n \times d_l }来表示这nn个顶点上的标签。同理以LRm×sL \in \mathbb{R}^{m \times s}表示边上的标签(也称属性)。注意,顶点上的标签(特征)维度会随着层数的改变而改变,而边上的标签维度不随着网络层数而变化。记X0X^0为输入信号。
  • 顶点ii的邻居被定义为与ii直接相连的顶点以及ii本身,即:
    N(i)={j;(j,i)E}{i}N(i) = \{j; (j,i) \in E\} \cup \{i\}

1.2 ECC的具体方法

  • 对于一个顶点,ECC的作用域为其所有邻居。
  • ll层的第ii个顶点的特征值Xl(i)RdlX^l(i) \in \mathbb{R}^{d_l}为是由第l1l-1ii的所有邻居的特征值Xl1(j)Rdl1X^{l-1}(j) \in \mathbb{R}^{d_{l-1}}加权求和得到的。
  • 若要解决顶点无序性以及邻居节点数目不确定的问题,显然以常规的方法定义权重是行不通的。ECC的做法:定义函数Fl:RsRdl×dl1F^l: \mathbb{R}^s \mapsto \mathbb{R}^{d_l \times d_{l-1}} ,其输入是一条边ejie_{ji}上的标签值L(j,i)L(j,i),输出则是一个权重矩阵ΘjilRdl×dl1\Theta_{ji}^l \in \mathbb{R}^{d_l \times d_{l-1}}
  • 那么ECC则可表示为:
    Xl(i)=1N(i)jN(i)Fl(L(j,i);ωl)Xl1(j)+blX^l(i) = \frac{1}{N(i)} \sum_{j \in N(i)}F^{l}(L(j,i); \omega^l)X^{l-1}(j) + b^l =1N(i)jN(i)ΘjilXl1(j)+bl= \frac{1}{N(i)} \sum_{j \in N(i)}\Theta_{ji}^l X^{l-1}(j) + b^l
    其中blRdlb^l \in \mathbb{R}^{d_l}是一个可学习的偏置,ωl\omega^l是函数FlF^l的可学习权重。文中使用多层感知机mlp来表示函数FlF^l。在训练阶段,blωlb^l 、\omega^l在每一次迭代时都会被更新。测试阶段,blωlb^l 、\omega^l不会再变化,而Θjil\Theta_{ji}^l的具体值仍依赖于给定的边ejie_{ji}上的标签值L(j,i)L(j,i)。因此ECC是一种使用了动态卷积核的方法。

二、 点云上的应用

2.1 点云构图 Graph Construction on point cloud

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

  • 用点云中每个点pp作为图G中的每个顶点vv;
  • 每个顶点vv的初始取值为相应的pp的特征值(密度、RGB值等);
  • 顶点viv_i的空间邻域内的所有顶点vjv_j被认为是viv_i的邻居。空间领域可以有多种取法,可以用knn取,也可以在固定半径的范围内取,实验中固定半径的方法更好;
  • viv_i与其所有邻居vjv_j以有向边e(j,i)e(j,i)相连,每条边的标签以一个六维向量来表示:
    L(j;i)=(δx,δy,δz,δ,arccos(δz/δ),arctan(δy/δx))L(j; i) = (δx, δy, δz, ||δ||, arccos( δz/||δ||) ,arctan(δy/δx) )其中δ=pjpi\delta=p_j - p_i, 即pj,pip_j,p_i两点在欧氏空间下的向量偏移。上式中前三个分量为δ\delta在笛卡尔坐标系下的坐标值,后三个分量为其在球坐标系下的坐标值。

2.2 点云下采样 Graph Coarsening on point cloud

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

  • 使用一个分辨率为rhr^h的3d网格框住整个点云Ph1P^{h-1}

  • 对于网格中的每个体素, 用该体素的中心点来表示该体素内的所有点

  • 用上一节的方法对新的点云PhP^h进行图的构造,得到更粗粒度的图GhG^{h}

按论文中的说法,对于每一个输入图G,都事先使用Graph Coarsening方法为其建立一个hmaxh^{max}层的图金字塔,金字塔的层数越高,对应的图具有更粗的粒度。然后在网络的pooling层,则根据金字塔中对应的相邻层的结点映射关系来执行pooling操作。
【3D计算机视觉】Edge-Conditioned Convolution——基于图的动态边缘卷积神经网络