前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【笔记】《Deep Geometric Texture Synthesis》的思路

【笔记】《Deep Geometric Texture Synthesis》的思路

作者头像
ZifengHuang
发布2020-07-29 16:36:09
1.4K0
发布2020-07-29 16:36:09
举报
文章被收录于专栏:未竟东方白未竟东方白

忙完了毕业的事情,生活又回到了正轨

由于研究的需要这几天看了AMIR HERTZ和RANA HANOCKA新鲜出炉的文章,关于如何利用生成对抗网络从一个三维模型上将它的纹理迁移到另一个三维模型上。效果如下面的论文封面图,长颈鹿从黄色的针刺球上学习到了纹理并将针刺生成到了自己身上,效果还是很不错的

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

PartA 方法总览

这篇文章提出了一个框架方法来从单个网格图形中学习局部的纹理特征,核心就是学习reference参考模型上的纹理,然后利用这个知识在target目标模型上生成纹理

主流程如下:

  1. 给出参考网格图形,然后下采样创建出一系列分辨率不同的网格作为分层次训练的材料,下采样时需要考虑顶点差距生成最合适的下采样,然后抛弃参考网格
  2. 生成的多级别的采样网格图形成为GAN的训练材料
  3. 从最粗糙低级的训练材料开始,经历下面步骤:
    1. 进行网格细分和尺度缩放匹配同精度的模型
    2. 随机生成用于让三角面顶点偏移的噪声向量
    3. 将噪声和网格输入GAN的生成器,网格的顶点利用噪声偏移
    4. 从中提取三角面的隐含几何特征进行卷积,生成对应面的顶点所需的替换向量
    5. 用求平均解决顶点偏移重叠问题,然后替换顶点得到生成的网格
    6. 将生成的网格和对应的参考采样网格输入GAN的判别器
    7. 判别器以patch为单位判断生成的面块是否为真,加权损失后得到生成器所需的梯度
    8. 反复训练直到这个尺度级别的GAN收敛
    9. 用最后生成的模型作为下个级别的目标模型,重复以上过程训练下一个尺度直到完成所有级别的GAN
  4. 训练完成后,抛弃判别器,用这几个不同尺度的生成器来对任意新的目标网格图形进行处理,新的网格模型与原先参考的模型可以完全不同。合成出来的纹理的精度尺度依赖于所使用的生成器的尺度,下图对同一个目标模型应用了不同尺度的生成器,这个生成器是按照不同尺度的参考模型训练出来的,从左往右生成器的精度逐渐加强

PartB 三维网格图形的表示

首先需要处理的就是三角网格的表示方法,这决定了如何优化神经网络的学习。三角网格图形是一种特殊的图,可以用一个顶点和三角形集合(V,F)来表示,其中V是无序的三维顶点集,F是面集,每个面是由一个点的三元组组成的,这个面集隐含地描述了三角形的边

然后为了描述各个面与邻域面的关系,这里提取了三角形边的四个特征,首先这里为各个面的各个边定义了一个本地坐标系,这个坐标系的原点是边的中点,面的法线方向是z轴,边本身的方向是x轴,y轴由x-z叉乘得到。因此这里就将每个边转写为了四个特征:边的长度和其所对的三角形顶点在这个本地坐标系中的坐标表示。如下图每个三角形实际上是储存了三个顶点对应的四元组信息

然后将三角形的三条边都用上述的特征来描述,也就是存为一个3*4的矩阵,在这种描述中三角形的三条边由于是描述了边与边的关系,所以可以保持旋转和移动的不变性而且可以在任意的全局位置和方向中恢复出来

PartC 对称的面卷积

面的卷积是为了得到隐含的特征来指导GAN的应用。对称面的卷积需要两部分卷积合作完成:

  1. 1*1的卷积来实现有顺序不变性特性的面特征嵌入
  2. 考虑了对应三角形面的单环领域信息的对称面卷积

面特征嵌入卷积是为了将各个面的特征转换为输入特征并学习,这里使用式子 ˆS = g(S|W,b) = SW+b 来处理面的特征,S是面的原始3*4特征矩阵,W是卷积权重4*d,b是需要学习的偏移权重。这一部分的卷积将原始的矩阵转为了3*d的结果值,其中d是我们想要从中提取的隐特征维数,3是顶点的数量。显然这里的学习结果将会与顶点顺序相关,为了保证前面说到的顺序不变性,这里再对三个顶点的特征向量取一个max剩下舍弃以保证顺序稳定。经过这块就得到了一个三角形面片的特征向量

对称面卷积部分则要在上一部分作用到当前三角面片和邻域三个三角面片得到四个特征向量后,使用式子g(S, ^f|Ws,Wf,b) = S*Ws + ˆf*Wf + b 来处理这些特征,在这里S是3*d的三个邻域面片的特征向量矩阵,^f是中心面片的1*d的特征向量,Ws是d*(d+1)的权重,Wf是d*(d+1)的权重,b自然是偏移权重,可以看到处理后的新特征向量为3*(d+1)+(d+1)+(d+1)的,这里前面尺寸不匹配,可以想到和上一部分一样存在顺序不变性问题,对3*(d+1)部分的权重取max来保证稳定性并得到(d+1)的特征向量

