[论文笔记]Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis

1、文献概述

文章题目:《 Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis》
文章下载链接:链接
项目地址:源码

2、文献导读

首先先看看摘要部分,摘要的主要内容:

针对cGAN出现的模式崩溃(mode collapse)问题,文章提出一种简单而有效的正则化术语来解决此问题,其主要思想就是最大化了生成图像之间的距离相对于相应的潜在码( latent codes)之间距离的比率。
所以不会额外增加训练开销和也不需要修改原来cGAN的网络结构。

3、文献详细介绍

本文主要贡献有三点,如下所示:

•We propose a simple yet effective mode seeking regularization method to address the mode collapse problem in cGANs. This regularization scheme can be readily extended into existing frameworks with marginal training overheads and modifications.(提出了mode seeking regularization方法来解决cGAN中的模式崩溃问题。 通过少量的训练计算和修改,很容易地将此方法扩展到现有框架中)
• We demonstrate the generalizability of the proposed regularization method on three different conditional generation tasks: categorical generation, image-to-image translation, and text to-image synthesis.(在三种不同的条件生成任务上证明了所提出的正则化方法的一般性:分类生成,图像到图像翻译以及文本到图像合成)
• Extensive experiments show that the proposed method can facilitate existing models from different tasks achieving better diversity without sacrificing visual quality of the generated images(可以在不牺牲生成图像视觉质量的前提下,促进不同任务的现有模型实现更好的多样性)

接下来看看作者是对其核心思想进行解释说明。
在这里插入图片描述
如上图,灰色曲线对应真实数据分布,共有5个峰,其中每一个峰对应于一个Mode。当网络发生mode collapse时,对应的输出分布为中间的蓝色曲线,可以看到此时只有两个峰了,即说明输出图像的多样性相比真实数据降低了右边的绿色曲线则是文章提出的改进方法,此时可以看到曲线接近于真实数据分布,也有5个峰值,说明输出图像的多样性相比起原网络有所提高,表明提出的方法有效降低了code collapse 的影响。
最右边虚线框里的公式:
d I ( I a , I b ) d z ( z a , z b ) \frac{d_I(I_a,I_b) }{d_z(z_a,z_b) } \text {} dz(za,zb)dI(Ia,Ib)
上面公式即输出图像之间的距离与对应latent code之间的距离的比值。作者发现在发生mode collapse的地方,图片多样性低,图像的距离会变小,导致这一比值会很小,如虚线框中红色的 0.17 所示;所以作者觉得,通过人为地加入一个正则项来使这一比值保持最大,能够有效提高网络输出的多样性。结果就如右边的绿色曲线,接近灰色曲线的真实数据分布。

关于如何将正则项添加到模型中,作者也简单的给出了一个示意图:在这里插入图片描述
图中公式:
L m s = max ⁡ G ( d I ( G ( c , z 1 ) , G ( c , z 2 ) ) d z ( z 1 , z 2 ) ) L_{ms}=\max_G( \frac{d_I(G(c,z_1),G(c,z_2)) }{d_z(z_1,z_2)} ) \text {} Lms=Gmax(dz(z1,z2)dI(G(c,z1),G(c,z2)))
为其中 d ∗ ( ⋅ ) d_*(⋅) d()表示距离计算。
即新的损失函数公式:
L n e w = L o r i + λ m s L m s L_{new}= L_{ori}+\lambda_{ms}L_{ms} Lnew=Lori+λmsLms
其中 L o r i L_{ori} Lori 为原始GAN损失函数。

4、实验结果

首先先看看作者选用的四个评价指标:
FID 用于评价生成图像的质量(值越低越好)
LPIPS 用于评价生成图像的多样性(值越高越好)
NDB 和 JSD 用于评价真实图像分布与生成图像分布的相似度(值越低越好)
文章中针对不同数据集以及不同网络结构DCGAN、StackGAN++等做了各种实验。实验数据如下(只是取文章中一组表格,详细请见文章):
在这里插入图片描述
接下来主要看看三类模型的效果图吧。

首先关于image-to-image,先来看看和pix2pix模型的比较:
在这里插入图片描述
还有和DRIT模型的比较:
在这里插入图片描述
最后是text-to-image,这里主要是和stackGAN++模型的比较:
在这里插入图片描述

5源码

以DRIT模型为例,加入正则化(mode seeking loss)

  def backward_G_alone(self):
    # Ladv for generator
    loss_G_GAN2_A = self.backward_G_GAN(self.fake_A_random, self.disA2)
    loss_G_GAN2_B = self.backward_G_GAN(self.fake_B_random, self.disB2)

    loss_G_GAN2_A2 = self.backward_G_GAN(self.fake_A_random2, self.disA2)
    loss_G_GAN2_B2 = self.backward_G_GAN(self.fake_B_random2, self.disB2)

    # mode seeking loss for A-->B and B-->A
    lz_AB = torch.mean(torch.abs(self.fake_B_random2 - self.fake_B_random)) / torch.mean(torch.abs(self.z_random2 - self.z_random))
    lz_BA = torch.mean(torch.abs(self.fake_A_random2 - self.fake_A_random)) / torch.mean(torch.abs(self.z_random2 - self.z_random))
    eps = 1 * 1e-5
    loss_lz_AB = 1 / (lz_AB + eps)
    loss_lz_BA = 1 / (lz_BA + eps)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值