AI 科技评论按:网格是几何数据的常用高效表示, 在几何曲面构建的机器学习方法对计算机图形学,3D 计算机视觉以及几何分析和处理有着重要的意义。
近期,在雷锋网 GAIR 大讲堂上,来自纽约大学科朗数学研究所 (NYU Courant) 二年级博士生姜仲石同学将介绍 Surface Networks 这一定义在网格曲面上的神经网络结构,该工作发表在 CVPR 上,并被选为 oral presentation,视频回放地址:http://www.mooc.ai/open/course/510。
分享主题:网格曲面的卷积神经网络
分享提纲:
1. 几何曲面的离散表示
2. 一种图神经网络 (GNN) 的简要介绍
3. 离散微分几何中的 Laplace 与 Dirac 算符
4. 网格曲面的时域预测与生成型模型
5. 稳定性证明
分享内容:
三维数据的表示方法包括上图中的三类。左边的 Voxel(体素)的优点是结构化,看起来很规整(Minecraft 风),并且可以用传统的图像处理方法去处理。但是在同等的存储条件下,Voxel 的分辨率相对较低,也无法准确的刻画曲面表面的形状。右边的点云表示方法相较于 Mesh 来说存储的信息量少了很多。比如说有很多工作研究如何在点云上估计法向量,但网格数据则是自带了这些数据。所以网格数据是现在图形学中主要的研究内容之一。
我们用 M 来表示网格——V(点),E(边),F(三角面片)。在 Mesh 上处理数据时,我们可以很自然的联想到 graph,所以我们简单的回顾一下会用到的图神经网络结构。我们只简单介绍一层,这一层的输入是 graph,上面每个点都会规定一个信号。A,B 是两个可训练的单一参数(single parameters),通过 A,B 可以把 xin 这个信号映射到高维空间里。至此还未涉及邻居信息。
然后我们用 Laplacian 矩阵乘以信号的第一部分(xinA),这样就可以聚合邻居信息,最后再乘以ρ(激活层)。这个式子表示单个层,通过叠加多层神经网络,信号可以在更大的 Context 上传输来得到图的全局信息。
我们再来看一下 Laplacian 矩阵(边权重相同),用这种表示方法处理图没什么问题,但是对于网格曲面来说,这种方法存在问题。如上图所示(中左),兔子的耳朵产生形变时,曲面产生了变化,但 Laplacian 矩阵并没有变化。而将兔子离散化处理时(中下),曲面未变,但 Laplacian 矩阵却不再相同。所以我们首先需要将 Laplacian 矩阵替换成微分几何里可以包含几何信息的 Laplace 算符。
微分几何中的 Laplace 算符表示梯度的散度,将其推广至连续曲面上,就得到了 Laplace-Beltrami 算子,再将曲面离散化,使之变为三角网格,相当于给 Laplacian 矩阵里的每条边加上和边长有关的权重,这样我们就得到了第一个网格神经网络——Laplacian Surface Networks。但是我认为 Laplace 算符依旧是不完美的,因为它是一个内蕴几何量。举例说明,我们卷起一张纸,由于对应的 Laplacian 矩阵只刻画了度量,所以纸被卷后信息不变,而要处理这种情况,我们可以引入 Dirac 算符。
Dirac 算子引自量子力学,它在某种意义上相当于 Laplace 的平方根。通过 Laplace 算子的谱分解可以得到主曲率方向等外蕴几何量,而且由于我们将 Laplace 分为两步,也就具有更多的自由度。所以我们认为 Dirac 算子是 Laplace 神经网络的严格推广。而且它还能刻画外蕴几何量,所以它在某种情况下可以更好的表示信息。最后,Dirac 算符是在四元数空间里定义的,如上图第三个式子表示将点信号映射到面上,从而可以看出它不是方块矩阵而是长方形矩阵,同时它还有个自伴算子,可以将面上的信号再映射回点上。
我们用 Dirac 算子构造网络时需要分成两步,第一步是将点上的信号 x 变为面上的信号 y,再用自伴算子把面上的信号 y 变为点上信号,这样就算得到了一层点到点的信号变换,并且其中有四个可训练的矩阵,可以通过网络的反向传播去训练这些矩阵。而且我们要注意矩阵的维度只和 feature 的维度有关,与 Mesh 上有多少个点无关,所以我们可以将不同 Mesh 上的不同 Dirac 算符放到一起训练来得到 A、B、C、E。
由于我们只是在方法层面上提出了一种新架构,所以我们采用了一些比较简单的评估方法来保证公平评价。上图中的绿色方框(Lap/AvgPool)表示上文提到的式子所代表的那一层神经网络,下面的 Dirac 算符由于要在点信号和面信号间交替,所以结构更加复杂。我们使用了两种种评估方法来评估我们的架构,一个是在每个点上做 MLP,第二个是当做点云处理。
我们第一个评估实例是预测曲面运动。我们从 MPI-Faust 数据集的曲面上随机选一些点,再提取以这些点为中心的 15-ring 的 patches(一万个)。然后再用图形学中的 Deformation 方法将其模拟为橡皮材质并赋予重力。接着进行 50 次迭代(50 帧),再将前两帧作为神经网络的输入,让模型去预测接下来的 40 帧,最后用 smooth-L1 loss 来衡量最后的结果。
视频展示可以看出 Laplace 和 Dirac 比左边三种 baseline 方法要好,特别是 Dirac 在高曲率的地方(脚跟)处理效果很好。
通过放大最后一帧,我们可以明显看出 Dirac 在脚跟和脚趾两处处理效果很好,这也和我们的预期相符合。
通过量化比较,我们还能发现 Dirac 优于 Laplace。
第二个实例我想介绍一个 Mesh 的生成模型。这个任务的数据集相对简单,首先生成 2D 的网格(左下角),再从 MNIST 中选取一些数字,将数字的灰度当成高度,接着调整 Mesh 的 z 轴就可以得到一个数据集。其中的数据都是 Mesh,每个都代表一个数字。生成型模型的架构如上右图所示。
结果分布中的采样显示模型学习效果很好。而且对于不同的网格离散化结构,同样的隐向量也能还原相同的数字。
我们想将 Laplace 和 Dirac 算符的适应几何形状的特性,对微小形变和离散化的稳定性扩展到用它们所定义的神经网络上,所以我们证明了上图两个定理。
最后总结一下,如上图所示。
想知道深度学习更多内容?
欢迎点击“阅读原文”
或者移步 AI 研习社社区~