Coding Skill目录下的所有Tutorials、Notes、Guides博客都会不定期迭代更新
GAN全称是Generator adversarial networks,中文是生成对抗网络,是一种生成式模型,无监督模型。
GAN的主要结构包括一个生成器G(Generator)和一个判别器D(Discriminator)。
Generator
定义一个模型(可以是任意可以输出图片的模型,比如最简单的全连接神经网络,又或者是反卷积网络等。)来作为生成器,输入需要一个n维度向量(使用随机生成的向量来作为输入即可,随机输入最好是满足常见的比如均值分布,高斯分布等。),输出为图片像素大小的图片。
Discrimnator
往往是常见的判别器,输入为图片,输出为图片的真伪便签。可以是任意的判别器模型,比如全连接,或者是包含卷积的神经网络。
生成式对抗网络模型综述
DCGAN介绍及原理
How to Train a GAN? Tips and tricks to make GANs work
Tip:之所以要训练k次判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够教好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新。
我们的目标是使用生成样本分布(绿色实线)去拟合真实的样本分布(黑色虚线),来达到生成以假乱真样本的目的。
可以看到在(a)状态处于最初始的状态的时候,生成器分布和真实分布区别较大,并且判别器判别出样本的概率不是很稳定,因此会先训练判别器来更好地分辨样本。
通过多次训练判别器来达到(b)样本状态,此时判别样本区分得非常显著和良好。然后再对生成器进行训练。
训练生成器之后达到(c)样本状态,此时生成器分布相比之前,逼近了真实样本分布。
经过多次反复训练迭代之后,最终希望能够达到(d)状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的(判别概率均为0.5)。也就是说我们这个时候就可以生成出非常真实的样本啦,目的达到。
GAN一开始提出来的时候,实际上针对于不同的情况也有存在着一些不足,后面也陆续提出了不同的GAN的变体来完善GAN。
通过一个判别器而不是直接使用损失函数来进行逼近,更能够自顶向下地把握全局的信息。比如在图片中,虽然都是相差几像素点,但是这个像素点的位置如果在不同地方,那么他们之间的差别可能就非常之大。
比如上图10中的两组生成样本,对应的目标为字体2,但是图中上面的两个样本虽然只相差一个像素点,但是这个像素点对于全局的影响是比较大的,但是单纯地去使用使用损失函数来判断都是相差一个像素点,而下面的两个虽然相差了六个像素点的差距(粉色部分的像素点为误差),但是实际上对于整体的判断来说,是没有太大影响的。
但是使用损失函数的话,却会得到6个像素点的差距,比上面的两幅图差别更大。而如果使用判别器,则可以更好地判别出这种情况(不会拘束于具体像素的差距)。
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:
图像合成
图像合成这个任务是通过__某种形式的图像描述__创建新图像的过程。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的高赞文章。
图像域的转换
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
[你的侧脸泄露了太多信息,中科院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