1. 对抗生成网络原理
在对抗生成网络出现之前,几乎没有什么图片能解决图像生成的问题,在GAN出现之后,这个问就能够被解决了,并在很多领域得到应用。比如,图像超清化,换脸,图像修复,图像变漫画,漫画变图像,给漫画上色等等,此外GAN还可以应用于深度学习数据的生成,达到数据增强的效果。
原理
-
动机
在GAN提出之前,深度学习在分类,检测等判别类问题上的进展很大,有各种各样可以提升网络效果的手段,如Dropout,Batch normalization,但是在生成类问题上确是止步不前的。
-
问题特点
生成模型是一个无中生有的模型,没有明确的指标衡量一个模型的好坏,也无法利用判别模型的诸多技术。而GAN在解决生成问题时则能借助判别模型的优势。
-
对抗哲学
以警察和骗子之间相爱相杀的对抗博弈关系为例,对于警察来说,目标是识破出骗子的行骗伎俩抓住越来越多的骗子,让骗子们无所遁形;而对于骗子来说,目标则是更新自己的行骗技巧能够瞒天过海以达到自己不可告人的目的。警察与骗子在这种道高一尺,魔高一丈,魔高一尺,道再高一尺的博弈过程中,二者的业务能力都得到了提高。
-
生成器和判别器
交替训练------道高一尺魔高一丈
- G的目标:生成一个仿真数据
- D的目标:判别一个样本是真实样本还是仿真样本
- 最终目标:得到一个好的G,生成的仿真数据D都判别不出来是假的,且D也是一个很好的判别器
2. 深度卷积对抗生成网络DCGAN
任务:从一个随机向量生成一个真实的图片
为了让模型能生成多张图像,给模型一个随机向量作为输入,每个随机向量对应一张图像
目标:生成一张真实图像
生成器G
- 输入:一个随机向量
- 输出:一张图像
判别器D
- 输入:一张图像
(真实的
/生成的
)
- 输出:图像是真实图像的概率
目标函数
算法描述:
- 随机初始化G和D的参数
- 在每个训练轮次中:
- 固定住G的参数,训练更新D的参数,目标是G生成的图像得低分,真实图像得高分
- 固定住D的参数,训练更新G的参数,目标是生成的图片经过D得高分
模型结构:
- 池化层层被卷积层替代
- D上使用strided convolutions
- G上使用反卷积
- G和D上等候使用batch normalization
- 帮助解决初始化差的问题
- 梯度传递到每一层,不会有梯度消失的问题
- BN不应用于输入层和输出层(实战经验)
- D上移除全连接层,使用global pooling
- G上除了输出层使用tanh外其他都用Relu(输出最后要
,激活函数输出有个范围会好一点)
- D上使用leakyRelu
3. 图像翻译Pix2Pix
任务:由一张图像生成一张新的图像,新图像内容与原图像类似,但表达形式完全不同,对应像素位置表达相同语义
要求:必须有配对的图像用于训练
目标:图像翻译
生成器G
- 输入:待翻译图像
- 输出:一张图像
判别器D
- 输入:图像对
或
- 输出:两张图像是否是一对的概率
模型结构:
- U-Net
图像翻译效果:
4. 无配对图像翻译CycleGAN
任务:对没有配对的图像也可以进行图像翻译
不要求数据必须是成对标记好的
目标:从非配对图像中学到转换
好的翻译能够把一个句子翻译过去再翻译回来
问题建模:
- 两个领域x,y
- 映射(生成器)G:x->y
- 映射(生成器)F:y->x
- 判别器Dx:区分x和F(y)--------F的判别器
- 判别器Dy:区分y和G(x)-------G的判别器
CycleGAN
损失函数:
- 两套GAN损失
- G和Dy:
- F和Dx:
- G和Dy:
- 一致性损失:
总损失函数:
目标函数:
CycleGAN为何会有效???
- 一致性损失约束降低了领域映射后的搜索空间,若没有一致性损失,域A中的一张图像可以映射到域B中任意一张图像,而一致性损失限制域A映射到B后的图像,还能映射回A中原图
网络细节:
网络效果:
5. 多领域图像翻译StarGAN
任务:只学习一个网络就可以进行多域转换,比如,只学习一个网络就可以给原图加上胡子,换个表情,加上头发,戴上眼镜
当面对多个领域之间的图像翻译时,以上模型存在的问题:
- 每个转换训练一个新模型
- 低效
- 模型中学到的新信息不能共享,效果有限
目标:训练一个模型,根据输入图像和不同领域的信息,生成不同领域分格的图
StarGAN
- 解决的是成对图像的问题
- G的输入添加目标领域信息
- D除了判断是否真实以外,还需要判别类别
- G和D训练时目标函数不同,G中多了图像重建loss
生成器G1
- 输入:待翻译原领域图像
和目标领域信息
- 输出:一张图像
生成器G2----原领域图像重建
- 输入:生成的目标领域图像
和原领域信息
- 输出:一张图像
判别器D
- 输入:图像对
或
- 输出:两张图像是否是一对的概率
目标函数:
GAN(G1+D)损失:
- D领域fake图像分类损失
- D领域real图像分类损失
- 原领域图像重建损失:
鉴别器D损失:
生成器G损失:
6. 文本生成图像Text2Img
数据
图像及其匹配的文字
模型结构:Conditional GAN
生成器G:
- 输入:随机向量
+文本编码
- 输出:图像
判别器D:
- 输入:生成图像
/真实图像
+文本编码
- 输出:图像是否真实+图像文本是否匹配
目标函数
技巧:
- 先将图像是否合理训练出来,再训练图像文本是否匹配
- 除了<假图,描述>和<真图,描述>之外,添加<真图,不匹配描述>
文本生成图像的效果: