【笔记】《MeshCNN: A Network with an Edge》的思路

2020-07-29 16:37:17 浏览数 (1)

这几天又看了AMIR HERTZ和RANA HANOCKA的2019年的文章,关于如何在三维网格图形上应用卷积神经网络CNN。文章的特点就是能通过池化层下采样模型来提高语义分割的正确率,效果如下面的论文封面图,为了分辨出花瓶的颈或把手,模型被采样成了不同的样子

这篇文章对于数学的要求不会很高,我尽量总结成了这份笔记,里面也许还有很多理解不透彻或理解错误的地方,请谅解

PartA 总览

这篇文章的重点在于提供了一个在三维网格模型上应用卷积神经网络CNN的方法,并提出了能够自动简化网格模型以用于进行三维网格图形分类的神经网络MeshCNN。之前常见到的一些三维图形CNN是基于点云的,因为网格图形的生成要比点云更加复杂且使用也更复杂,但基于网格图形可以得到与结构相关更紧密,效果更好的网络

应用在二维图像上的CNN已经很成熟了,但应用在三维模型上的网络常常需要将模型进行二维投影或使用体素网格,甚至直接将CNN应用到拆散为二维的模型上(这是错误的),MeshCNN的特点就是设计了独特的网格池化操作,让网络在目标任务的指导下有意识地削减边的数量优化分类任务。MeshCNN无需了解输入网格的尺寸,三角情况等信息就可以正常运行

MeshCNN主要对CNN改进了卷积和池化部分,结构还是CNN的传统架构:输入-卷积-池化-[重复]-全连接输出

PartB 在网格图形上应用CNN

三维网格图形与传统CNN处理的二维图像很不相同,三维网格最大的问题在于其数据内在的不规律不统一性,需要对输入进行一些调整才能让应用卷积与池化。

给卷积提供不变性:

  1. 假设所有图形都是流形网格图形且可能有边界,所以每条边有一到两个三角形相连,因此每条边会有另外二到四条边相邻
  2. 如果让顶点以逆时针来排列的话,每条边带来的两个相邻三角形的四条边的排列顺序就有下图(a,b,c,d)和(c,d,a,b)两种,取决于哪一个面被定义为第一个相邻面
  3. 为了保证变换的不变性(旋转平移缩放),进行了两个额外操作:
    1. 设计边的描述符,让其仅包含与相似变换无关的特征
    2. 对两种排序使用对称性操作符如sum来使其顺序无关

输入特征:

每个输入的边的特征预提取为5个特征,其中后面两对特征需要排序使其有变换不变性:

  1. 两个相接三角形面间的夹角
  2. 两个三角形各自的顶角角度
  3. 边长与两个三角形各自的高所成的比例

全局排序:

全局排序操作是让那些特殊的形状部分才进入网络中,这个排序对卷积没有影响,因为卷积只与其局部邻居有关,而对于分类之类的与全局特征有关的任务,则类似PointNet那样在卷积层和全连接层之间使用了一个全局平均池化层,从而使得顺序变得无关紧要而保证了不变性

池化:

池化操作类似于下采样,而这里三维网格的池化操作是由边的折叠过程完成的。如下图的过程,边折叠过程让5条边变成两条,从而减少了网络特征的数量,也允许了网络主动选择需要被简化的部分,这是和PointNet不同的,任务相关的处理部分。这一步操作让网络到全连接层前的特征数量有了灵活性,且尽管对于表面细分不同的模型池化的简化过程也会不同,但是可以观察到其最终收敛的表现相似,表面增强了鲁棒性

PartC 网格卷积

一个网格图形是由一个二元组(V,F)定义的,V是三维顶点集合,F是三角形面定义了对应的顶点三元组,在这个组合下,图形的边集E也就定义出来了。V,F,E每种元素都可以关联多种特征例如法线,颜色之类,在这篇文章里让边集E关联了前面的5个特征,这为处理网格图形提供了更高的抽象,这就是前面说到的与变化无关的特殊描述符。要注意这篇文章中网格图形为网络提供了两个元素:用于卷积的边邻居连通性,边的预提取特征。网格顶点坐标本身对于网络并没有什么意义,后面会新计算出来的顶点坐标也仅仅是为了可视化而计算,对网络不会有影响

