喵咪制造机:生成式对抗网络的花式画喵大法

简介:


image


2012年,吴恩达和Jeff Dean用Google Brain的1.6万个CPU所打造的大型神经网络,在被1000万YouTube视频中的猫图像训练三天后,自己画出了一张模糊的猫脸图。这是普通公众第一次领略到深度学习的威力。

而后随着AlphaGo在围棋上先后虐杀人类冠军李世石、柯洁,公众对深度学习和人工智能的热情更胜以往。不过,神经网络自己画猫的技术,有没有随之进步呢?

image


最近,一位在医院工作的猫奴生物统计学家Alexia,使用最新的生成式对抗网络GAN来测试深度学习的画猫技术。相比吴恩达三天才能画出来的猫,GAN的新方法仅用几个小时就能搞定,画出来猫咪也好看很多。这里的新方法在细节上有何特点呢?我们仔细来看作者Alexia的点评。

作者 | Alexia Jolicoeur-Martineau
译者 | AI科技大本营(rgznai100)
参与 | 智子,波波

我试验用生成对抗网络来生成猫脸的各种图片。针对不同的分辨率,我采用了几种不同的方法,包括DCGAN、WGAN与WGAN-GP,训练样本源自一个有着上万张猫图的图片库。我找的是那些猫脸处在正中的图片(用人眼生看,花了我好几个小时……说起来都是泪),共有9304张分辨率大于64x64的图片,以及6445张分辨率大于128x128的图片。

DCGAN

DCGAN可以很好的收敛,只用了209次迭代,大概两三个小时,就产生了非常有真实感的图片。但是需要进行一些调整才能达到这个效果。众所周知,GAN的生成器和判别器必须势均力敌,才能产生良好的效果。我的DCGAN对生成器和判别器分别设定了不同的学习速率,这样才使得二者势均力敌,从而能得出很好的效果。当处理64x64的图片的时候,最好的判别器的学习速率是0.00005,生成器的速率是0.0002。如下图所示,没有产生模式坍塌(mode collapse)。图片漂亮吧!

image


高分辨率的 DCGAN和SELU

但上述办法用来处理128x128的图片,就会失效。但是,我用SeLUs替换了batch归一化和ReLus,在学习速率保持不变的情况下,也取得了一定的效果。只不过过程非常慢,大概要用6个多小时。SeLUs是自归一的,因此就不需要用batch归一化了。SeLU才刚诞生不久,所以基本上在GAN上没有什么深入的研究。不过据我观察,SeLU极大的提高了GAN的稳定性。这次生成的猫不像上次的那么漂亮,并且有很多黑猫长的差不多,明显地产生了“多样性缺失”现象。这也很好解释,因为这次是在6445个大于128x128的图片上训练,而上次是在9304个图片上训练,训练数据少了不少。不过,这次有些猫也相当好看,清晰度比原来的高,所以我仍然觉得这次也是成功的。

论文地址
https://arxiv.org/abs/1706.02515

image


WGAN

WGAN收敛的很慢,大概用了四五个小时,600多次迭代。并且只在64个隐层神经元成功了。128个神经元的时候失败了。对DCGAN,虽然要调整学习速率,但是一旦调整了,你马上能看到效果。对WGAN,很难马上看到效果,只有让网络多跑几个迭代,才能看到效果。

观察图片的话,有非常明显的模式坍塌(mode collapse)。还有很多猫有异盲证,一些猫一只眼睁着,一个眼闭着;还有一些猫鼻子畸形。总体上看,WGAN的效果不如DCGAN。但是也许是因为我用的神经网络的结构太简单,所以不好在二者之间做明确的判断,哪个更好。还有,WGAN似乎陷入了局部最优。到目前为止,WGAN还是令我有点失望。

WGAN-GP是WGAN的改进版本,也许能够解决上面的问题。2017年的Gulrajani等人发表的论文中,提到他们能训练101层的神经网络。所以也许我的用5层128个神经元的方法生成猫的方法有问题。亚当优化器(Adam optimizer)也能降低种类坍塌和局部最优的风险。很可能这个能够解决这些问题,因为WGAN没用而DCGAN和WGAN-GP都用了亚当优化。

image


WGAN-GP (改进的WGAN)

WGAN-GP的生成器收敛的非常慢,大概在六个小时以上。但是它的好处是不需要调整任何超参。比如,可以任意调整学习速率,调大或者调小,都不会造成任何问题。这一点上,WGAN-GP用起来很舒心,不像其他算法调整超参那么辛苦。

论文地址
https://arxiv.org/abs/1704.00028

而且该方法生成的猫的种类和样式非常多,没有明显的模式坍塌(mode collapse)。这是对WGAN的的一个主要的改进。另一方面,图片有点模糊不清,好像是低分辨率的图片又被放大了一倍。我也不确定具体的原因,可能是Wasserstein距离的导致的。我觉得可以使用不同的学习速率和网络结构优化结果。这需要做更进一步的研究,但我确信这里有很大的提高空间。

image


LSGAN (最小二乘 GAN)

