Coding Skill目录下的所有Tutorials、Notes、Guides博客都会不定期迭代更新

文章目录

  • What's GAN
  • Traditional Function
    • 变分自动编码器(VAE)
    • Auto-Encoder
  • Fancy Application
  • GAN的其他变体
  • 评价指标
  • 書籍推薦
  • 论文推荐

What’s GAN

GAN全称是Generator adversarial networks,中文是生成对抗网络,是一种生成式模型,无监督模型。

GAN的主要结构包括一个生成器G(Generator)和一个判别器D(Discriminator)。

  • Generator
    定义一个模型(可以是任意可以输出图片的模型,比如最简单的全连接神经网络,又或者是反卷积网络等。)来作为生成器,输入需要一个n维度向量(使用随机生成的向量来作为输入即可,随机输入最好是满足常见的比如均值分布,高斯分布等。),输出为图片像素大小的图片。

  • Discrimnator
    往往是常见的判别器,输入为图片,输出为图片的真伪便签。可以是任意的判别器模型,比如全连接,或者是包含卷积的神经网络。

生成式对抗网络模型综述
DCGAN介绍及原理

  • How to training
    基本流程如下:

    • 初始化判别器D和生成器G的参数
    • 固定生成器G,训练判别器D

How to Train a GAN? Tips and tricks to make GANs work
Tip:之所以要训练k次判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够教好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新。

我们的目标是使用生成样本分布(绿色实线)去拟合真实的样本分布(黑色虚线),来达到生成以假乱真样本的目的。
可以看到在(a)状态处于最初始的状态的时候,生成器分布和真实分布区别较大,并且判别器判别出样本的概率不是很稳定,因此会先训练判别器来更好地分辨样本。
通过多次训练判别器来达到(b)样本状态,此时判别样本区分得非常显著和良好。然后再对生成器进行训练。
训练生成器之后达到(c)样本状态,此时生成器分布相比之前,逼近了真实样本分布。
经过多次反复训练迭代之后,最终希望能够达到(d)状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的(判别概率均为0.5)。也就是说我们这个时候就可以生成出非常真实的样本啦,目的达到。

  • Summary

GAN一开始提出来的时候,实际上针对于不同的情况也有存在着一些不足,后面也陆续提出了不同的GAN的变体来完善GAN。
通过一个判别器而不是直接使用损失函数来进行逼近,更能够自顶向下地把握全局的信息。比如在图片中,虽然都是相差几像素点,但是这个像素点的位置如果在不同地方,那么他们之间的差别可能就非常之大。
比如上图10中的两组生成样本,对应的目标为字体2,但是图中上面的两个样本虽然只相差一个像素点,但是这个像素点对于全局的影响是比较大的,但是单纯地去使用使用损失函数来判断都是相差一个像素点,而下面的两个虽然相差了六个像素点的差距(粉色部分的像素点为误差),但是实际上对于整体的判断来说,是没有太大影响的。

但是使用损失函数的话,却会得到6个像素点的差距,比上面的两幅图差别更大。而如果使用判别器,则可以更好地判别出这种情况(不会拘束于具体像素的差距)。

Traditional Function

变分自动编码器(VAE)

Auto-Encoder

Fancy Application

GAN Zoo
AdversarialNetsPapers
GAN Application
十款神奇的GAN,总有一个适合你!

  • 图像生成
    GAN的生成器G输入是一个随机向量,输出的是图像
    比如可以用来制作海报,自己用来生成一个高清美女图像作为海报主角,省了一大批广告费。

  • 图像转换
    图像转换或者说是图像翻译,是将图像转换为另一种形式的图像,与风格迁移稍有不同(区别是???),这方面典型的工作是pixel-2-pixel。
    一般的GAN的生成器G输入是一个随机向量,输出的是图像,这里的生成器的输入是图像,输出的是转换后的图像。

cgan:
https://blog.csdn.net/jiongnima/article/details/80209239
https://blog.csdn.net/wspba/article/details/54666907
pix2pix-TF