二维上的卷积操作是让卷积核中的每个元素与当前扫描到的部分进行逐项相乘并求和,因此这部分操作在三维网格卷积中被改造成了下面的式子:

其中e和k0是为中心边设计的,ej和kj是前面说到的四条相邻的边。为了给这部分计算提供卷积不变性,前面说到的对称性操作在这里使用了下面的式子来安排,由于前面的图中我们可以看到a和c,b和d是对称的,通过将他们进一步加减使得我们调换ac或bd的顺序都不会对这个四元组产生影响,从而实现卷积的不变性。经过这些处理后将边进行重排得到一个nc*ne*5的张量tensor,其中nc是边的数量,5是上面式子中的5条边的处理后排列,然后每条边都对应ne个特征的数量例如前面提取的5个特征,然后就可以对这个矩阵进行卷积了。卷积的时候要记得是针对每个5边组进行处理的

PartD 网格池化

池化有下面的三个核心步骤:

  1. 定义好池化区域得到对应的邻接边
  2. 合并各个区域池化后的特征
  3. 重新定义池化后区域的邻接边

尽管在二维图像中池化区域的邻近区域都由于矩阵形式而隐含决定好了且池化后也能自然形成新的邻接域,但是三维中并不如此,在这篇文章中将池化定义为折叠一系列边的过程,每一组池化将五条相关边折叠成两条,对于如何动态处理折叠后产生的新的相邻关系,Berg等人在08年的论文中详细阐述了这种情况的解决方法。

在池化的时候,由于折叠两个三角形会使得三条边的删除,这篇文章使用了优先队列来选择折叠顺序并让网络的处理更有目的性。文章将上面提到的网格结构按照特征的L2范数由大到小排序,因为前面我们可以看出提取的5个特征越小,则这两个三角形越接近于平行的一条线,排序后可以优先处理那些对形状改变影响最大的部分。对一条边进行折叠后,所产生新边的方法与PartB的介绍是相同的,按照下面的求平均式子把五条边的特征变为了两条边的特征

每次折叠一条边,便需要对网格结构进行一次更新以备接下来的折叠。折叠还要注意并不是所有的边都可以进行折叠,折叠必须满足前面所说一条边有四个邻边的假设,不满足假设的边不能折叠

PartE 网格上池化

上池化操作接近于池化操作的逆运算,它是一种上采样,会提升网格被降低的分辨率。上池化的意义主要是重新得到分辨率较高的区域来检测那些区域的细小信息。前面池化操作的时候,池化操作将数据中的有效信息进行了合并用于学习,低频信息是无法回到高频信息的,因此上池化并不能得到可学习的参数,通常需要将上池化和卷积层一起使用来恢复池化中失去的信息。

这里让每个上池化层都和一个池化层配对,然后为了恢复池化前的拓扑信息(边与边的连接关系),文章维护了一个保留了原始邻接关系的图,然后对这些恢复过来的图填充下面这张前面出现了的图的右边上池化部分的特征

PartF 实验与总结

这篇文章的MeshCNN的最大特点就是把CNN应用到三维网格图形上了,从而我们可以利用这个网络完成各种各样的任务。

MeshCNN的优点有:

  1. 不需要所有样本的边数都相同
  2. 方便增加新样本
    1. 可以通过对x,y和z的顶点位置应用各向异性缩放来生成新样本
    2. 可以通过将顶点移动到别的地方(改变边的邻接)来生成新样本
    3. 可以通过改变图形的三角面切分方法来生成新样本
  3. 模型的顶点位置与网络无关,因此有较好的稳定性
  4. 可以通过设置特征来进行有目的性的池化
  5. 网络可以在GPU上并行计算,每个邻居计算都是独立的

MeshCNN的缺点有:

  1. 容易受到对抗图形的攻击
  2. 未来可以加上注意力机制优化判断

MeshCNN的几个实例:

  1. 分类效果很好
  1. 分类嵌入立方体的图标性能很好
  1. 原因是对立方体进行的池化优化了分类判断
  1. 模型切分效果很好
  1. 泛化能力也很强

PartG 相关文献

