gan

BicycleGAN: Toward Multimodal Image-to-Image Translation - 1 - 论文学习,成对数据

让人想犯罪 __ 提交于 2019-12-06 00:08:38
Abstract 许多图像到图像的翻译问题是有歧义的,因为一个输入图像可能对应多个可能的输出。在这项工作中,我们的目标是在一个条件生成模型设置中建立可能的输出分布。将模糊度提取到一个低维潜在向量中,在测试时随机采样。生成器学习将给定的输入与此潜在编码映射到输出。我们明确地鼓励输出和潜在编码之间的连接是可逆的。这有助于防止训练期间从潜在编码到输出的多对一映射也称为模式崩溃问题,并产生更多样化的结果。我们通过使用不同的训练目标、网络架构和注入潜在编码的方法来探索此方法的几个变体。我们提出的方法鼓励了潜在编码模式和输出模式之间的双射一致性。我们提出了对我们的方法和其他变种在视觉真实性和多样性方面进行了一个系统的比较。 1 Introduction 深度学习技术在条件图像生成方面取得了快速的进展。例如,网络已经被用来填补缺失的图像区域[20,34,47],给灰度图像添加颜色[19,20,27,50],并从草图生成逼真的图像[20,40]。然而,这个领域的大多数技术都集中于生成单个结果。在这项工作中,我们模拟一个潜在结果的分布,因为许多这些问题可能是多模态。例如,如图1所示,根据云的模式和光照条件,夜间捕获的图像在白天可能看起来非常不同。我们追求两个主要目标:产生(1)视觉上真实的和(2)多样化的结果,同时保持对输入的忠实。 从高维输入到高维输出分布的映射具有挑战性

CSAGAN的几大重点 - 2

懵懂的女人 提交于 2019-12-06 00:08:06
1.生成器 1)MRU(SketchyGAN) 计算过程为: 与DCGAN[46]和ResNet生成架构的定性和定量比较可以在5.3节中找到。MRU块有两个输入:输入特征图x i 和图像I,输出特征图y i 。为了方便起见,我们只讨论输入和输出具有相同空间维数的情况。令[·,·]为串联,Conv(x)为x上的卷积,f(x)为激活函数。我们首先要将输入图像I中的信息合并到输入特征映射xi中。一种幼稚的方法是沿着特征深度维度将它们串联起来并执行卷积: 然而,如果块能够在接收到新图像时决定它希望保留多少信息,那就更好了。所以我们采用以下方法: m i 是输入特征图上的掩码。可以在这里堆叠多个卷积层以提高性能。然后,我们希望动态地组合来自新卷积的特征图z i 和原始输入特征图x i 的信息,因此我们使用另一个掩码: 用来将输入特征图和新的特征图连接起来,得到最后的输出: 方程7中的第二项是残差连接。由于有确定信息流的内部掩码,我们称这种结构为掩码残差单元。我们可以将多个这样的单元堆叠起来,重复输入不同的比例的相同的图像,这样网络就可以在其计算路径上动态地从输入图像中检索信息。 2)CSAM(SAGAN) 大多数基于GAN的模型(Radford et al., 2016; Salimans et al., 2016; Karras et al., 2018)使用卷积层构建图像生成。卷积

深度学习-InfoGAN论文理解笔记

对着背影说爱祢 提交于 2019-12-05 17:44:16
在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/details/93074519 https://blog.csdn.net/qy20115549/article/details/86644192 。 如果理解了变分推断,KL散度,ELBO,对于InfoGAN中的重要方法就可以很容易理解了。 这里首先看一下简单的对数推导为方便对InfoGAN文中的公式的阅读: 下面的笔记参阅: https://blog.csdn.net/u011699990/article/details/71599067 https://www.cnblogs.com/zzycv/p/9312039.html 先记一下预备知识就当作复习了。 条件熵公式推导: 用另一个变量对原变量分类后, 原变量的不确定性就会减小, 不确定程度减小了就是信息增益。 互信息(Mutual Information, MI)是变量间相互依赖性的度量, 它度量两个事件集合之间的相关性。 两个离散随机变量X和Y的互信息可定义为: p ( x , y ) 是X和Y的联合概率分布函数, 而 p ( x ) 和 p(y)分别是X和Y的边缘概率分布函数 在连续随机变量的情形下: I ( X ; Y )

深度学习-DCGAN论文的理解笔记

