#16 那些没被玩坏的GAN—用条件对抗网络实现”图片到图片”的通用风格转换

AI的进步是不断为机器赋能: “深蓝”时代机器有了暴力搜索能力, “数据”时代有了依靠数据建模的能力, 甚至用GAN自动寻找目标函数.  下一个时代, 会不会是一个数据和模型泛滥, 机器自我寻找数据和创造模型的时代 ? — David 9

之前伯克利人工智能研究实验室(Berkeley Artificial Intelligence Research (BAIR) Lab)在Arxiv上放出的论文: Image-to-Image Translation with Conditional Adversarial Networks , 又把图片风格转换玩了一把:

来自: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
图片到图片风格转换示例—马匹变斑马 来自: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

如今, 想把GAN(生成对抗网络)训练出来并且不玩坏, 已经很了不起, 而这篇文章提出通用的框架用于”图片到图片”的风格转换.  加之投稿即将举办的cvpr 2017 , 又出自伯克利之手, 引来了不少目光.

条件对抗网络cGAN进行图片风格转换已经不是新鲜事, 继续阅读#16 那些没被玩坏的GAN—用条件对抗网络实现”图片到图片”的通用风格转换

#11 基于能量模型的生成对抗网络–生成对抗网络进阶

在文章“手把手教你写一个生成对抗网络”中,我们谈到过生成对抗网络。意犹未尽的是,只是了解生成对抗网络的基本原理和算法形式,对于训练结果还没有仔细研究。

最近拜读了机器学习四大神之一Yann LeCun (燕乐存 目前在facebook就职) 今年发表的论文“ENERGY-BASED GENERATIVE ADVERSARIAL NETWORK”。基于能量模型的生成对抗网络,训练结果真的很不错。不像一般的生成网络,生成的图片像素随机性大,字体边界模糊。看下图论文在MNIST集上的比较:

来自:论文 ENERGY-BASED GENERATIVE ADVERSARIAL NETWORK
来自:论文 ENERGY-BASED GENERATIVE ADVERSARIAL NETWORK

左边是一般GAN(生成对抗网络)的生成数字, 右边就是论文的改进EBGAN(基于能量的生成对抗网络)。可以很明显地看出,改进的生成数字比较清晰,连接也比较流畅 。传统GAN生成的数字就比较模糊,像素连贯性较差继续阅读#11 基于能量模型的生成对抗网络–生成对抗网络进阶

手把手教你写一个生成对抗网络 — 生成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy)

今天我们接着上一讲“#9 生成对抗网络101 终极入门与通俗解析”, 手把手教你写一个生成对抗网络。参考代码是:https://github.com/AYLIEN/gan-intro

关键python库: TensorFlow, numpy, matplotlib, scipy

我们上次讲过,生成对抗网络同时训练两个模型, 叫做生成器判断器. 生成器竭尽全力模仿真实分布生成数据; 判断器竭尽全力区分出真实样本和生成器生成的模仿样本. 直到判断器无法区分出真实样本和模仿样本为止.

out
来自:http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/

上图是一个生成对抗网络的训练过程,我们所要讲解的代码就是要实现这样的训练过程。
其中, 绿色线的分布是一个高斯分布(真实分布),期望和方差都是固定值,所以分布稳定。红色线的分布是生成器分布,他在训练过程中与判断器对抗,不断改变分布模仿绿色线高斯分布. 整个过程不断模仿绿色线蓝色线的分布就是判断器,约定为, 概率密度越高, 认为真实数据的可能性越大. 可以看到蓝线在真实数据期望4的地方,蓝色线概率密度越来越小, 即, 判断器难区分出生成器和判断器. 继续阅读手把手教你写一个生成对抗网络 — 生成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy)

#9 生成对抗网络101 终极入门与通俗解析

我们能生成/创造我们的真实世界,才能说明我们是完完全全理解了它

David 9 要写一期生成对抗网络。

实在是因为,

第一:对抗网络最近太火了。第二:  生成模型太有意思了。让计算机自己去创造东西,不再是科幻!(有用过Prisma的朋友一定体验过)。没体验过的可以瞧瞧这篇文章:”关于Prisma:那些你知道的和不知道的

生成模型通过训练大量数据, 学习自身模型, 最后通过自身模型产生逼近真实分布的模拟分布. 用这个宝贵的”分布”生成新的数据. 因此, 判别模型的目标是得到关于 的分布 P(y|X), 而生成模型的侧重是得到关于X分布 P(y, X) 或 P(x|y)P(y). 即, 判别模型的目标是给定一张图片, 请告诉我这是”长颈鹿”还是”斑马”, 而, 生成模型的目标是告诉你词语: “长颈鹿”, 请生成一张画有”长颈鹿”的图片吧~ 下面这张图片来自slideshare 可以说明问题:

http://www.slideshare.net/shaochuan/spatially-coherent-latent-topic-model-for-concurrent-object
来自: http://www.slideshare.net/shaochuan/spatially-coherent-latent-topic-model-for-concurrent-object

所以, 生成模型可以从大量数据中生成你从未见过的, 但是符合条件的样本.

难怪, 我们可以调教神经网络, 让他的画风和梵高一样. 最后输入一张图片, 它会输出模拟梵高画风的这张图片的油画.

言归正传, 为啥对抗网络在生成模型中受到追捧 ? 生成对抗网络最近为啥这么火 , 到底好在哪里? 

那就必须谈到生成对抗网络和一般生成模型的区别了. 继续阅读#9 生成对抗网络101 终极入门与通俗解析