论文 | CVPR2020《Neural Head Reenac

作者: 与阳光共进早餐 | 来源:发表于2020-06-22 15:55 被阅读0次

    一 写在前面

    未经允许,不得转载,谢谢~~~

    大概有几个月没有写论文解读类的blog了,有点手生,但还是想坚持更新吧,最近会陆续更一些关注的paper的解读笔记,欢迎交流。

    主要信息:

    二 主要内容

    2.1 任务介绍

    文章的主要任务是head reenactment, 具体内容结合下图进行介绍:

    task

    给定一个表示姿态的pose,和一个表示面貌的identity,其目标为让identity保持其面貌不变的情况下去做给定pose中所示的姿态。

    在这个例子中蒙娜丽莎就是我们的identity,上面一排呈现不同头部姿态的图我们称之为pose driver,第2排即蒙娜丽莎模仿第1排对应pose的结果。

    这里给的例子是image-level的,但其实文章工作是做到video-level的,结合这个例子就是可以让蒙娜丽莎跟着一段视频进行pose的变换。

    2.2 相关工作

    作者首先提出pose representation学习对于这个任务的性能表现好坏具有关键性的作用。

    大多数方法都是基于keypoints即头部关键点信息来对图片进行表征的,这种方法的好处是可以使用现有的一些检测器,比较方便鲁棒。

    但也有很多的不足:

    • 需要手工标注;
    • 会缺少比较多的细节,比如眼部的细节之类的;
    • 很多数据集的标注缺少结构基础,尤其是在有遮挡的情况下就会出现关键点不明确甚至出错的可能。
    • 关键点是person-specific的,这一点与head reenactment这个任务有出入。(这里我自己理解的是假设我们的目标是要学习某个固定的pose,但不同胖瘦或者不同脸型的人作为pose driver时即使pose一样,其对应的keypoints也是有差别的)

    当然文中也列了一些别的例如利用Action Unit(AU)的,或者是经典的3D morphable model(3DMM)方法,我自己对这个领域不是很熟悉,就不在这里介绍了。

    2.3 本文工作

    这篇工作的前驱工作是Few-shot adversarial learning of realistic neural talking head models(ICCV2019),这就是一篇利用keypoints信息进行pose特征学习的工作。

    前驱工作框架图

    文章在这个框架的基础上主要在2个方面做了修改提升:

    1. 使得模型拥有识别前景的能力;(增加了语义分割)
    2. 修改pose的表征从keypoints-based ---> latent pose vector; (最主要的一点)

    :)如果要详细学习这篇文章的处理细节,还是应该去翻出之前这篇文章的原文学习一下的,如果只是想了解这篇文章的idea或者说思路的话我觉得看这一篇也差不多够了。

    三 具体方法

    先看一下framework图:

    framework

    3.1 模型介绍

    每个视频取K+1帧, 前K帧(左上角)作为identity source输入,最后1帧(右下角)作为pose source输入;

    对于identity source(K帧),分别过一个网络参数比较多的identity encoder获取到对应的特征表示,然后取每帧的特征平均作为这个视频的identity embedding。

    对于pose souce(第K+1帧),首先经过一系列Augment增强操作(这个很重要,等会介绍),再过一个相对较小的pose encoder获取到特征表示pose embedding。

    此外,还会将第K+1帧输入到语义分割网络中,得到对应的mask(如图最右侧所示),以消除背景带来的影响。

    然后将identity embedding和pose embedding做一个concat之后,经过一系列MLP和Generator结构生成最终的结果(4x256x256大小的矩阵)。这个矩阵具体表现为一个3x256x256的RGB图 + 1x256x256的灰度图。其中,3x256x256RGB图就是我们预测到的同时保留identity source中的面貌和pose souce中的姿态,而1x256x256的灰度图表示预测到的前景分割的结果。

    这里之所以能实现从<identity embedding, pose embedding> 到目标图的生成,AdaIN(adaptive instance normalization)起到了很关键的作用。关于AdaIN具体的细节就不再介绍了,最先是在style transfer领域中被用的很多,这里也是受到这种思想的启发。可以将pose理解为style transfer中的“style”。

    然后就是针对{预测K+1帧图,原始K+1帧图}, {预测K+1帧的分割图,原始K+1帧的分割图}设计各种loss以优化网络参数。

    最后就是对第K+1帧进行Augment的理解。细心的话应该可以发现framework图中左下角的人样子和色调看起来都跟原来的不太一样,这里面的操作其实很简单,就是对原始的K+1帧图像进行一些拉伸,对比度修改等变化,来达到保留原始K+1帧图像pose但是修改其identity的效果。

    :)我个人觉得这里是这篇文章的灵魂,脱离了keypoints这样的信息,就需要找额外的方式来对pose进行表征。因此,设计这样一个可以利用原视频本身的信息进行模型训练的方法,解决数据GT的问题。

    3.2 其他细节

    1) finetuning

    对于新的identity,对网络identity encoder以及pose encoder之外的部分进行微调以获取更好的结果。

    2)disentanglement of pose and identity

    作者一开始认为真正实现pose和identity的分离可能需要借助对抗训练或者是clyle-consistency,但是后来发现以下的3点设计已经使得模型具备对两者进行分离的能力:

    • low enough capacity of the pose extractor network;
    • pose augmentations applied
    • background segmented out

    四 实验结果

    不管是对于主实验的分析还是各种abalation study做的都还是比较充分的,这里挑2个我觉得比较能说明问题的结果。

    4.1 定量结果

    评价指标:

    • identity error:表征脸部的相近程度,用ArcFace人脸检测模型检测到的特征表示之前的差距作为衡量指标。
    • pose reconstruction error:表征pose的相近程度,用脸部关键点作为衡量指标。
    • 越靠近左下角越好。

    实验结果概览:

    • ours超过绝大多数的模型(除了FASH+的identity error)
    • 关于+的标记:可以看成是固定pose representation部分,但是其他用本文的方法。(非严格解释)

    4.2 定性结果

    贴一个实验结果图, 整体效果还是挺好的。

    五 写在最后

    对这个方向不是很熟悉,应该是head reenactment方向接触到的第一篇paper,主要是觉得这篇工作解决问题的思路比较好,有可以学习借鉴的地方,但是对于文章的细节不是很有把握。

    如果blog中出现解读有偏差或者错误的地方还请大家帮忙指正,/感恩.jpg (・∀・*)♪゚

    相关文章

      网友评论

        本文标题:论文 | CVPR2020《Neural Head Reenac

        本文链接:https://www.haomeiwen.com/subject/ipssxktx.html