Example:

  1. Cycle-GAN,可以实现风景画和油画互变,马和斑马互相转换等domain transfer等任务。cycleGAN的主要贡献是提供了一种unpaired的图像翻译方法,这是pix2pix所做不到的。
  2. DiscoGAN,DiscoGAN在不需要label标记和图像pairing的情况下学习交叉domain之间的联系,比如它可以将包包的图像风格迁移到鞋子的图像上
  3. cycleGAN给冷酷大哥加上笑容,将人脸图像转换为卡通图像,类似之前很火的脸萌APP,这个工作见DTN
    (https://arxiv.org/pdf/1611.02200.pdf)。
  • 图像合成
    图像合成这个任务是通过__某种形式的图像描述__创建新图像的过程。pix2pix和cycleGAN 都属于图像合成领域的一部分。

    • 场景合成
      给定部分显示场景的信息还原出真实的场景信息,比如根据分割图像还原出原始场景信息,刚好是图像分割的逆过程,据说英伟达在不断的开拓这个方向,试想一下,只要GAN还原的场景足够真实,完全可以模拟无人驾驶的路况场景,从而在实验室阶段就可以完成无人驾驶汽车的上路测试工作

    • 人脸合成
      人脸合成主要是根据一张人脸的图像,合成出不同角度的人脸图像,可以用做人脸对齐,姿态转换等辅助手段提高人脸识别的精度,典型的工作是中科院的TP-GAN,可以根据半边人脸生成整张人脸的前向图,对人脸识别任务有很大的辅助效果。

    • 文本到图像的合成
      从给定的一段文字描述,生成一张和图像文字匹配的图像。比如:根据文字:一只黑色冠冕和黄色喙的白色的鸟,生成下面的这张图像。
      类似的工作还有 stack GAN 和 attn GAN:https://arxiv.org/abs/1711.10485,后者更是在细粒度的text-to-image上做了一番功夫。

    • 风格迁移
      Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks,作者发明了一种马尔可夫GAN迁移图像的风格,算是不错的贡献了。

    • 年龄变化
      Age-cGAN只要有一张年轻时候的照片,就可以提前知道自己几十年之后的样子。

  • 图像超分辨率
    图像超分辨率一直是一个很重要的研究课题,比较重要的是对天文图像和卫星图像做超分辨率,不管是在天文,军事还是其他方面,都有很重要的应用。在生活中,如果有标清的视频可以变为高清的视频。
    上述过程都是可逆的,既然可以增加图像的分辨率,那么同样可以减小图像的分辨率。既然都说到了图像超分辨率,那么就谈谈图像去马赛克的一些操作,知乎一位大佬集图像转化和超分辨率之大成,完成了对爱情动作片的添加和去除马赛克操作,详情请移步知乎,36k的高赞文章。

    • 单帧图像超分辨率:去马赛克其实是个图像超分辨率问题,也就是如何在低分辨率图像基础上得到更高分辨率的图像:
    • video多帧影像超分辨率:通过不同帧的低分辨率画面猜测超分辨率的画面
  • 图像域的转换
    GAN很适合学习数据的分布(只要是数据是连续的,对于离散的文本数据效果不是很好),同时也能完成domain转换的任务,比如使用GAN完成domain的迁移,此部分有比较典型的工作,CVPR的oral论文StarGAN是其中一个。Pix2Pix模型解决了有Pair对数据的图像翻译问题;CycleGAN解决了Unpaired数据下的图像翻译问题。但无论是Pix2Pix还是CycleGAN,都是解决了一对一的问题,即一个domain到另一个domain的转换StarGAN就是在多个domain之间进行转换的方法。可以做多个图像翻译任务,比如更换头发颜色,表情变化,年龄变换等等.
    穿衣搭配问题,详细工作可见PixelDTGAN: https://github.com/fxia22/PixelDTGAN PixelDTGAN是指像素级的domain 转换,输入的是一张复杂的图片,输出的是不包含背景的单纯的服饰的图像

  • 图像修复
    给定一张缺失的图像,修复出完整的图像

也可以用pix2pix来解决方案

  • 文本填空
    None

  • 其他
    None

Reference

GAN的其他变体

[你的侧脸泄露了太多信息,中科院TP-GAN图像生成太逆天了]
(https://www.eefocus.com/sensor/381380/r0)
最新的paper里面会有一部分来描述gan的相关研究和历史研究,那是人家总结过的,看看那个应该不会错,比自己搜索要高效。

GAN -> DCGAN -> CGAN -> Pix2Pix -> WGAN -> InfoGAN
https://github.com/YadiraF/GAN
Github Collection of generative models in Tensorflow
Github – 不同GAN效果对比
或许应该像 《21个项目玩转深度学习》 该书中设计纲领的思路来学习,即根据应用场景来学习技术,因为现实中的项目都有对应的业务场景,技术本没用,能解决实际问题才是价值体现。

GAN 生成对抗网络论文阅读路线图
历史最全GAN网络及其各种变体整理(附论文及代码实现)
Mofan GAN
独家 | GAN大盘点,聊聊这些年的生成对抗网络 : LSGAN, WGAN, CGAN, infoGAN, EBGAN, BEGAN, VAE

训练”稳定”,样本的”多样性”和”清晰度” 似乎是GAN的 3大指标

mode collapse:

Google 还明确地说,可能是 BigGAN 太大了,到后面都会塌掉,他们也没搞清楚深层的原因。所以现在 report 的是塌掉之前的结果。难道真的是效果好大于一切吗?甚至有的时候可以并不清楚为啥效果会这样,或者为啥会效果不好

High-Resolution Deep Convolutional Generative Adversarial Networks
Energy-relaxed Wassertein GANs (EnergyWGAN): Towards More Stable and High Resolution Image Generation
A Fully Progressive Approach to Single-Image Super-Resolution
Multi-Content GAN for Few-Shot Font Style Transfer
CAN: Creative Adversarial Networks, Generating Art by Learning About Styles and Deviating from Style Norms
Style Transfer Generative Adversarial Networks: Learning to Play Chess Differently
Generative Image Modeling using Style and Structure Adversarial Networks
GP-GAN: Towards Realistic High-Resolution Image Blending

SRResNet - SRGAN(与WGAN、CGAN、PixPix的关系)- ESRGAN - NAS(xiaomi):超分辨率,图像重建
pytorch-SRResNet
tensorlayer-SRHAN
SRGAN_Wasserstein
小米9拍照黑科技:基于NAS的图像超分辨率算法

关于GAN的灵魂七问
SC-FEGAN
不懂Photoshop如何P图?交给SC-FEGAN吧
SketchRNN
素描画
CartoonGAN
pytorch-CartoonGAN
CartoonGAN-Tensorflow
人工智能遇上二次元:用AI生成高分辨率全身动漫人物
AI插画师:如何用基于PyTorch的生成对抗网络生成动漫头像?
AI可能真的要代替插画师了……
你的老婆你做主:画风自定义,内容自定义,南加大AI助你走上人生巅峰
GAN:艺术家眼里生成作品的创作利器
一位艺术家眼中的GAN:它给予我更多灵感
通过文字描述来生成二次元妹子!聊聊conditional GAN与txt2img模型
“抠图”这手艺要过气了:用深度学习自动去除照片背景
TVGAN:一种简单且有效的新GAN (以及WGAN论文的问题) 思考DL的理论细节 (2)
DGN:生成模型,可以有多简单?思考DL的理论细节 (3)
基于深度学习的图像着色算法研究与实现

评价指标

Inception Score
全面解析Inception Score原理及其局限性
FID
Flop指标
六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步
如何评价GAN网络的好坏?IS(inception score)和FID(Fréchet Inception Distance
Code Inception-Score
Code
Code

書籍推薦

GAN:实战生成对抗网络:尚未找到電子版资源
https://download.csdn.net/download/livepoolgerres/10905092

论文推荐

想要使用GAN完成期望的学习任务,精致的网络设计和合适的目标函数必不可少,二者是实现较高performance的关键因素。
conditionalGAN:Image-to-Image Translation with Conditional Adversarial Networks

BEGAN:BEGAN: Boundary Equilibrium Generative Adversarial Networks

EBGAN:ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS

tripleGAN:分析了当前gan存在的问题,不过是两个参与者不能很好的共同收敛。于是提出加入一个第三者

Triple Generative Adversarial Nets

bayesianGAN:Bayesian GAN

stackGAN:为了提高分辨率,可以分两次生成,char-cnn-rnn,text to image GAN

StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks

cycle GAN:只需不配对数据即可,实现image to image 的转换
CycleGAN-TensorFlow
Tensorflow implementation of CycleGANs
CycleGAN-Torch
CycleGAN-Tensorflow-2
AttGAN-Tensorflow: AttGAN: Facial Attribute Editing by Only Changing What You Want
比CycleGAN更强的非监督GAN----DistanceGAN
Contrast GAN— 实现CycleGAN无法实现的“眼一瞎, 猫变狗”,“手一抖,单车变摩托”
CycleGAN-Zhihu
异父异母的三胞胎:CycleGAN, DiscoGAN, DualGAN
CycleGAN_Tensorlayer
CycleGAN原理及实验(TensorFlow)
生成对抗网络系列(x)——CVPR2018中的图像转化GAN
对偶学习的生成对抗网络 (DualGAN)
人工智能CycleGAN加注意力机制图像转换实现最先进图像到图像转换
cyclegan-qp
带你理解CycleGAN,并用TensorFlow轻松实现
用机器学习生成图片(下)CycleGAN和pix2pixHD

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

infoGAN:信息加入,比conditionalGAN厉害

InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

WGAN:接触GAN的都听说过~

Wasserstein Generative Adversarial Networks

f-GAN: f-GAN: 都是可以被规整到他的范式里面,厉害的吧

Training Generative Neural Samplers using Variational Divergence Minimization wgan

SeqGAN: 可以生成序列的GAN

Sequence Generative Adversarial Nets with Policy Gradient

LSGAN:Loss-Sensitive Generative Adversarial Networks on Lipschitz Densities

GAN Guides相关推荐

  1. 使用Jittor实现Conditional GAN

    Jittor实现Conditional GAN Generative Adversarial Nets(GAN)提出了一种新的方法来训练生成模型.然而,GAN对于要生成的图片缺少控制.Conditio ...

  2. 生成对抗网络(GAN)

    学习目标 目标 了解GAN的作用 说明GAN的训练过程 知道DCGAN的结构 应用 应用DCGAN模型实现手写数字的生成 5.1.1 GAN能做什么 GAN是非监督式学习的一种方法,在2014年被提出 ...

  3. 用于高保真自然图像合成的大规模GAN训练(Large Scale GAN Training For High Fidelity Natural Images)论文 pdf

    下载地址:https://u20150046.ctfile.com/fs/20150046-376632643 By Andrew Brock,Jeff Donahue,Karen Simonyan( ...

  4. 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了

    生成对抗神经网络(Generative Adversarial Nets,GAN)是一种深度学习的框架,它是通过一个相互对抗的过程来完成模型训练的.典型的GAN包含两个部分,一个是生成模型(Gener ...

  5. 基于生成对抗网络(GAN)的人脸变形(附链接) | CSDN博文精选

    扫码参与CSDN"原力计划" 翻译 | 张一豪 校对 | 吴金笛 来源 | 数据派THU *点击阅读原文,查看「CSDN原力计划」详细说明. 本文详细介绍了生成对抗网络(GAN)的 ...

  6. 数据不够,用GAN来凑!

    作者 | CV君 来源 | 我爱计算机视觉(ID:aicvml) 在计算机视觉领域,深度学习方法已全方位在各个方向获得突破,这从近几年CVPR 的论文即可看出. 但这往往需要大量的标注数据,比如最著明 ...

  7. BigBiGAN问世,“GAN父”都说酷的无监督表示学习模型有多优秀?

    作者 | Jeff Donahue.Karen Simonyan 译者 | Lucy.一一 出品 | AI开发者大本营(ID:rgznai100) 众所周知,对抗训练生成模型(GAN)在图像生成领域获 ...

  8. 基于GAN的图像水印去除器,效果堪比PS高手

    作者 | 李翔 转载自视说AI(ID:techtalkai) 简介:李翔,国内某互联网大厂AI民工,前携程酒店图像技术负责人,计算机视觉和深度学习重度爱好者,在ICCV和CVPR等会议上发表论文十余篇 ...

  9. 英伟达发布新型GAN,豹子秒变沙皮狗!| 技术头条

    作者 | 刘静 编译 | 李尔客 转自自图灵TOPIA(ID:turingtopia) 5月9日,英伟达首席研究科学家刘明宇在社交网站公布了其最新研究成果:一种新型的GAN,在测试期间只需几张示例图像 ...

最新文章

  1. macOS 10.12 Sierra 中文官网正式推出
  2. OAuth2.0的四种授权方式
  3. IE6 PNG 透明的方法
  4. oracle分区exchange,oracle 分区表exchange原理
  5. LaneAF | 利用Affinity Field聚类进行车道线实例分割
  6. mybatis逆向工程配置(MySQL和SQL server)
  7. C# MD5算法实现对文件校验
  8. OPPO a1刷机包下载_OPPOA1密码忘记了?来这里搞定
  9. Linux I2C 驱动实验
  10. Aatcc加速器市场现状及未来发展趋势
  11. 精彩正定 激情古城——2008中国.正定摄影艺术大展盛大开幕
  12. 常见浏览器对URL的长度限制
  13. Opencv 基础(三):使用OpenCV裁剪图像
  14. 32位/64位系统,jdk32位,64位,32/64位jdk编译出来的class和eclipse 32位和64位
  15. 【Linux】VMware使用 - 虚拟机克隆
  16. 4-tensorflow中张量的数学运算
  17. 解锁门禁系统新姿势--人脸识别智能门禁或成社区安全的“关键先生”
  18. kvm 验证-模拟字节码执行
  19. 又土又木到不土不木——《土力学原理十记》全笔记(修正版)
  20. 群晖NAS搭建web服务器,并发布公网可访问 3/4

热门文章

  1. 机器学习算法之贝叶斯算法 2、案例一:鸢尾花数据分类
  2. 设计模式(一):单例、工厂、原型、建造者、适配器
  3. excel单元格下拉选项怎么设置_excel同列不同行内容合并到一个单元格怎么办?...
  4. 神经网络十大算法有哪些,神经网络十大算法排名
  5. ORB算法与opencv实现
  6. DuplicateHandle用法
  7. 服务器机房排风系统图,机房新风系统和排风系统的方案设计方法-20210628031546.pdf-原创力文档...
  8. oracle 手机客户端_Oracle Client(客户端) 安装与配置
  9. c语言计算机二级常考点
  10. ie 运行 activex 时去掉警告提示