cgan,stackgan,lapgan,cyclegan,pix2pixgan
- 1.Conditional GAN
- 1.1简介
- 1.2网络结构与训练
- 1.3特点与用途
- 2.Stack GAN
- 2.1简介
- 2.2网络结构与训练
- 2.3特点与用途
- 3.Lap GAN
- 3.1简介
- 3.2网络结构与训练
- 3.3特点与用途
- 4.Pix2pix GAN
- 4.1 简介
- 4.2 网络结构和训练
- 4.3 特点和用途
- 5.Patch GAN
- 6.Cycle GAN
- 6.1简介
- 6.2网络结构与训练
- 6.3特点与用途
- 7.思考与待定
题记–如何生成高质量图像,gan相关模型调研
1.基于散度距离的改进方案:f GAN, LSGAN, WGAN, WGAN-GP, SNGAN
2.基于网络结构的改进方案:DCGAN, ImprovedDCGAN, SAGAN, BigGAN
3.由应用引发的改进方案:Conditional GAN, TripleGAN, StackGAN, LapGAN,PGGAN, SRGAN, CycleGAN,StarGAN
4.GAN在特征提取上的应用:InfoGAN,VAEGAN,BigGAN
1.Conditional GAN
Generative Adversarial Text to Image Synthesis [ICML 2016,http://arxiv.org/abs/1605.05396]
1.1简介
论文:
条件GAN–生成的数据不仅要求逼真,还要求满足一定的条件约束
文字约束–一只在奔跑的小狗;
图像约束–生成图像的框架轮廓约束,生成器就好像在轮廓的基础上填充了颜色,绘制细节;
1.2网络结构与训练
生成网络增加了条件输入;
判别网络用于判别生成的图像与条件是否匹配,因此其需要三种类型的匹配对(生成图像,匹配条件)(真实图像,匹配条件)(真实图像,不匹配条件);
训练流程
1.3特点与用途
1.能生成符合条件的图像,但是现有数据集合成pair出现的很少;TripleGAN是基于 CGAN 的改进,主要用于解决配对数据少的问题,会训练一个图像标注模型。
2.不能生成大分辨率的高清图,图像细节缺失;StackGAN 也是基于 CGAN 的改进,它主要想C-GAN无法生成高清图的问题。
3.有一个观点:CGAN可以避免所有的随机噪声很产生相同的样本(模式坍塌问题),不同的条件,可以产生不同的图。
**思考:**条件要是文字形式的,会涉及到NLP,文字的表示方式;条件如果是图像,就是img2img的问题,类似于上色,填充简单细节。
参考博文:https://blog.csdn.net/taoyafan/article/details/81229466
2.Stack GAN
2.1简介
StackGAN 希望输入一个描述语 c,能够产生一张 256256 的清晰大图。通过两个阶段堆叠来实现这个过程。
第一个阶段输入(c,z)产生一个 6464 的小图x,
第二个节点输入(c,x)产生一个256*256的大图X
2.2网络结构与训练
由结构图可见,对于获得的 text_embedding,stackGAN 没有直接将 embedding 作为
condition,而是用 embedding 接了一个 FC 层得到了一个正态分布的均值和方差,然后从
这个正态分布中 采样 出来要用的 condition。这样做实际是做了一个降维处理,避免原始embeding高维稀疏,导致模型过拟合。(为了避免过拟合在生成器的loss上增加了一个正太分布的正则项)
两个阶段的损失函数为:
2.3特点与用途
1.Conditioning Augmentation(CA) 条件增强技术
2.StackGAN 不能处理比较复杂的文本,李飞飞小组提出方法能处理更长更复杂的文本,并且有不错的生成效果,论文地址:https://arxiv.org/abs/1804.01622。
思考:
1.要有同一张图像的6464,256256大小的真图。
2.感觉就像是两个Conditional GAN 简单的堆叠在一起,多增加了一个CA技术;
3.不要condition,直接级连的效果是不是等价于生成网络层数加深?设计合适的级连结构,应该能够生成合适大小的图像才对呀?尝试级连生成大分辨率的工作,在相关工作中应爱会介绍
参考博文:https://blog.csdn.net/a312863063/article/details/83574422
3.Lap GAN
3.1简介
生成高分辨率图像GAN模型的典型代表,利用拉普拉斯金字塔,由低分辨率生成高分辨图像。金字塔的每一层都是一个C-GAN,其中下一级图像的上采样图作为G的条件,生成本级真实图像与上采样图像的残差。
3.2网络结构与训练
采样流程图,自右向左分析
训练流程,自右向左分析
3.3特点与用途
1.能生成较高分辨率的图像,但是更高分辨率的图像可能使用PGGAN,或者超分辨率GAN效果会更好一些。
2.实际都是C-GAN 的堆叠,只是G的条件是上采样的图,生成真图和上采样的残差。
参考博文:https://zhuanlan.zhihu.com/p/94153155
4.Pix2pix GAN
4.1 简介
从风格迁移说起:在深度学习兴起后,16年有篇cvpr文章使用深度卷积网络做风格迁移。随着GAN网络研究热潮,人们开始研究使用gan 网络做风格迁移。以下五个是比较典型风格迁移的工作。
pix2pix GAN (1611),CycleGAN (1703),DiscoGAN (1703),PAN( Perceptual Adversarial Networks)感知GAN (1706),StarGAN (1711)
pix2pix GAN 和 cycle GAN是同以作者,两篇递进式的工作。
pix2pix GAN工作出自Image-to-Image Translation with Conditional Adversarial Networks,实质还是用CGAN来做图像转换工作。
4.2 网络结构和训练
pix2pix gan 生成器和判别器的工作结构
pix2pix gan 损失函数,L1是True黑与生成黑的像素间l1范数距离。
4.3 特点和用途
1.pix2pix 主要做了G网络结构的探索:Encoder-decoder 结构和U-net结构,图像patch的操作
2.实质还是用CGAN来做图像转换工作。
参考博文:https://blog.csdn.net/on2way/article/details/78768221
5.Patch GAN
主要对判别网络做了改进,D输出N*N的矩阵,每个元素为True/False,表示输入图像中的感受野的真假。
思考:标签该怎么打?真实图像给一个NN的True块,生成图像给一个NN的False块?
主要是patch 操作?和pix2pix gan 中的patch有什么异同。
参考博文:https://blog.csdn.net/xiaoxifei/article/details/86506955
https://blog.csdn.net/weixin_35576881/article/details/88058040
6.Cycle GAN
6.1简介
用原始GAN结构在生成网络层数较深时,可能生成与输入差别较大的图像,就不是风格迁移,而是改头换面, 忽略了输入图像长什么样子。
为了防止生成器学习到具有欺骗性的造假数据,需要保证生成器的输出和原图具有很高的相似性,就可以不丢失原图的特征。
于是 CycleGAN 中加入了一个新的生成器,以第一个生成器的输出作为输入,希望输出一个和原始输入尽可能相似的图。如果能够还原回原始图片,可以表明第一个生成器的输出保留了大量原始图片的特征,输出结果是较为可靠的;而如果不能较好的还原回原始图片,意味着第一个生成器输出与输入差别较大。
6.2网络结构与训练
单向cycle gan
双向cycle gan(很多博文中都是这个结构)
6.3特点与用途
1.用来做风格迁移,在pix2pi的基础上不需要pair的训练样本。
2.CycleGAN 存在一种问题,是它能学会把输入的某些部分藏起来,然后在输出的时候再还原回来。比较好理解,隐藏掉一些破坏风格相似性的“坏点”会更容易获得判别器的高分。
思考:如何用实现图像分辨率扩大的功能?
参考博文:https://blog.csdn.net/on2way/article/details/78768221
7.思考与待定
做高分辨率的实验
1.cycle gan 似乎不是天生用来做分辨率变高的实验的。
2.直接使用stack GAN,梯度信息传不到前面–两个生成器具分开训练
3.CGAN的公式推导,如何与stein 变分合在一起–基本没啥好推导的。
4.直接级连不需要条件的GAN–基本上没有看到相关的文章
5.srgan 官网上提供了训练好的超分辨率模型,可以尝试一些图像的超分辨率生成。但如果原图是一团看不清的东西,基本也不了什么。
6.两个网络堆叠:两个网络同时训练的比两个网络分开训练难训。改造了stack gan stage2 的GAN模型(去除条件输入)堆叠模型在object101-airplane上表现好不错,但是在cifar上的效果还是基本看不出来画的是什么。
pg-gan,info gan 还没有看多