StackGAN笔记

Stack可译做堆叠,就是在GAN上面再放上一个GAN。
作者讲述的自己的解决思路,原来难以生成高分辨率的图像,他们分解了这个问题,把生成高分辨率图片这个任务分解成两个更为简单的任务。就是文中说的一个GAN生成大致的形状和颜色,第二个GAN生成细节和修正错误,这比直接一个GAN生成更加容易。这似乎研究中解决一些任务的一种常用的方法,以前看的一篇论文,图像修复的,先修复缺失的轮廓边缘,再填充颜色。比直接一次完成好。就是把一个任务分成可以区分的两个任务,分别加以处理。

翻译:

摘要:
从文字描述中生成具有照片般真实感的图片一直是计算机视觉中具有挑战性的一个课题,并且具有很多的应用。现有方法生成的图片可以粗略的反映出给定的描述,但是缺乏需要的细节和生动的对象局部。本文提出了stackGan,它从文字描述中生成具有照片般真实感的图像。1阶段的GAN根据文字描述草绘出一张简单形状和基本颜色符合的低分辨率图片,第二阶段的GAN把第一阶段的结果和文字条件作为输入,生成具有照片真实感的高分辨率的图片。二段GAN能够修正错误,并且通过增强过程给图片增加令人信服的细节。StackGAN生成的图片比其它方式生成的看上去更加可信。重要的一方面,这个模型可以生成256*256的,其它模型最多知道了128.为了掩饰StackGAN的效果,我们基于CUB 和Oxford-102 数据集做了广泛的实验,这两个数据集包含了足够多的各种类别的对象,并且每类对象有很多的外观变体,被广泛用于图像生成分析。

1、引言:
内容和摘要差不太多,略。
2、相关工作:
从基于深度学习的,到基于GAN的,到基于CGAN的讲了一下,再讲了和自己结构类似的模型,相对来说这个主要的优势是生成图片的分辨率高。
3、StackGAN
首先讲主要结构和摘要差不多
3.1 GAN和CGAN的构成
3.2 Stage-I GAN
在这里插入图片描述
如上图所示,首先使用编码器做文本嵌入将文字编码成为隐变量。因为隐变量的维数很大,它对应到的隐变量空间相对于数据量来说很大,所以这可能造成隐变量数据组成的流形的不连续。(我的理解:隐变量数据流形以及后面的条件流形,应该是说的文字描述是隐变量空间下面的一个低维流形,远不会充满整个空间。 不连续大概就是说比如手机,台式机这两个样本描述差别较大,不连续,给个手机,平板,笔记本,台式机这样的样本描述就会比较连续了)为了缓解这个问题,论文引入了条件增强技术来为生成器产生更多的条件变量。方法就是从高斯分布 N (µ(ϕt), Σ(ϕt))中生成隐变量,其中均值和方差矩阵都是隐变量ϕt的函数,也是通过学习得到,并且µ0(ϕt) 和 Σ0(ϕt)使用了重参数技巧进行训练。

这种方案有利于在条件流行上形成微小的扰动,从而在小样本数量的情况下生成更多的文本-图片対。为了增强条件流行的平滑性,还加入了一个正则式:DKL(N (µ(ϕt), Σ(ϕt))|| N (0, I)) 就是让函数构成的高斯分布和标准高斯分布的KL散度最小化。上面最后形成条件 c0,在这里插入图片描述
其中e ∼ N (0, I)).
于是Stage-I的训练就是最大,最小化小面这两个式子。和GAN总体形式差不多,只是函数里面多了些参数,另外生成器多了个正则化项。Io和t是真实分布的图片和文本,z是随机的那个隐变量。
在这里插入图片描述
Stage-I结构:
生成器:文本嵌入ϕt被放入全连接层产生µ0 和 σ0,然后放入高斯分布产生c0,c0再喝z连接输入生成网络
判别器:文本嵌入ϕt先通过全连接层变成Nd维的数据,然后重复它,将它变成Md × Md × Nd的张量。输入的图片会降采样到Md × Md大小。然后将这两者在通道维度连接起来形成一个tensor,将这个tensor送入1*1的卷积层以共同学习图片和张量的特征,最后,连接到一个右端只有一个节点的全连接层产生出得分。

