基于飞桨paddlepaddle复现StarGAN v2

基于飞桨paddlepaddle复现StarGAN v2

百度顶会论文复现营

StarGAN v2: Diverse Image Synthesis for Multiple Domains

通过对论文的精读,完全掌握StarGAN v2

首先还是看下StarGAN v2在CelebA-HQ和AFHQ两个数据集上的表现(没打label的是实际的样张)


名词解释

  1. domian:是指一组图像,具有一个独特类别的图像组。(男、女;猫、狗、老虎、豹)
  2. style:是在一个domain中,每个图片都有自己独特的style.(对人来说可以是发型、发色、表情、是否有胡子、瞳孔颜色等等;对动物来讲可以是毛色、品种、也包含表情等等)

引言

  • 一个理想的图像到图像的翻译方法应该能够综合考虑各个领域的不同风格的图像。也就是说一个好的gan就要能将我们输入的图片按照domain和style生成新的图片.StarGAN仍然会为每个domain学习一个确定性映射,它不能捕获数据分布的多模态特性。这个限制来自于这样一个事实,即每个domain都由一个预定的label表示。注意,Generator接收一个固定的label(例如一个热向量)作为输入,因此它不可避免地在给定源图像的每个domain中生成相同的输出。

  • 解决风格多样性问题,通常是将标准高斯分布随机抽样出来的低维latent code(隐编码)送人生成器得到的.在生成图片时把通过latent code方式得到的Style加入到图片生成器中,来得到相应的图片。这样的方法就只考虑两个domain之间映射,不能扩展到不断增加的域数量。如果有K个domain我们就需要训练K(K-1)个生成器去处理每个域之间的转换,这样就限制了他们的应用.

  • 为了解决可伸缩性的问题,早版本的StarGAN是通过使用一个生成器来映射所有的Domain(stargan的名字就是因为这样模型结构而得名的).Generator将domain label作为附加输入,并学习将image转换为相应的Domain。

  • 想要两全其美,就有了现在的Starganv2,他是一种可伸缩的方法,可以在多个Domain中生成不同的图像。特别是,他从StarGAN开始,提出的领域特定样式代码替换其domain label,该代码可以表示特定Domain的不同样式。为此,先介绍了两个模块,一个Mapping Network(映射网络)和一个Style Encoder(风格编码器)。mapping network学习将随机高斯噪声转换为Style code,而style encoder从给定的参考图像中提取style code。考虑多重因素Domain,两个模块都有多个输出分支,每个分支都提供特定Domain的style code。最后,利用这些样式代码,Starganv2的Generator学会了成功地在多个Domain上合成不同的图像.

  • Starganv2论文还开源了一个新的动物脸数据集(AFHQ),Animal Faces-HQ.

Stargan v2基本框架

设X和Y分别是图像和可能Domain的集合。在给定图像x∈x和任意Domainy∈y的情况下,我们的目标是训练一个能够生成与图像x对应的每个Domain y的不同图像的生成器G,在每个Domain的学习风格空间中生成特定于Domain的Style code,训练G来反映Style code。上图图展示了StarGAN v2的概述,它由下面描述的四个模块组成。

Generator G

  • Generator:生成器G将输入图像x转换为输出图像G(x,s),该图像反映由(Mapping Network)F或(Style Encoder)E提供的Domain特定样式代码s(style encoder)。使用自适应实例规范化(AdaIN)将s注入G中。可以观察到s被设计成表示特定Domain y的样式,这就消除了提供y到G的必要性,并允许G合成所有Domain的图像。
    Generator包含4个上采样模块,4个中间层模块和4个下采样模块,所有模块都继承了预激活的参差单元。还在上、下采样模块中用了instance normalization (IN)和adaptive instance normalization (AdaIN).把Style code 通过AdaIN注入所有的AdaIN中,并通过学习仿射变换提供缩放和移位向量。
    对CelebA-HQ还增加了上、下采样模块各一层,移除了上采样模块的residual blocks,增加了wing,将生成人脸关键部位的mask,使得人脸mask区域在通过Generator后仍能得以保留.

AdaIN

  • 本文通过style code获得style_mean(ys)和style_std(yb),通过style_mean和style_std改变feature map的分布来实现风格迁移。

Mapping Network F

Mapping Network:给定一个latent code z和一个Domain y,(Mapping Network)F生成一个样式代码s=F y(z),其中fy(·)表示对应于Domain y的F的输出。F由具有多个输出分支的MLP组成,为所有可用Domain提供Style code。F通过对latent code z∈z和Domain y∈y进行采样,可以产生不同Style code。多任务体系结构允许F高效有效地学习所有Domain的Style code。

Mapping Network由一个具有K个输出分支的MLP组成,其中K表示Domain的数目。由4个共享Domain权重的全连接网络,再加上4个每个domain各自独立的全连接网络(相当于domain个网络)。latent code尺寸是16,hidden layer尺寸是512,style code尺寸是64.latent code是从标准高斯分布采样得到的。
作者尝试将像素标准化加入latent code没有提高实际效果,作者还试过在此部分加feature normalizations,不过表现也不怎么好。

Style Encoder E

Style Encoder:给定一个图像x及其对应的Domain y,Style Encoder E提取x的样式代码s=E y(x)。这里,E y(·)表示E对应于Domain y的输出。与Mapping Network F类似,Style Encoder E受益于多任务学习设置。E可以使用不同的参考图像生成不同Style code。这就可以使得G合成时参考了图像x的Style code输出图像。
Style Encoder由一个具有K个输出分支的CNN组成,其中K表示Domain的数目。由6个共享Domain权重的ResBlk,和一个每个domain独立的全连接网络(相当于domain个网络)。没有使用global average pooling 提取参考图像的精细特征。D=64 是输出的Style Encoder尺寸.

Discriminator D

Discriminator:鉴别器D是一个多任务鉴别器,它由多个输出分支组成。每个分支D y学习二值分类,确定图像x是其Domain y的真实图像还是由G生成的伪图像G(x,s)。
Discriminator是由6个ResBlk,激活函数采用leaky ReLU,用K(domain个数)个全连接输出每个domain real or fake的分类。D=1,用来判断图片是真是假。没有使用feature normalization或者PatchGAN。

Style Encoder和Discriminator的大体结构基本是一样的。

Training objectives

给定图片 x ∈ X 他的 domain y ∈ Y,通过以下损失函数来训练我们的网络

1.Adversarial objective.

  • GAN的一般损失

  • 还使用了R1 正则 ,即该文的zero-centered gradient penalty(又称为 the - log D trick),其公式为,即鉴别器输出对真实图像的导数的模的平方:
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值