LSGAN和前面几个方法不同。LSGAN用最小二乘法来最小化判别器的输出和真实结果差值。该方法的推荐设置为:在判别器端,用1表示真实图像,0表示假的图像;在生成器端,用1表示假的图像。2017年Hejlm等人在论文中又提出了新的建议:在判别器端,1表示真实图像,0表示假的图像;但是在生成器端,用0.5表示假的图像。

论文地址
https://arxiv.org/pdf/1702.08431.pdf

我现在还没有时间全面研究这个方法。但是看起来,这个方法非常稳定,并且生成的图片中的猫也很漂亮。虽然该方法通常挺稳定的,但是有一次,出现了梯度爆炸,最后生成的结果嘛也不是。下图展示了第31和32次迭代的结果:

image
image


所以该方法也不是百分百的稳定,不稳定的时候结果还非常糟糕。对Adam优化器选择一个较好的超参可以有效阻止该问题的发生。该方法的优点是不用像DCGAN那样调整学习速率,并且不发生问题的时候(发生问题的概率还是很低的),结果还是很不错的,猫的图片也很漂亮。

xudong mao是LSGAN的提出者。他发给了我用LSGAN生成的128x128的猫的图片,如下图所示。可以看到,该方法也可以生成和DCGAN一样质量的图片。

image


我的代码放在GitHub上,愿者自取。

代码地址
https://github.com/AlexiaJM/Deep-learning-with-cats

来源: AI科技大本营
原文链接

目录
相关文章
|
6月前
|
网络协议 容灾 NoSQL
阿里云DTS踩坑经验分享系列|网络问题排查大法
在DTS的所有用户问题中,网络问题出现的概率居高不下,很大程度上是由于DTS的链路复杂性,从源数据库到DTS再从DTS到目的数据库,任意的一个部位发生网络不通、网络质量问题都有可能导致DTS任务的中断,或者延迟。本文希望以一种最简单的模型,简述DTS网络不通问题的排查方法,并给出一些简单的验证思路及手段,排查方向对了才能事半功倍。
109124 3
阿里云DTS踩坑经验分享系列|网络问题排查大法
|
11月前
|
机器学习/深度学习 算法 TensorFlow
轻量级的对抗生成网络库
轻量级的对抗生成网络库
93 1
|
6月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【Keras+计算机视觉+Tensorflow】DCGAN对抗生成网络在MNIST手写数据集上实战(附源码和数据集 超详细)
【Keras+计算机视觉+Tensorflow】DCGAN对抗生成网络在MNIST手写数据集上实战(附源码和数据集 超详细)
123 0
|
6月前
|
机器学习/深度学习 编解码 TensorFlow
【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)
【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)
153 0
|
机器学习/深度学习 编解码 自然语言处理
深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决
深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决
深度学习进阶篇[9]:对抗生成网络GANs综述、代表变体模型、训练策略、GAN在计算机视觉应用和常见数据集介绍,以及前沿问题解决
|
机器学习/深度学习 编解码 人工智能
NeuraIPS 2022 | 最新类别感知对抗Transformer分割网络CASTformer
NeuraIPS 2022 | 最新类别感知对抗Transformer分割网络CASTformer
268 0
|
机器学习/深度学习 编解码 异构计算
Text to image论文精读 StackGAN++: Realistic Image Synthesis with Stacked GAN(具有堆叠式生成对抗网络的逼真的图像合成)
这篇文章主要工作是:将原先的Stack GAN的两阶段的堆叠结构改为了树状结构。包含有多个生成器和判别器,它们的分布像一棵树的结构一样,并且每个生成器产生的样本分辨率不一样。另外对网络结构也进行了改进。 文章被2017年ICCV(International Conference on Computer Vision)会议录取。 论文地址: https://arxiv.org/pdf/1710.10916v3.pdf 代码地址: https://github.com/hanzhanggit/StackGAN-v2
Text to image论文精读 StackGAN++: Realistic Image Synthesis with Stacked GAN(具有堆叠式生成对抗网络的逼真的图像合成)
|
机器学习/深度学习 编解码 计算机视觉
Text to image论文精读 StackGAN:Text to Photo-realistic Image Synthesis with Stacked GAN具有堆叠生成对抗网络文本到图像合成
本篇文章提出了叠加生成对抗网络(StackGAN)与条件增强,用于从文本合成现实图像,被2017年ICCV(International Conference on Computer Vision)会议录取。 论文地址: https://arxiv.org/pdf/1612.03242.pdf 代码地址: https://github.com/hanzhanggit/StackGAN 本篇是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。
Text to image论文精读 StackGAN:Text to Photo-realistic Image Synthesis with Stacked GAN具有堆叠生成对抗网络文本到图像合成
|
移动开发 算法 算法框架/工具
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
|
机器学习/深度学习 算法 Java
GAN对抗网络入门教程
A Beginner's Guide to Generative Adversarial Networks (GANs) https://skymind.ai/wiki/generative-adversarial-network-gan
425 0
GAN对抗网络入门教程

热门文章

最新文章