大家好,欢迎来到专栏《百战GAN》,我们在公众号已经输出了非常多的GAN相关的理论,这一次我们开设《百战GAN》专栏,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练等内容。

作者&编辑 | 言有三

本文资源与生成结果展示

本文篇幅:5000字

背景要求:会使用Python,Tensorflow或者Pytorch

附带资料:项目推荐,版本包括Pytorch+Tensorflow

同步平台:有三AI知识星球(一周内)

1 项目背景

生成对抗网络如今在计算机视觉的很多领域中都被广泛应用,需要每一个学习深度学习相关技术的算法人员掌握,我们公众号和知识星球讲述了非常多的理论知识,在这个《百战GAN》专栏中,我们会配合各类实战案例来帮助大家进行提升,本次项目开发需要以下环境:

(1) Linux系统或者windows系统,使用Linux效率更高。

(2) 安装好的Tensorflow,CPU或者GPU训练都可以。

2 原理简介

今天我们要实践的模型是DCGAN和CGAN,DCGAN是第一个全卷积GAN,麻雀虽小,五脏俱全,最适合新人实践。

DCGAN的生成器和判别器都采用了4层的网络结构。生成器网络结构如上图所示,输入为1×100的向量,然后经过一个全连接层学习,reshape为4×4×1024的张量,再经过4个上采样的反卷积网络层,生成64×64的图,各层的配置如下:

判别器输入64×64大小的图,经过4次卷积,分辨率降低为4×4的大小,每一个卷积层的配置如下:

DCGAN并不能控制生成图片的类别,条件GAN(CGAN)则使用了条件控制变量作为输入,是几乎后续所有性能强大的GAN的基础。网络结构如下,其中的y就是条件变量。

对于生成器来说,输入包括z和y,两者会进行拼接后作为输入。对于判别器来说,输入包括了x和y,两者会进行拼接后作为输入,当然为了和z以及x进行拼接,y需要做一些维度变换,即reshape操作。

关于它们的理论更加详细的讲解,大家可以移步有三AI知识星球,或者自行阅读论文。

3 模型训练

接下来我们进行实践,选择tensorflow框架,下面详解具体的工程代码,主要包括:

(1) 生成器和判别器模型的定义。

(2) 损失和优化目标的定义。

3.1 DCGAN类定义

首先我们需要定义一个类,设计好输入输出,__init__函数如下:

# 模型定义

class DCGAN(object):

def __init__(self, sess, input_height=108, input_width=108, crop=True,

batch_size=64, sample_num = 64, output_height=64, output_width=64,

y_dim=None, z_dim=100, gf_dim=64, df_dim=64,

gfc_dim=1024, dfc_dim=1024, c_dim=3, dataset_name='default',

max_to_keep=1,

input_fname_pattern='*.jpg', checkpoint_dir='ckpts', sample_dir='samples', out_dir='./out', data_dir='./data'):

其中参数解释如下:sess表示TensorFlow session,batch_size即批处理大小;z_dim是噪声的维度,默认为100;y_dim是一个可选的条件变量,比如分类标签,用于CGAN;gf_dim是生成器第一个卷积层的通道数;df_dim是判别器第一个卷积层的通道数;gfc_dim是生成器全连接层维度;dfc_dim是判别器全连接层维度;c_dim是输入图像维度,灰度图为1,彩色图为3。

