本文主要讲的是如何从视频序列中重建3D人脸。
现如今的模型大都套用同一套模板来拟合人脸,但问题在于每个人脸的动态细节都是不同的。即,不同的人微笑脸上的皱纹,嘴巴张开的幅度,相应的面部反射都是不同的,而原本的3DMM中是假设表情是独立于面部形状的。而且即使是同一个人,在有动作和没动作的时候由于皮肤的拉伸也会导致细节不同。因此作者就考虑在拟合原始模板的情况下,进一步优化面部的动态细节,从而为每个人都制定一套独特的模板,从而更精细的拟合人脸。具体的来说就是学习在不同表情下的动态形状特征和纹理特征。
网络结构如图所示,分为两个部分:
一个部分是TrackNet,负责预测所有与身份无关的信息,需要根据每一帧学习不同的人脸的姿态,光照情况和表情参数。
另一个部分是就是ModelNet,负责预测所有与身份有关的信息,需要使用当前视频中所有帧来学习一个统一的人脸的形状,表情的blendshape(可以理解为动态模板)和动态纹理。
最后再将两个模型得到的参数结合在一起来生成最终的人脸3D模型。
损失由以下几部分组成:
1.像素和特征点损失,就是计算渲染后的2D图像和ground truth的l2损失
2.Face parsing loss:这个是参考别人论文的一个loss,说是可以帮助形状和反射率解耦(例如面部的阴影部分有时候可能比较难以区分到底是阴影还是本身就黑)
3.形状平滑损失
4.blendshape 梯度损失:主要是为了保证学习出的blendshape不要和模板相差太远
5.追踪参数损失:是为了将反射率和光照解耦,防止这俩耦合导致模型纹理错误
最后,作者还提到,如果在modelnet中输入A的视频,tracknet中输入B的视频,就可以将B的动作套到A的身上了,这就是文中提到的retarget