经过卷积后最终得到(d+1)的特征向量,这部分就完成了面的特征提取过程,这部分被提取出来的潜在特征被嵌入到GAN的生成器和判别器之中,判别器利用这些特征辅助判断三角面的真假,生成器用这些特征辅助生成各个面的顶点偏移向量,这些顶点偏移向量会被应用到面的本地坐标系中从而生成新的面,由于每个顶点都会得到复数个偏移向量,所以在利用前需要先将所有偏移求平均。具体GAN的运用方法在后面说到

PartD 细分和多尺度网格图形

由于这篇文章的目标是在目标物体上进行几何纹理的生成,所以自然需要定义一个上采样操作或层级处理操作,因为生成器就是作用在当前表面中来改变表面顶点让纹理得到迁移,为了训练一般对一个高精度的模型进行分级下采样然后当作素材来训练网络

下采样操作并不困难,有很多现成的算法可以很好地保留大体结构而减少细节面数,然后为了进行上采样操作,首先这里需要对低精细度的模型进行细分。这篇文章采用了很简单的中点细分法,在每个三角形面的三条边的中点都增加一个新的顶点,然后将这三个新的顶点连起来从而将一个三角形转为了四个三角形,增加了模型的面数和顶点数。这个操作的优点在于执行简单且稳定保证每次处理结果都一致

扩充面数之后需要的就是组织好多个尺度下训练素材然后进行训练,一般来说训练的时候是选择大体是目标纹理的简单模型(例如球,环之类),然后进行多尺度的下采样然后作为参考模型进行训练。要注意这篇文章追求的是生成纹理而不是还原纹理,我们只能希望生成出来的结果与参考模型相近而不可能相同,因此除了最初的目标模型是最低精细度的下采样模型外,之后的目标模型都是系统新生成的模型,这样才能最大限度地模拟实际的生成效果,因为我们不可能生成出原先一样模型。不用担心模型变得奇怪,随着尺度变得精细,下面的优化让生成的结果越来越接近参考模型的,如下图就是逐步提高目标模型分辨率后得到的不同结果

为了提高训练的效果,下采样的需要有一个统一的优化目标来保证整体模型形状的一致,这里优化方法就是下采样后要最小化当前顶点与参考顶点的双向倒角距离来选择结果。所谓双向倒角距离就是同时最小化两个顶点间的欧几里得距离和点所形成的平面间的法线cos值,通过这个生成出来的模型会与真实模型更加相似。为了让这里生成的局部纹理更均匀和平滑,这篇文章还加入了两个正则化项优化,均匀化项最小化边与参考边的长度差,平滑项减少顶点与其单环邻域顶点的平均坐标的距离。如下式,此处di是顶点间的角度

PartE 从单个网格图形进行学习

前面介绍了如何组织各种特征和优化,而具体GAN对这个问题进行分层学习方法如下。在输入GAN生成器前,先调整上一步中得到的目标网格图形与参考模型的尺度,缩放尽量使得其平均边长与参考模型相匹配。然后GAN的生成器接受这个网格图形和一个噪声向量,这里噪声相当于产生传统GAN中的噪声图但又提供了一定的约束,加入噪声扰动让顶点的位置发生变化,由此生成器输出加了噪声前的模型各个面所需的偏移向量。应用偏移到目标模型中后,GAN的判别器接受生成的网格图形和对应的参考图形,基于patch处理地判别生成的patch是否接近真实,为生成器的训练提供梯度。本文中使用了2017年的WGAN-GP来应用,对于这个训练的损失这里还用生成网格与参考网格的顶点间的MSE距离加权后与GAN本身输出的损失值一起综合起来作为重建的损失

GAN的具体训练从最粗糙的一级开始,训练更精细等级时,之前的训练部分会保持不变,不断训练直到生成器和判别器都收敛。在每次进入下一级训练时,刚才的预处理过程都需要进行一次,按照这样最后就能完成三维纹理的迁移了

PartF 实验效果

上图是学习金色的参考模型得到的纹理应用在右边灰色的目标模型上的效果,可以看到纹理被较好地应用到新模型上了

而且这个方法的好处在于生成的效果更加自然,更加符合原纹理的隐含逻辑,对比下图左边2018年Li等人使用二维纹理图进行的纹理映射,可以看到这篇文章的生成不再拘泥于法线方向的生成,而是自由生成不同方向的纹理,还不需要提前对模型进行参数化,可以自动化处理生成