从上述代码可以看出,初始化函数__init__中配置了训练输入图尺寸,批处理大小,输出图尺寸,生成器的输入维度,以及生成器和判别的卷积层和全连接层的若干维度变量。

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务相关推荐

  1. [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  2. 生成对抗网络(GAN)的理论与应用完整入门介绍

    本文包含以下内容: 1.为什么生成模型值得研究 2.生成模型的分类 3.GAN相对于其他生成模型相比有什么优势 4.GAN基本模型 5.改进的GANs 6.GAN有哪些应用 7.GAN的前沿研究 一. ...

  3. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

    欢迎大家来到<GAN优化>专栏,这里将讨论GAN优化相关的内容,本次将和大家一起讨论GAN的评价指标. 作者&编辑 | 小米粥 编辑 | 言有三 在判别模型中,训练完成的模型要在测 ...

  4. [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  5. 万字详解什么是生成对抗网络GAN

    摘要:这篇文章将详细介绍生成对抗网络GAN的基础知识,包括什么是GAN.常用算法(CGAN.DCGAN.infoGAN.WGAN).发展历程.预备知识,并通过Keras搭建最简答的手写数字图片生成案. ...

  6. ECCV2022 | 生成对抗网络GAN论文汇总(图像转换-图像编辑-图像修复-少样本生成-3D等)...

    图像转换/图像可控编辑 视频生成 少样本生成 图像外修复/结合transformer GAN改进 新数据集 图像增强 3D 图像来源归属分析 一.图像转换/图像可控编辑 1.VecGAN: Image ...

  7. 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

    生成对抗网络 – Generative Adversarial Networks | GAN 文章目录 GAN的设计初衷 生成对抗网络 GAN 的基本原理 GAN的优缺点 10大典型的GAN算法 GA ...

  8. 换脸方法大汇总:生成对抗网络GAN、扩散模型等

    1.One-Shot Face Video Re-enactment using Hybrid Latent Spaces of StyleGAN2 StyleGAN的高保真人像生成,已逐渐克服了单样 ...

  9. 生成对抗网络(GAN)简单梳理

    作者:xg123321123 - 时光杂货店 出处:http://blog.csdn.net/xg123321123/article/details/78034859 声明:版权所有,转载请联系作者并 ...

最新文章

  1. mysql性能优化教程_mysql性能优化教程
  2. 技术面试问项目难题如何解决的_【知识】同轴线如何当quot;网线quot;使用?解决改造项目中难题...
  3. html5 制作商品显示介绍,HTML5+CSS3:3D展示商品信息示例
  4. include 与 Widget
  5. VB6.0 GetTcpTable 使用详解
  6. Vue 中使用element ui 自定义邮箱和手机号的效验规则
  7. 数据-第19课-递归的应用实战一
  8. 矩阵计算器+求线性代数n阶行列式代码
  9. 同济大学Python程序设计基础 实验一:Python程序设计基础
  10. 网易云音乐java爬虫_Java爬取网易云音乐民谣并导入Excel分析
  11. 常用youtube快捷键,让看视频学技术起飞
  12. 百度地图迁徙大数据_百度地图迁徙大数据:复工后北上广深城内出行年后首次大幅增长...
  13. 如何在visio中画立体图形
  14. 学习SEO有别的味道
  15. Sublime修改成为Python编辑器,设置系统环境变量
  16. react 调用子(孙)组件方法
  17. 如何申请电子邮箱?电子邮箱怎么写?邮件可以撤回吗?
  18. 刀具的磨损与破损、刀具寿命及刀具状态监控
  19. 百度推广优化(百度推广优化技巧)
  20. 得力计算机半音乐曲,60条最全音乐知识科普,让你轻松开启音乐之门!

热门文章

  1. MySQL事务,这篇文章就够了
  2. 2021 - 9 -下旬 数据结构- 线性表 -双端循环队列 - java实现
  3. Java 类中各成分加载顺序和内存中的存放位置
  4. mysql 把表的值用来计算_mysql一张表到底能存多少数据?
  5. centos8 配置 dns_Linux搭建DHCP+DNS+WEB服务
  6. 输出整数的位数、按位输出(两种)以及逆序输出
  7. iOS - 沙盒文件操作指南
  8. 剑指Offer #13 调整数组顺序使奇数位于偶数前面 | 图文详解
  9. linux 安装 加入内核参数,Linux 实现自动安装服务组件以及优化内核参数
  10. java rmi 还有用吗_java rmi使用后的感想