这篇文章介绍了很多对模型应用CNN的不同方向的方法,我这里着重记录了最常用的图方法,而且还介绍了10和11两篇综述可能很有用

  1. 横跨了二维投影法和体素法的一篇 Charles R. Qi, Hao Su, Matthias Niessner, Angela Dai, Mengyuan Yan, and Leonidas J. Guibas. 2016. Volumetric and multi-view CNNs for object classification on 3d data. In Computer Vision and Pattern Recognition (CVPR). 5648âĂŞ5656.
  2. 基于体素的变分自动编码器来解决形状重构 Andrew Brock, Theodore Lim, J.M. Ritchie, and Nick Weston. 2016. Generative and Discriminative Voxel Modeling with Convolutional Neural Networks. In NIPS 3D Deep LearningWorkshop.
  3. 同作者的基于体素法的形状配准 Rana Hanocka, Noa Fish, Zhenhua Wang, Raja Giryes, Shachar Fleishman, and Daniel Cohen-Or. 2018. ALIGNet: Partial-Shape Agnostic Alignment via Unsupervised Learning. ACMTrans. Graph. 38, 1, Article 1 (Dec. 2018), 14 pages. https://doi.org/ 10.1145/3267347
  4. 用神经网络对局部连接区域进行处理 Mathias Niepert, Mohamed Ahmed, and Konstantin Kutzkov. 2016. Learning Convolutional Neural Networks for Graphs. In International Conference on Machine Learning (ICML).
  5. 提出了基于扩散的卷积法 James Atwood and Don Towsley. 2016. Diffusion-convolutional Neural Networks. In Proceedings ofthe 30th International Conference on Neural Information Processing Systems (NIPS’16). Curran Associates Inc., USA, 2001–2009. http://dl.acm.org/ citation.cfm?id=3157096.3157320
  6. 将表面参数化为局部小批块 Federico Monti, Davide Boscaini, Jonathan Masci, Emanuele Rodola, Jan Svoboda, and Michael M Bronstein. 2017. Geometric deep learning on graphs and manifolds using mixture model CNNs. In Proc. CVPR, Vol. 1. 3.
  7. 在语义分割问题上使用了有向卷积 Haotian Xu, Ming Dong, and Zichun Zhong. 2017. Directionally Convolutional Networks for 3D Shape Segmentation. In Proceedings ofthe IEEE International Conference on Computer Vision. 2698–2707.
  8. 使用拉普拉斯图表示法来生成三维形状 Ilya Kostrikov, Zhongshi Jiang, Daniele Panozzo, Denis Zorin, and Burna Joan. 2018. Surface Networks. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR).
  9. 提出了图的顶点滤波法但没有结合池化操作 F. P. Such, S. Sah, M. A. Dominguez, S. Pillai, C. Zhang, A. Michael, N. D. Cahill, and R. Ptucha. 2017. Robust Spatial Filtering With Graph Convolutional Neural Networks. IEEE Journal ofSelected Topics in Signal Processing 11, 6 (Sept 2017), 884–896.
  10. 介绍如何对局部特征进行深度学习的先驱 Jonathan Masci, Davide Boscaini, Michael Bronstein, and Pierre Vandergheynst. 2015. Geodesic convolutional neural networks on riemannian manifolds. In Proceedings ofthe IEEE international conference on computer vision workshops. 37–45.
  11. 一篇关于对几何进行深度学习的全面的综述 Michael M. Bronstein, Joan Bruna, Yann LeCun, Arthur Szlam, and Pierre Vandergheynst. 2017. Geometric Deep Learning: Going beyond Euclidean data. IEEE Signal Process. Mag. 34, 4 (2017), 18–42. https://doi.org/10.1109/MSP.2017.2693418
  12. 将点云的点邻近信息利用起来并通过他们在特征空间中的相似性动态计算更新 Yue Wang, Yongbin Sun, Ziwei Liu, Sanjay E Sarma, Michael M Bronstein, and Justin M Solomon. 2018a. Dynamic graph CNN for learning on point clouds. arXiv preprint arXiv:1801.07829 (2018).
  13. 定义了一种有效的利用点云体素化来对点云进行卷积的方法 Matan Atzmon, Haggai Maron, and Yaron Lipman. 2018. Point Convolutional Neural Networks by Extension Operators. ACMTrans. Graph. 37, 4 (July 2018), 71:1–71:12.
  14. 提出了PointCNN扩张了局部点云卷积的概念 Yangyan Li, Rui Bu, Mingchao Sun, and Baoquan Chen. 2018. PointCNN. CoRR abs/1801.07791 (2018).

0 人点赞