【ICCV2019】【模式崩溃】Seeing What a GAN Cannot Generate论文分享

 

注:拉到最后有视频版~

论文链接:https://arxiv.org/abs/1910.11626v1

文字版

今天我给大家讲两篇论文,一篇是关于 GAN 的模式崩溃可视化的,一篇是关于如何用用 pix2pix 做人脸编辑的

先来看第一篇论文,这是 iccv2019 的论文,作者是 MIT 和港中文的

我会从以下三个方面来进行本次的讲述

背景

首先是背景,我先简单解释下什么叫模式崩溃,简单来说就是比如我训练集有猫和狗,理论上来说 GAN 会学到猫特征和狗特征,然后生成时候就会生成猫图片和狗图片,如果发生了模式崩溃,就会发生生成的只有狗图片,猫特征被丢掉了

背景呢就是说对这个问题在 gan 中是很常见也是很严重的

动机

第二是动机,因为有这个问题,我们就很想知道,GAN 到底不能生成什么东西,现在的一些工作提供的解释方法比较少,就算是 GAN 中常用的评价指标 fid 和 is,也只是在特征的层面评价了训练分布和生成分布之间的一个距离,我们就想拿到一个更具象的,分析出来 GAN 到底不能生成什么

研究目标

研究的目标呢,就是模式崩溃的一个可视化

方法

对于研究的方法,作者在分布的层面和实际例子的层面进行了模式崩溃的可视化

先讲分布层面,为了对比训练分布和生成分布,作者提出了用分割统计的方法,用一个别人训好的分割网络,这个网络能分割出 300 多类不同的类别,比如土地,教堂,人,树,天空等等,然后把分割出来的每一列的面积记下来

具体来说,作者在 LSUN

卧室的数据集上训了一个模型,然后让他随机生成 1w 的图片,同时在训练集中选 1w 的图片,分别做分割,统计出如墙,床,地板等不同类别的面积,上面的图代表不同类别在总面积中的比例,下面的表代表训练图片和生成图片的面积对比,正值代表生成的面积大于训练集面积,负值代表生成的面积小于训练集面积,也就是模式崩溃

此时可能有人要问了,是不是训练集中分布就是不均衡的,导致 GAN 没有办法好好学习,我们从训练集中随机采样,然后做上面相同的实验,发现分布几乎是没有差别的

然后,对现在比较流行的一些 gan 做对比,发现 stylegan 是最不容易出现模式崩溃的,其他的 gan 都崩溃得很严重

这里,我们对不同 gan 分割的面积做一个统计量,文章提出了 FSD 评价指标,g 是生成的数据,t 是训练数据,统计他们分割面积的均值和总数

也是发现 stylegan 的效果最好

到这里,分布层面的可视化就做完了,下面讲实际例子的模式崩溃可视化

为了解决这个问题,我们需要拿到一对数据,即真实的图片和 GAN 空间生成的图片,但是问题来了,gan 生成是随机的,没法保证生成的图片一定和我手里这张真实的图片一致,所以我们在这里要定义一个可逆问题

一般来说,gan 是不可逆模型,所以为了找到由生成器生成的图片,且与真实图片的保持尽可能近的距离,用数学语言来说就是,

但是问题来了,对于很深的网络,这样的逆推问题是很难处理的,作者在这里把逆推问题分解了,分解为处理一个较浅的网络逆推问题

具体来说,首先,我们需要学习一个逆推网络,我们把他成为 encoder,注意,这里的 E 和 G 是完全对称的结构。同时,我们把生成器 G,encoder E 都分解为小 g,和小 e。同时前面说了,我们先处理一个浅网络逆推问题,所以我们其实先是在 r 上处理

然后我说一下训浅网络 encoder 时候的 loss,文中定义了左 loss 和右 loss,左 loss 是先逆推一层,再推理一层,得到一个 L1 范数。右 loss 是先推理一层,再逆推一层的 L1 范数,目的是在网络的每一层减少损失。这样训练好之后,得到了浅层的 encoder,然后通过 finetune,得到整个的 encoder

对于第二步,需要做一个推理,比如我要逆推这张图片,我通过 encoder,然后再经过一个浅层生成器,得到 r0

此时,最老的办法是是通过梯度下降去调 r 本身,但是网络是非凸的,很容易陷入到局部最优值,所以这并不是一个好办法,文章在这里提出,不更新网络参数,也不更新 r 本身,在推理的每一层结构上加一个小扰动,学习这个扰动的参数,这样能有效避免局部最优

实验

然后呢,是一些具体的实验

我先介绍下对比的方法,a 的意思就是直接用梯度下降暴力调 z,b 的意思是训一个 encoder 做图像的逆推,c 是先用 encoder 做图像逆推,然后梯度下降调 z,d 是用上面说的左 loss 右 loss 的方式训 encoder,e 是用上面说的左 loss 右 loss 训 encoder 后再用梯度下降调 z,f 是就是全部的方法加在一起,训浅层的 encoder,然后不调 z,学扰动参数

下面的数据对比的是逆推前的图片和逆推后的图片在 z,特征和重建的 pixel 方面的相关性,可以看到 f 的效果是最好的,相关性最强

同时这个也证明了,encoder 已经效果非常好,接近于能完美无损逆推

然后在真实的图片上测试,因为真实的图片没有 z 和特征的 gt,故只对 pixel 做比较

我们在这里可以看到,对于真实的图片,pixel 的差距还是比较大的,同时又因为上面的实验已经证明 encoder 已经效果非常好,所以可以说明这个模式崩溃是 gan 本身导致的,比如在教堂数据集上训练的模型,就不能生成人

再多看一些实验,可以发现,在教堂数据集上训出来的模型,在训练集中和其他数据中都能很好的生成大部分的教堂属性,但是人、牌子等无法生成,说明 gan 在这些类别发生了模式崩溃

结论

然后是文章的结论,结论就是文章提出了一个可视化模式崩溃的方法,同时也证明了的确 gan 在学习时候的确会丢掉一些类别

不足

最后的是一些不足,第一,对于 gan 为什么拒绝学习某些特征,仍然无法解释,第二,如何强迫 gan 去学习这些他原本拒绝学习的特征,第三是为什么不同的网络会导致不同的模式崩溃

视频版

Seeing What A GAN Cannot Generate论文分享(ICCV2019)

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值