#申请原创#
GAN 是什么?:Generative Adversarial Network 我们可以这样定义:“对抗生成网络(GAN)是一种深度学习模型,模型通过框架中至少两个框架:生成模型和判别模型的互相博弈以学习产生好的输出。” 当然这么说略显抽象,我们不如来看一个有趣的例子: 当爱德华·蒙克碰撞上现实生活中骑车的行人,会产生怎样的火花呢?
(该图片来自大名鼎鼎的风格迁移开创论文: Image Style Transfer Using Convolutional Neural Networks) 怎么样,效果还不错吧?对抗生成网络在其中就起到了不可忽视的作用。 那就让我们进一步了解神奇的生成对抗网络吧。 GAN 的应用:图像生成,超分辨率任务,图像转化等;当然也可以应用到数据增强方面,对于小数据集,生成数据打上标签能提高训练效果。 下面是一个图像转化的例子:将风景画和油画互相转化,斑马和马互相转化,多天和夏天互相转化,是不是很有趣呢?
(图片来源于论文Deep photo style transfer) GAN 的框架:对抗生成网络由生成模型(Generative Model)和判别模型(Discriminative Model)构成,判别模型接受输入,通过模型来判别该输入的类别;而生成模型是给定某种隐含信息,随机产生噪声或者说观测数据。 当然这么说显得有些抽象,我们以图像生成为例:假设我们构建了两个网络,分别是生成模型G和判别模型D。 G接受一个随机的噪声Z,通过噪声生成图像G(Z)。 D接受输入图片P,输出D(P),D(P)是一个在0-1之间的数,代表判别模型认为输入的图片P有多大的概率为真实的图片,如果为0,就是说判别模型认为该图片一眼假,相反,如果概率为1,则代表该图片相当真实。 所谓的训练过程,其实就是生成网络G去生成尽可能真实的图片去“欺骗”判别网络D,而D的目标就是尽可能的区分真实和虚假,最后两者到达动态的平和的时候,生成网络G就可以生成以假乱真的图片了。 GAN应用风格迁移:在最一开始那个呐喊的例子中,人类骑行的图像通过组合风格迁移出现在了组合图像中。那么问题是,我们是怎样从内容图像之中提取内容,从样式图像之中提取纹理的呢? 而这就是CNN擅长的地方了:CNN第一层提取边缘,第二层提取纹理,高层提取高语义概念。所以,现在我们大致了解了如何使用预处理过的cnn来帮助提取模式,纹理和内容。但是我们如何构建由这两种不同表现形式组成的新形象呢?这个问题可以表述为:我们如何构建新的图像,使它的内容与内容图像没有太大的区别,并且新生成的图像的风格在风格图像的风格和纹理上没有太大的区别。这就需要借助损失函数来定义了。如下图所示,计算了每一层的损失。
训练机制包括一个输入的内容图像批处理,其中ITN将其转换为仿作图像,损失网络使用预先训练的VGG16计算损失,并向后调用最终损失来更新ITN参数。损耗网络在训练过程中保持固定。
最后效果展示:
|