微软三维人脸重建论文前期知识铺垫——《Accurate 3D Face Reconstruction with Weakly-Supervised Learning》

一个3D模型的数据结构是怎么样的?

首先是一个points_shape,这个shape的形状是shape=(35709,3)。其中35709代表这个模型包括35709个点,3代表的是这些点的三维座标。有了这个矩阵,我们能够在脑海里想象在空间中有一个密密麻麻的点云,看上去像个人脸,可是这些点都是离散的。

接着就是traingle矩阵,这个矩阵的形状shape=(70789,3)。70789表示这个模型包括70789个三角形面。每个面都由三个顶点组成,后面的3就表示这三个顶点的序号(在points_shape中的序号)。有了这个变量,人脸就不再是离散的点云了,而是有拓扑结构的一个人脸模型了。

最后是颜色,texture,shape=(35709,3),35709肯定代表的是点,3代表的RGB三通道。

到此,一个三维模型应该就表示清楚了。

什么是3DMM

实际上,大多数三维人脸重建都是基于一项叫做3D Morphable Model的技术实现的。按照字面意思理解,3DMM就是一个允许形变的三维模型。是的,我们可以理解成这是一个标准的人脸模型,这个世界上的所有人脸都可以由这张标准量经过一些变形而生成!(当然,实际上是不可能的,这么说只是为了不让大家感觉作者有什么外貌歧视)实际上,上面的话听起来像是废话,如果大家有玩过有“捏脸”功能的游戏的话,应该会比较有感触,有一些颇具艺术细胞的玩家能够捏出很棒的人脸模型,甚至是捏出他们的男神、女神。3DMM就有点这个意思,不过它牛的地方不是依靠人工捏脸,而是它给定了两组系数,分别是:形状系数,颜色系数。是的,有了形状和颜色,一个三维人脸也就生成了。这些系数有多少个呢?不同的3DMM模型定义的系数是有些许差别的,实际上,后面还延伸出一种表情系数。我们简单对这三组系数做一下说明:​​​​​​​

  1. 形状系数:指定人脸的三维形状,有了这组系数,我们就可以生成一个面无表情的,光秃秃(没色彩)的三维模型。或者叫它原型比较合适。
  2. 颜色系数:指定颜色。有了这组系数,就可以对模型进行上色了,这时会得到一个逼真的有色彩的可是面无表情的三维模型。
  3. 表情系数:指定表情。有了这组系数,我们的模型可以微笑、难过、大笑、甚至噘嘴、眨眼。是的,模型活了。

如果非要给3DMM下个定义的话,我会这么讲:3DMM是一个静态的包含了指定的生成规则的用于生成三维人脸模型的模板

回到这篇牛皮的论文了,论文中选用BFM2009(3DMM大家庭中的一个版本,由Basel大学制作并公开,传送门)作为模板,用于生成三维人脸。

那么在BFM2009中,形状系数是一个长度为199的向量,你也可以理解成数组,总之就是199个数。然后!原谅我理解不够深,实际上可以用少于199个数,比如论文中只用了80个数。当然我的理解是,数越少,损失的信息也会越多。不过,它是有进行重要性排序的,也就是这80个数是这199个系数中最重要的数。可能会丢失一些沟壑、边边角角的信息,但是整体的轮廓仍然是准确的。颜色系数同理。(实际上,如果需要完全理解其中奥秘,需要完全理解3DMM的生成原理,可以参照文献)

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章