8000 GitHub - TowerToSky/LSGAN-: 通过抓取图片获取数据,然后搭建LSGAN网络,训练生成器和判别器,生成64*64大小的喀纳斯风景图片
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

通过抓取图片获取数据,然后搭建LSGAN网络,训练生成器和判别器,生成64*64大小的喀纳斯风景图片

Notifications You must be signed in to change notification settings

TowerToSky/LSGAN-

Repository files navigation

2021/5/21日 1:58 更新

修改了整个程序文件,修改了对图片的处理部分,可以使整个正确训练和生成图片

LSGAN

通过抓取图片获取数据,然后搭建LSGAN网络,训练生成器和判别器,生成64*64大小的喀纳斯风景图片

1 简介

本项目基于paddlepaddle,结合生成对抗网络(DCGAN),通过弱监督学习的方式,训练生成真实喀纳斯风景图片

1.1 什么是GAN?

生成对抗网络(Generative Adversarial Network [1],简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。该方法最初由 lan·Goodfellow 等人于2014年提出,原论文见 Generative Adversarial Network

生成对抗网络由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机采样作为输入,其输出结果需要尽量模仿训练集中的真实样本。判别网络的输入为真实样本或生成网络的输出,其目的是将生成网络的输出从真实样本中尽可能分辨出来。而生成网络则要尽可能地欺骗判别网络。两个网络相互对抗、不断调整参数,其目的是将生成网络生成的样本和真实样本尽可能的区分开[2] )。

让 x 是代表图像的数据。D(x)是判别器网络,输出的概率为$x$来自训练数据还是生成器。在这里输入$D(x)$的$x$是CHW大小为3x128x128的图像。使得$x$来自训练数据时$D(x)$尽量接近1,$x$来自生成器时D(x)尽量接近0。D(x)也可以被认为是传统的二进制分类器。

对于生成器网络,z为从标准正态分布采样的潜在空间向量。$G(z)$表示生成器函数,该函数将矢量$z$映射到数据空间。生成器的目标是拟合训练数据($p_{data}$)的分布,以便可以从该估计分布中生成假样本(p_g)。

所以,$D(G(z))$是生成器$G$输出是真实的图像的概率。如Goodfellow的论文所述,$D$和$G$玩一个minimax游戏,其中$D$尝试最大化其正确分类真假的可能性$logD(x)$,以及$G$试图最小化以下可能性$D$会预测其输出是假的$log(1-D(G(x)))$。

GAN的损失函数可表示为:

$\underset{G}{\text{min}} \underset{D}{\text{max}}V(D,G) = \mathbb{E}{x\sim p{data}(x)}\big[logD(x)\big] + \mathbb{E}{z\sim p{z}(z)}\big[log(1-D(G(z)))\big]$

从理论上讲,此minimax游戏的解决方案是$p_g = p_{data}$,鉴别者会盲目猜测输入是真实的还是假的。但是,GAN的收敛理论仍在积极研究中,实际上GAN常常会遇到梯度消失/爆炸问题。
生成对抗网络常用于生成以假乱真的图片。此外,该方法还被用于生成视频、三维物体模型等。

1.2 什么是DCGAN?

DCGAN是深层卷积网络与 GAN 的结合,其基本原理与 GAN 相同,只是将生成网络和判别网络用两个卷积网络(CNN)替代。为了提高生成样本的质量和网络的收敛速度,论文中的 DCGAN 在网络结构上进行了一些改进:

  • 取消 pooling 层:在网络中,所有的pooling层使用步幅卷积(strided convolutions)(判别器)和微步幅度卷积(fractional-strided convolutions)(生成器)进行替换。
  • 加入 batch normalization:在生成器和判别器中均加入batchnorm。
  • 使用全卷积网络:去掉了FC层,以实现更深的网络结构。
  • 激活函数:在生成器(G)中,最后一层使用Tanh函数,其余层采用 ReLu 函数 ; 判别器(D)中都采用LeakyReLu。

1.3 什么是LSGAN

LSGAN只是修改了DCGAN的判别器中去掉了最后的sigmoid函数,并将损失函数修改为MSE函数

1.3 本文的改进

  • 将Adam优化器beta1参数设置为0.8,具体请参考原论文
  • 将BatchNorm批归一化中momentum参数设置为0.5
  • 将判别器(D)激活函数由elu改为leaky_relu,并将alpha参数设置为0.2
  • 生成器输出,判别器输入改为[3,64,64]
  • 损失函数原为Softmax_with_cross_entropy,此时改用均方误差MSE

About

通过抓取图片获取数据,然后搭建LSGAN网络,训练生成器和判别器,生成64*64大小的喀纳斯风景图片

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0