标题:Learning to Aggregate and Personalize 3D Face from In-the-Wild Photo Collection
链接:https://arxiv.org/pdf/2106.07852
这篇文章主要讲的是如何用无监督的方式从单张图片中恢复深度信息,且不借用3DMM这样的先验。作者采用了课程学习方法,即先学习简单的再学习难的。具体来说就是先学习身份一致性(同一个人在不同照片中的样貌是大致一样的,且非刚性形变有限),然后再通过网络进行场景优化。
文中的模型是基于Unsup3D的,即将输入的2D图片分解成标准深度图,标准原色图,光照方向和视角,然后再通过渲染器渲染出的结果来构建重构损失。这里作者也用到了对称损失,即通过翻转人脸来构建新的优化函数,并且通过预测一个confidence map来框选出适合翻转的部分(比如如果刘海向一边偏的话,刘海部分就不适合翻转)
如上图所示,模型分为两个部分:
身份一致性学习:
即一次性向模型中放入多张同一人的照片(一个共享的encoder),让模型学出一张符合这个人特征的albedo和depth map。方法如上所述(Unsup3D那部分)。另外,模型还学了个权重用于捕捉更最能体现个人特征的面部区域。
此外值得一提的是作者为了模型更容易训练,采用了课程学习(curriculum learning)的方法,一开始只给模型比较简单的样本,后面再给野外样本。简单的样本是由GAN生成的多视角图片,然后再用一个人脸识别器筛选掉和正脸看着非常不像的那些合成图片。
再然后,作者还通过语义分析器加了个attention map,用来避免嘴巴,眼镜这些地方给模型引入太大的随机性。
场景优化:
目标就是还原出目标场景中的真表情(因为前面那个模型学出来的结果相当于是个人的平均脸,没有任何表情和光照,非常不真实,因此需要这一步来增加细节)。使用编码器从目标图像中抽取真实的纹理和深度信息,然后融合进入“标准脸”提特征,作者学习了一个weight用来动态的决定融合哪些feature,不融合哪些feature。
值得一提的是在场景优化过程中使用的模型称之为Filtered connection module,如上图所示。最终的目的就是学习出中间蓝色的那个attention map。因为在场景优化的过程中并不是脸上的所有区域都需要大改的,比如额头,可能只需要按照光照微微调整颜色就行了,因此通过设定attention map可以让模型更好的保存不必要改变的特征。