论文笔记:GANimation: Anatomically-aware Facial Animation from a Single Image

摘要

在Star GAN的基础上,GANimation又增加了注意力机制,使用了人脸的AU标签代替离散的情感标签,提高了模型对面部的生成效果,使得它在人脸面部情感转换功能有显著的优势。

对于任意情感,GANimation模型将输入的RGB图像定义为 I y r ∈ R H ∗ W ∗ 3 I_{yr}∈R^{H*W*3} IyrRHW3
把复杂情感分解成一个个AU,本文用一组AU激活值 y r = ( y 1 , … , y N ) y_r=(y_1,…,y_N) yr=(y1,,yN)对每个情感进行编码,其中每个 y i y_i yi已经经过归一化处理,取值介于0到1之间来模拟第i个AU单元的值。有了这种连续表征,本文就可以在不同的情感表征之间进行自然插值,从而渲染各种逼真、平滑的面部情感。
Generator的目标是学习一个映射M,它能把输入图像 I y r I_{yr} Iyr转换成基于目标AU序列的标签 y g y_g yg 为条件的输出图像 I y g I_{yg} Iyg。GANimation的结构模型如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05oijqYE-1601129849824)(:/d55a3851dc3b475d827af9d3f7d18914)]

GANimation模型结构图

GANimation的体系结构由两个主要模块组成:

一个是用于使注意力机制和颜色掩膜回归的Generator;
另一个是Discriminator以其真实感 D I D_I DI和AU序列的标签 y g y_g yg评估生成的图像。

整个模型是无监督训练的,因为既不知道同一人的不同情感的图像对,也不假设目标图像 I Y g I_{Yg} IYg是已知的。根据GANimation模型结构图可知,Generator( I y r I_{yr} Iyr, y g y_g yg)经过训练将图像 I y r I_{yr} Iyr中的面部情感转化为基于目标AU序列的标签 y g y_{g} yg。同时Generator在整个网络模型中运用了两次,首先将输入图像 I y r I_{yr} Iyr映射为 I y g I_{yg} Iyg,然后再渲染回 I Y r I_{Yr} IYr。同时GANimation使用了基于Wasserstein GAN的Wasserstein距离的Discriminator来判别生成图像的质量及其损失函数的表示方式。

Generator不仅可以将输入图像映射为情感标签的AU序列,还能将输出图像映射为原始AU序列,本文使用下标o来代表原点,下标f来代表终点。给定的RGB图像定义为 I y r ∈ R H ∗ W ∗ 3 I_{yr}∈R^{H*W*3} IyrRHW3和其生成图像所需的N维AU序列激活向量 y f y_f yf,则Generator的输入为 I y r ∈ R H ∗ W ∗ ( N + 3 ) I_{yr}∈R^{H*W*(N+3)} IyrRHW(N+3), 这里激活向量 y f y_f yf为N个H*W的矩阵。
在之前的StarGAN中,本文对每张图片只给了一个目标域的离散标签,而不是一个连续面部动作AU序列标签。而在GANimation模型中,想要改变人脸的情感时,不需要改变整个图像,则只需要改变图像中与情感相关的部分。例如,想实现让一个人由开心的情感转换为惊讶的情感,则只需要改变这个人五官和一些相关的面部肌肉,而不需要改变整个人脸,这样会更好的保留原图像的身份信息,使得整个网络不仅生成了目标面部情感,还能使输出的人脸还是输入的人的人脸。这也是GANimation模型在Generator上加入的注意力机制,如图所示。

在这里插入图片描述

GANimation的注意力机制结构

在GANimation模型中,Generator输出两个掩码,一个是RGB颜色掩码C,另一个是注意力掩码A,这里与Star GAN不同,GANimation的Generator没有直接返回一张图像,而是通过两个掩码融合获得最终的图像,如式所示。
在这里插入图片描述

这里 I y o I_{yo} Iyo是原始图像, I y f I_{yf} Iyf为生成图像,

A为Generator输出的一张单通道的注意力掩码,这个注意力掩码的作用是关注人脸,忽略背景,防止复杂的背景和光照变化产生的影响,代表图像中需要更改的面部部位,A是一个介于0和1之间的浮点数组成的一个矩阵,矩阵大小和输入的图像的大小一样,该值越接近1,越代表输入图像的像素不需要改变
,反之A的值越接近0,则输入图像的像素越需要改变,

在这里插入图片描述

C是Generator输出的一张RGB颜色掩码,代表的是变化后的人脸的颜色信息,
当A的值接近1时,输出的图像更接近原图,当A的值接近0时,输出的图像更接近于C。

因此得到的 I y f I_{yf} Iyf是通过把这两个输出的掩码和输入的图像结合起来,就可以得到变化后的情感图像。同时,GANimation的Discriminator也有两个功能,一个功能用于判断生成图像的真假,另一个功能用于将图像中的AU激活值进行解码。

GANimation的损失函数

GANimation的损失函数分为四个部分:

1.第一项是生成图像对抗损失,它的作用是使生成图像的分布趋向于训练图像的分布,就是让生成的图像看起来更真实。这个损失是应用了Wasserstein GAN的Wasserstein距离,因为原始的GAN很难训练,很容易梯度消失或梯度爆炸。这个损失函数的意义就是使生成图像通过Discriminator得到的结果最大化,使原始图像通过Discriminator得到的结果最小化,另外再加入一个梯度惩罚项,让梯度控制在一定范围里。

I y o I_{yo} Iyo是输入图像,对应原始AU序列的激活值 y o y_o yo I y f I_{yf} Iyf为Generator生成的两个掩码进行融合的图像,对应目标AU序列的激活值 y f y_f yf P o P_o Po是输入的图像的数据分布,P_I是图像随机插值分布,D_I是Discriminator用来判别图像真假。所以生成图像对抗损失在这里插入图片描述
如式所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZMnVeauZ-1601129849853)(:/efd86c8521364ae0b3719cebe69ecd9a)]

其中 λ g p λ_{gp} λgp是梯度惩罚项。

2.第二项损失是注意力机制的损失,因为数据集没有注意力掩码A和RGB颜色掩码C的真实标签,注意力掩码就很容易过饱和,就是A的值趋向于1,导致输出的图片和原始图片差别很小使得C的结果没有作用。所以注意力机制的损失在这里插入图片描述

如式所示。

在这里插入图片描述

注意力机制的损失函数的第一项是全差分损失,全差分损失是用于图像的平滑,第二项是一个L2的惩罚项。其中H,W代表图像的长和宽, A i , j A_{i,j} Ai,j为矩阵A中第(i , j)的值。

3.第三项是情感判别的损失,分别把原始图像和生成图像输入Discriminator,在减少图像的对抗损失时,Generator还必须减少Discriminator的AU序列激活值解码的回归误差。这样Generator不仅能学到真实的输入图像,还能学习到满足AU序列激活值 y f y_f yf的面部情感。情感判别的损失由两个部分组成:一个是 AU 激活向量的回归损失,用于优化Generator生成的图像,另一个是用于学习 Discriminator上分别得到的情感面孔和情感向量AU序列标签的损失,该损失在这里插入图片描述

如式所示。

在这里插入图片描述

4.第四项是人脸的循环一致性损失,也就是身份损失,使得Generator输出和原始图像更接近。保证生成的人脸和原始图像是同一个人,本文使用循环一致性损失计算原始图像I_yo和其重构图像之间的差异,使得Generator保持个人的身份信息,所以循环一致性损失函数如式所示。

在这里插入图片描述

最后为了生成图像 I y f I_{yf} Iyf,本文线性组合前面的四项损失函数来得到最后得整体损失函数,如式所示。
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值