Stage-I结构:
生成器:第I阶段生成的图片可能缺乏逼真的局部细节,或者包含一些形状扭曲。文本中一些对于生成图片很重要的信息可能被忽略了。二阶段的网络使用第一阶段生成的图片和以及前面文本嵌入作为输入,文本嵌入可以帮助生成第一阶段忽略掉的信息。
stage-II训练过程的公式表达如下
在这里插入图片描述
其中S0就是第一阶段输出的图片
c是条件,它和第一阶段共用ϕt,但是使用不同的全连接层来生成高斯分布的均值和方差,希望通过这个来捕获第一阶段缺失的信息。

网络结构:
二阶段生成器的输入组合方式和1阶段判别器的类似,就是将条件c的第0维作为通道,重复每个元素到图片大小,在通道维度连接图片和条件,输入生成器。然后通过若干个残差网络连接起来编码图片和文字特征,最后通过若干个上采样层生成图片。
为了判别器能更好的学习图片和文本之间的alignment(译作对齐,啥意思?),两个阶段都使用了Reed 等提出的matching-aware discriminator 感知匹配鉴别器,而不是一般的鉴别器。就是李宏毅课程中讲到的,有两种负样本,生成图片和条件。真实图片和不匹配的条件。

实现细节:
上采样模块 采用的是最近邻插值方法 nearest-neighbor upsampling,后面跟随一个 3 × 3 步长为 1的卷积,除了最后一层之外,都采用批处理正则化+Relu激活函数。
残差网络模块中类似采用 3 × 3 步长为 1的卷积+批处理正则化+Relu激活函数。

下采样采用4*4 步长为2的卷积,批正则化+LeakyReLU,第一层没有批处理正则化。

训练过程:先交替的训练Stage-I的网络600个epoch(确定是epoch?),然后再交替的训练Stage-II的网络600个epoch(确定是epoch?)
学习率初始化0.0002,没100就减少到1/2
都采用adam优化器,64个样本点为一批。

实验
作者采用了广泛的方法来评价他们的模型,使用了领先的比较方法。
同时还评估了自己模型设计和局部模块。比如只用Stage-I生成高分辨率图片,条件增强部分是否有用等。
采用CUB数据集,含有200种鸟的11788张图片,以及Oxford-102数据集,含有102种花的8189张图片。其中cub数据集做了裁剪,因为鸟的在整张图片中的大小比例太小。按照论文xxx的设置,分成了类别不相交的训练集和测试集(为何,这里没看懂)
During training, we randomly crop and flip images,and generate the corresponding text embedding as the average of four randomly selected descriptions corresponding to the image.
训练过程中还随机的裁剪和旋转图片,生成对应的文本嵌入做为随机选择四张图片对应的描述的平均。(没看懂)

后面是结果对比,暂略。

组件的分析:
如果只使用Stage-I的,得分低很多,说明Stage-II的必要性。如果Stage-II不输入文字,得分降低,说明这个也是有用的。
条件增强模块:去掉条件增强模块分数也会降低一些,固定模型的其它输入,只改变条件增强这里的输入,会产生如下图所示的效果。
条件增强改变了图片的视角或者生成对象的姿势。
在这里插入图片描述
为了展示StackGAN学习到了平滑的隐变量流形,作者利用模型从线性插值的句子嵌入(Sentence embedding interpolation:应该就是指从一句文本线性渐变到第二句文本,然后对应到文本嵌入的向量上线性渐变)中生成图片,如下图,第一行,红鸟到黄鸟的渐变,第二三句是更复杂的句子的渐变,句子中包含了更多的描述,比如翅膀颜色,k可译做堆叠,就是在GAN上面再放上一个GAN。
条件增强改变了图片的视角或者生成对象的姿势。在这里插入图片描述为了展示StackGAN学习到了平滑的隐变量流形,作者利用模型从线性插值的句子嵌入(Sentence embedding interpolation:应该就是指从一句文本线性渐变到第二句文本,然后对应到文本嵌入的向量上线性渐变)中生成图片,如下图,第一行,红鸟到黄鸟的渐变,第二三句是更复杂的句子的渐变,句子中包含了更多的描述,比如翅膀颜色,鸟喙等。

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值