但是这个方法也有仍未解决的缺点,最显然的就是它还无法学习纹理中的水平特性垂直特性等特征,只能简单地依据一个面来进行学习和映射;而且这个方法只能学习那些特征在大致上都是统一的纹理且经过采样仍能保留一定特征的纹理,对于大幅的图案无能为力;还有就是尽管前面一笔带过了但是下采样的过程常常会因为模型形状的复杂而失败,需要进一步优化。下图就是无法学习到纹理本身潜在的方向特征的样例

PartG 相关文献

这篇文章提到了很多有用的关于三维模型生成和纹理迁移的文献,在这里整理一下,接下来可以阅读一下扩展视野:

  1. 使用单幅图像来训练GAN,给了这篇文章从单个网格学习的灵感 Yu Sun, Xiaolong Wang, Zhuang Liu, John Miller, Alexei A Efros, and Moritz Hardt. 2019. Test-Time Training for Out-of-Distribution Generalization. arXiv preprint arXiv:1909.13231 (2019).
  2. 从点云进行三维模型的生成 Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, and Leonidas Guibas. 2018. Learning Representations and Generative Models for 3D Point Clouds. In International Conference on Machine Learning. 40–49.
  3. 点网络的概念 Charles R Qi, Hao Su, Kaichun Mo, and Leonidas J Guibas. 2017a. Pointnet: Deep learning on point sets for 3d classification and segmentation. In Proceedings ofthe IEEE Conference on Computer Vision and Pattern Recognition. 652–660.
  4. 生成三维点云的概率框架 Yang Zhou, Zhen Zhu, Xiang Bai, Dani Lischinski, Daniel Cohen-Or, and Hui Huang. 2018. Non-stationary Texture Synthesis by Adversarial Expansion. ACM Trans. Graph. 37, 4, Article 49 (July 2018), 13 pages. https://doi.org/10.1145/3197517. 3201285
  5. 一个表达表面的本地表 Thibault Groueix, Matthew Fisher, Vladimir Kim, Bryan Russell, and Mathieu Aubry. 2018. AtlasNet: A Papier-Mâché Approach to Learning 3D Surface Generation. In CVPR 2018.
  6. 用隐式表示三维面替代显式表达 Zhiqin Chen, Andrea Tagliasacchi, and Hao Zhang. 2019b. BSP-Net: Generating Compact Meshes via Binary Space Partitioning. arXiv:cs.CV/1911.06971
  7. 从二维的RGB图生成三维模型 NanyangWang, Yinda Zhang, Zhuwen Li, Yanwei Fu, Wei Liu, and Yu-Gang Jiang. 2018. Pixel2mesh: Generating 3d mesh models from single rgb images. In Proceedings of the European Conference on Computer Vision (ECCV). 52–67.
  8. 一个从图像重建三维物体的网络DIB-R Wenzheng Chen, Huan Ling, Jun Gao, Edward Smith, Jaakko Lehtinen, Alec Jacobson, and Sanja Fidler. 2019a. Learning to predict 3d objects with an interpolation-based differentiable renderer. In Advances in Neural Information Processing Systems. 9605– 9616.
  9. 同作者的MeshCNN,从模型中拆解提取要所需的部分 Rana Hanocka, Amir Hertz, Noa Fish, Raja Giryes, Shachar Fleishman, and Daniel Cohen-Or. 2019. MeshCNN: A Network with an Edge. ACMTrans. Graph. 38, 4, Article 90 (July 2019), 12 pages. https://doi.org/10.1145/3306346.3322959
  10. 需要预参数化的纹理迁移 Alla Sheffer, Emil Praun, Kenneth Rose, et al. 2007. Mesh parameterization methods and their applications. Foundations and Trends® in Computer Graphics and Vision 2, 2 (2007), 105–171.
  11. 在接近的表面上对特殊纹理的无缝映射 Marcel Campen, Hanxiao Shen, Jiaran Zhou, and Denis Zorin. 2018. Seamless Parametrization with Arbitrarily Prescribed Cones. arXiv preprint arXiv:1810.02460 (2018).
  12. 从二维样例进行纹理迁移 Kai Xu, Daniel Cohen-Or, Tao Ju, Ligang Liu, Hao Zhang, Shizhe Zhou, and Yueshan Xiong. 2009. Feature-aligned shape texturing. ACMTransactions on Graphics (TOG) 28, 5 (2009), 108.
  13. 无需参数化的直接体素风格迁移三维模型 Hsueh-Ti Derek Liu and Alec Jacobson. 2019. Cubic stylization. ACMTransactions on Graphics (TOG) 38, 6 (Nov 2019), 1âĂŞ10. https://doi.org/10.1145/3355089.3356495
  14. OptCuts二维到三维的纹理迁移 Minchen Li, Danny M. Kaufman, Vladimir G. Kim, Justin Solomon, and Alla Sheffer. 2018c. OptCuts: Joint Optimization of Surface Cuts and Parameterization. ACM Transactions on Graphics 37, 6 (2018). https://doi.org/10.1145/3272127.3275042
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未竟东方白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档