飞桨Paddle论文复现—StarGAN v2: Diverse Image Synthesis for Multiple Domains
飞桨Paddle论文复现—StarGAN v2: Diverse Image Synthesis for Multiple Domains
解决问题
图像到图像转换:
1⃣️生成图像的多样性——将一个域的图像转化为目标域的不同图像
2⃣️在多个域的可伸缩性——支持多个目标域
StarGan v2 通用模块
除a之外的所有模块都包含多个输出分支,其中一个分支是在训练相应域时选择的
- a:生成器——将输入图像转换为反映特定于域的样式代码的输出图像
- b:映射器(core module)——将一个潜在的代码转换成多个域的样式代码,在训练过程中随机选择其中一个域。
- c:样式编码器 (core module)——提取图像的样式代码,允许生成器执行参考引导的图像合成
- d:鉴别器——从多个域区分真假图像
AFHQ数据集
- 数量:15000
- 分辨率:512*512
- 领域:猫(5000),狗(5000),野生动物(5000)
- 领域:多个(>3)个域 & 多个(>=8)品种
- 域:test—500,training—remaining
- 图源:github
训练详情
- batch size:8
- iterations:100k
- GPU:a single Tesla V100
- implementation:PyTorch
-
CelebA-HQ:
λcyc=1,
λsty=1,
λds=2(100K次迭代中线性衰减为零), - AFHQ:λcyc=1
- R1的非饱和对抗性损失正则化:γ=1
- Adam优化器:β1=0,β2=0.99
-
learning rate
G/D/E : 0.0001
F:0.000001 - 对除D以外的所有模块的参数:使用指数移动平均值
- 使用 He初始化—初始化所有模块的权重,并将所有偏差设置为零,除了与AdaIN的缩放向量相关联的偏差设置为0.000006
评估
对于参考引导合成,每个源图像都使用从目标域的测试集中随机采样的10个参考图像进行转换
-
使用来自ImageNet预训练的Inception-V3 [44]的最后平均池化层的特征向量
-
对于来自源域的每个测试图像,我们使用10个潜在向量将其转换为目标域,这潜在向量是从标准高斯分布中随机采样的
-
计算每对图像域的FID值&报告平均值
-
LPIPS:使用从ImageNet预训练的AlexNet 中提取的特征之间的L1距离来衡量生成图像的多样性
-
对于来自源域的每个测试图像,我们使用10个随机采样的潜在向量生成目标域的10个输出
-
计算从同一输入(即45对)产生的所有输出之间的成对距离的平均值
-
报告所有测试图像上LPIPS值的平均值。对于参考引导的合成,每个源图像都使用10个参考图像进行转换以产生10个输出
-
其他结果:
CelebA-HQ中:StarGAN v2以多种外观合成了源身份,反映了发型和化妆等参考样式
AFHQ:结果遵循参考图像的品种和头发,并保留源图像的姿势样式之间的插值结果:youtube
网络结构
-
生成器
AFHQ:
1⃣️四个下采样块,四个中间块和四个上采样块,都继承了**前的残差单元
2⃣️我们分别使用实例标准化(IN)和自适应实例标准化(AdaIN)进行下采样和上采样
3⃣️将样式代码注入所有AdaIN层,通过学习的仿射变换提供缩放和平移向量CelebA-HQ:
1⃣️将下采样层和上采样层的数量增加了一个
2⃣️删除了上采样残差块中的所有快捷方式,并使用基于自适应机翼的热图添加跳过连接 -
映射器:由一个MLP组成
MLP
1⃣️K个输出分支(K:域数)
2⃣️所有域之间共享四个完全连接的层,每个域四个特定的完全连接层。
3⃣️潜在代码:16 ,隐藏层:512 ,样式代码:64
4⃣️标准高斯分布中采样潜在代码
5⃣️不对潜在代码应用像素归一化,这不会增加我们任务中的模型性能。若尝试特征归一化,会降低性能 -
样式编码器:由有K个输出分支的CNN组成(K:域数)
1⃣️在所有域之间共享六个预**剩余块,然后每个域一个特定的完全连接层。2⃣️不使用全局平均池来提取给定参考图像的精细样式特征上
3⃣️表中输出尺寸“ D”设置为64,表示样式代码的尺寸
-
鉴别器:多任务鉴别器,包含多个线性输出分支,包含六个带有泄漏的ReLU的预**残基,使用K个全连接层对每个域进行真实/伪分类(K:域数)
1⃣️对于实/假分类,输出尺寸“ D”设置为1。
2⃣️未使用任何特征归一化技术或PatchGAN,不能提高输出质量
3⃣️多任务鉴别器比其他类型的条件鉴别器提供更好的结果