Advertisement

AniGAN: Style-Guided Generative Adversarial Networks for Unsupervised Anime Face Generation

阅读量:

AniGAN: Style-Guided Generative Adversarial Networks for Unsupervised Anime Face Generation论文阅读

Github:https://github.com/bing-li-ai/AniGAN

摘要:
实现效果如图,即根据一张参考动漫人物图片,对目标人物进行风格迁移。
在这里插入图片描述

介绍

Style-Guided Face-to-Anime Translation(StyleFAT)任务

根据参考动画脸的样式将照片转换为动画脸。
难点:动画脸一般具有很大的眼睛、较小的鼻子和嘴,这和人脸完全不同。

我们提出了AniGAN来解决StyleFAT任务,它基于非监督学习,使用不匹配样本进行训练。
主要贡献:
1)这是StyleFAT的第一个研究。
2)generator可以同时将照片的颜色和纹理风格和局部面部风格转化为提供的参考动漫脸风格,同时保留照片的全局结构信息。
3)discriminator学习domain-specific distribution和动画脸与照片脸的cross-domain shared distributions避免生成照片的明显扭曲,从而生成高质量图片。
4)新的normalization函数帮助提高动画人物的视觉质量。

模型

记源领域和目标领域分别为X和Y,取x∈X,y∈Y,AniGAN学习从x到y的映射函数G,并生成anime-face图片x’。x’需要完整保留x的全局信息(比如,脸的姿势)和y的风格(比如颜色纹理),同时x’必须生成动画风格的眼睛、头发。

Generator

如下图所示,为AniGAN中Generator的结构,它包含一个content encoder——Ec, style encoder——Es,decoder——F。
在这里插入图片描述
Ec从x中提取特征α,Es从y中提取特征γs,βs。
在这里插入图片描述
decoder根据content code和style code重建图片。经过我们的实验,发现在StyleFAT任务中并不适合在generator的瓶颈处使用残差块(会忽视一些动画风格的信息,导致artifacts),因此,我们为decoder设计了了一个自适应的堆栈卷积块(Adaptive Stack Convolutional Block, ASC block)和Fine-grained Style Transfer(FST)block,以及两个归一化函数。

AST:解决残差块会忽视一些动画风格细节的问题,比如在使用残差块时,它总是使用相同的颜色来绘制右眼。

FST:我们需要实现将photo的人脸信息转化成动画风格,不需要保留它的局部结构。其中一种实现方法是使用脸部解析或者面部landmark来检测人脸,然后通过扭曲实现转换。但这会引起artifacts,因为现实人脸和动画人脸的面部结构完全不同。因此,我们将人脸的结构视作一种类似于颜色纹理的风格,将其通过风格迁移进行转换。FST就是为此设计的。

Normalization

Layer Normalization可以转变图片的结构和形状,AdaIN (Adaptive Instance Normalization)可以调整图片的颜色纹理风格。AdaLIN通过自适应地合并AdaIN和LN可以控制颜色纹理改变的程度,但由于它是针对单通道的操作,忽视了通道之间的联系。例如,眼睛的形状样式和颜色/纹理样式可能分别在不同的通道中占主导地位。换句话说,AdaLIN的combination space 往往小于IN和LN的all-channel combinations。
我们提出了point-wise layer instance normalization(PoLIN)和AdaPoLIN来解决上述问题。
在这里插入图片描述
Conv()代表1x1卷积,[, ]代表channel-wise的concat,z是网络层的特征图,μI,μL,σI,σL分别表示channel-wise和layer-wise的均值和标准差。
在这里插入图片描述
AdaPoLIN自适应地合并IN和LN,保留了风格信息。上式中,γs和βs分别是style code,且上式的bias为0.

Discriminator

传统的Discriminator无法很好地识别anime-faces,从而导致生成结果中常常出现扭曲和artifacts。
我们使用了一个double-branch的Discriminator。假定anime-faces和photo-faces具有部分共享的分布,这个跨域分享的分布包含了丰富的人脸信息。通过学习这个分布,Discriminator可以减少生成结果中的面部扭曲和artifacts。

结构如下图所示,两个分支的Discriminator共享浅层的部分,一个分支用于辨别anime-faces(可以帮助减少面部扭曲和artifacts),另一个分支用于辨别photo-faces。
在这里插入图片描述
用数学公式进行描述:
在这里插入图片描述
该结构提高了生成图片质量(就我本人观察而言,生成动漫图片人脸过于相似,不过动漫人物好像脸确实都差不多),帮助generator稳定训练,并且它可以拓展到多个branch。

Loss

对抗损失:
在这里插入图片描述
特征匹配损失(feature matching loss):为了鼓励模型产生更自然的不同维度的数据,我们采用了特征匹配损失。另DUk(h)表示Discriminator中的共享层DU的第k个下采样中提取的特征图,定义Lfm如下:
在这里插入图片描述
K1表示DU中用于特征提取的所有网络层。在实验中,我们选择K1={1, 2}。

Domain-aware feature matching loss:记DXk()表示在分支DX的第k个下采样特征图,D-Xk()表示DXk()的平均池化后的结果,定义Ldfm如下:
在这里插入图片描述
K2代表Dx和Dy中用于特征提取的网络层,在实验中,我们取K2={3}。

Reconstruction loss:(突然想到动画转为人脸的重建不应该要求太严格) 学习photo-face的全局结构
在这里插入图片描述
总的目标:
实验中,超参数λfm=1,对于face2anime数据集,λrec=1.2,对于selfie2anime,λrec=2。
在这里插入图片描述

实验

数据集

selfie2anime:我们根据UGATIT进行预处理,只使用女性角色和彩色图片。训练集3400,测试集100。
face2anime:我们额外建立了一个数据集,它包含比selfie2anime更多的动画风格,如下图所示:它包含17796张图片,photo-face和anime-face各占一半。anime-face是从Danbooru2019数据集中收集的,我们使用了一个预训练的动画脸检测器来提取动画脸。photo-face是从CelebA-HQ数据集收集的。所有图片和面部landmark对其,并裁剪到128x128,训练集8000,测试集898。
在这里插入图片描述

实现细节(?)

快速训练:batch size=4,训练100K个迭代。在单个Tesla V100 GPU上,训练时间少于14h(使用pytorch)。RMSProp optimizer,learning rate=0.0001. 还使用了别的GAN loss和gradient penalty regularization。最终生成器是中间生成器的历史平均版本,其中更新重量为0.001。
在这里插入图片描述
在face2anime数据集(CycleGAN和UGATIT还是可以的)。
在这里插入图片描述
在selfie2anime数据集。

我们使用FID、learned perceptual image patch similarity (LPIPS,多模态translation下评估多样性)
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~