泪湿孤枕 提交于 2019-12-05 16:53:29
训练方法 DCGAN 的训练方法跟GAN 是一样的,分为以下三步: (1)for k steps:训练D 让式子[logD(x) + log(1 - D(G(z)) (G keeps still)]的值达到最大 (2)保持D 不变,训练G 使式子[logD(G(z))]的值达到最大 (3)重复step(1)和step(2)直到G 与D 达到纳什均衡 Alec Radford等人于2016年初提出DCGAN以改善GAN的可训练性。他们认为传统GAN之所以不稳定,一个原因便是判别器D搭载的是初级的多层感知机模型,为了将火热的CNN纳入GAN的体系中,作者将多层感知机用CNN进行替换,并做了如下改进:  1 将池化层用stride=1stride=1的卷积层代替 2 将输给生成器G的100维噪声映射为四维张量用作CNN输入而不是向量 3 每进行一次卷积操作就进行批规一化(Batch Normalization) 4 使用ReLU层替换传统的Sigmoid函数,并对输出层使用Tanh激活 5 对判别器D使用LeakyReLU函数作为激活函数 6 移除所有全连接层   在以上改进的支撑下,论文给出了生成器G的网络结构:     经实验验证,该模型生成的图像较为稳定,虽然只能生成64*64大小的图像,但是这可以通过一些基本的图像处理方法,如金字塔来提升生成图像的分辨率

收敛速度更快更稳定的Wasserstein GAN(WGAN)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 10:53:28
生成对抗网络(GANs)是一种很有力的生成模型,它解决生成建模问题的方式就像在两个对抗式网络中进行比赛:给出一些噪声源,生成器网络能够产生合成的数据,鉴别器网络在真实数据和生成器的输出中进行鉴别。GAN能够产生十分生动的样例,但是很难训练。尽管最近大量的研究工作都投入到了寻找能让GAN稳定训练的方法上,但GAN的持续稳定训练成了依然是一个公开的问题。 概要最近提出的Wasserstein GAN(WGAN)在GAN的稳定训练上取得了重大进展,但是依然会产生低质量的样例或者出现在某些设置上不能收敛的情况。会产生这些训练失败的样例一般都是因为,作者通过在WGAN中使用权重修剪来达到在鉴别器中强制利普希茨(Lipschitz)限制条件的目的,但这样的方式会导致病态行为。 根据上述情况,文章提出了一种替代方法来强制Lipschitz限制条件:不修剪权重,而是根据输入来惩罚鉴别器的梯度正则项。这一方法方法与权重修剪WGAN相比,收敛的更快并且能产生更高质量的样例。这一替代方法基本能够保证很稳定的GAN训练。这是自深度学习发展以来,第一次可以训练多种多样的GAN结构,并且几乎不用进行超参数的调整,包括101层的ResNet和离散数据上的语言模型。 本文将从提出背景,算法介绍,实验结果,论文实现等四个方面来介绍这篇文章。 提出背景作者发现,WGAN的权重修剪会导致优化困难,并且即使能够优化成功

GAN实现(TensorFlow,MNIST数据集)

╄→尐↘猪︶ㄣ 提交于 2019-12-05 10:52:32
Generative Adversarial Nets in TensorFlow 生成对抗网络(简称GAN)是一种非常流行的神经网络。它由Ian Goodfellow等人在2014年NIPS论文中首次引入。这篇论文引发了对神经网络对抗训练的研究热潮。突然之间,GAN的许多改进都出现了:DCGAN,Sequence-GAN,LSTM-GAN等等。在2016年NIPS会议上,甚至有一整个专门针对GAN的研讨会! 请注意,该代码可在 https://github.com/wiseodd/generative-models 中找到。 首先,让我们回顾一下这篇论文的要点。之后,我们将一如既往地尝试使用TensorFlow和MNIST数据来实现GAN。 Generative Adversarial Nets 让我们举一个“造假币的罪犯”和“警察”之间的玫瑰关系的例子。在假币方面,罪犯的目标是什么?警察的目标是什么?我们列举一下: 为了成为一个成功的伪造犯,罪犯想欺骗警察,这样警察就不能分辨出假币与真钱的区别 为了成为正义的典范,警察希望尽可能地发现假币 在那里,我们看到产生了冲突。博弈论中的这种情况可以模拟为一个极小化极大游戏(minimax game)。这个过程被称为对抗过程。 生成对抗网(GAN)是对抗过程的一个特例,其组成部分(警察和罪犯)是神经网络。第一个网络生成数据

对抗生成网络学习(四)——WGAN+爬虫生成皮卡丘图像(tensorflow实现)

限于喜欢 提交于 2019-12-05 10:52:04
一、背景 WGAN的全称为Wasserstein GAN, 是 Martin Arjovsky 等人于17年1月份提出的一个模型,该文章可以参考[1]。WGAN针对GAN存在的问题进行了有针对性的改进,但WGAN几乎没有改变GAN的结构,只是改变了激活函数和loss函数,以及截取权重,却得到了非常好的效果[2]。且WGAN的方法同样适用于DCGAN。 本文以python爬虫爬取的皮卡丘(pikachu)数据集为例,利用WGAN生成皮卡丘图像。 [1]文章链接: https://arxiv.org/abs/1701.07875 [2] DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN原理总结及对比 二、WGAN原理 网上对于WGAN的解读文章介绍的非常详细,这里给出两个详细介绍的链接: [2] DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN原理总结及对比 [3] 令人拍案叫绝的Wasserstein GAN 在文章《Wasserstein GAN》中,作者从数学的角度进行了大量的公式推论,指出了GAN的问题所在,并提出了四点改进方法: (1)判别器的最后一层去掉sigmoid (2)生成器和判别器的loss不取log (3)在每一轮梯度更新之后,对 权值进行截取 ,将其值约束到一个范围之内(fixed box)。文章将其截取至[-0.01, 0.01]

WGAN-GP与WGAN及GAN的比较

為{幸葍}努か 提交于 2019-12-05 10:51:53
以下为MNIST测试,主要为了构建模型,只跑了,少量epoch,效果如下: WGAN 2个epoch wgan-gp 6个epoch gan 10个epoch 有时间可以多跑几轮,这里就不展示了。 代码如下 from datetime import datetime import os import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from six.moves import xrange from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data",one_hot=True) data= mnist.train.images#(55000,784) def Save_genImages(gen, epoch): r,c = 10,10 fig,axs = plt.subplots(r,c) cnt = 0 print(gen.shape) for i in range(r): for j in range(c): axs[i,j].imshow(gen[cnt][:,:],cmap='Greys_r') axs[i,j].axis(

W-GAN系 (Wasserstein GAN、 Improved WGAN)

社会主义新天地 提交于 2019-12-05 10:50:36
习总结于国立台湾大学 : 李宏毅老师 Wasserstein GAN 、 Improved Training of Wasserstein GANs 本文outline 一句话介绍WGAN: Using Earth Mover’s Distance to evaluate two distribution Earth Mover‘s Distance(EMD) = Wasserstein Distance 一. WGAN 1. Earth Mover’s Distance(EMD) EMD: P和Q为两个分布:P分布为一堆土,Q分布为要移到的目标,那么要移动P达到Q,哪种距离更小呢? 这里有许多种可能的moving plans,利用最小平均距离的moving plans来定义EMD 那么以下是最好的moving plans: 来用矩阵直观解释移土方案: 图中每个像素点对应row需要移出多少土到对应column, 越亮表示移动越多。注意每一个row的值加起来为对应P行的分布, 每个column的值加起来为对应Q行的分布。所以可以有很多的moving plan来实现: γ(xp,xq)表示从p移动多少土到q, || xp - xq ||表示pq之间的距离。上式就是 给定一个plan时需要平均移动的距离 。 那么EMD定义就是 穷举所有plan,EMD为最小的距离(最优的plan): 2

手把手教你用GAN实现半监督学习

落爺英雄遲暮 提交于 2019-12-05 10:49:39
引言 本文主要介绍如何在tensorflow上仅使用200个带标签的mnist图像,实现在一万张测试图片上99%的测试精度,原理在于使用GAN做半监督学习。前文主要介绍一些原理部分,后文详细介绍代码及其实现原理。前文介绍比较简单,有基础的同学请掠过直接看第二部分,文章末尾给出了代码GitHub链接。对GAN不了解的同学可以查看微信公众号:机器学习算法全栈工程师 的GAN入门文章。 本博客中的代码最终以GitHub中的代码为准,GitHub链接在文章底部,另外,本文已投稿至微信公众号:机器学习算法全栈工程师,欢迎关注此公众号 1.监督,无监督,半监督学习介绍 在正式介绍实现半监督学习之前,我在这里首先介绍一下监督学习(supervised learning),半监督学习(semi-supervised learning)和无监督学习(unsupervised learning)的区别。监督学习是指在训练集中包含训练数据的标签(label),比如类别标签,位置标签等等。最普遍使用标签学习的是分类任务,对于分类任务,输入给网络训练样本(samples)的一些特征(feature)以及此样本对应的标签(label),通过神经网络拟合的方法,神经网络可以在特征和标签之间找到一个合适的映射关系(mapping),这样当训练完成后,输入给网络没有label的样本