怎样用GAN生成各种胖吉猫?谷歌大脑程序员教你撩妹神技

圆栗子 编译整理 量子位 报道 | 公众号 QbitAI

如果,AI可以帮你生成一些猫,很萌的那种,但是不能吸,你会做何感想?

Facebook聊天框里出道的灰色短毛猫Pusheen,是柔软的微胖界宠儿,中文名字叫胖吉。

一个来自谷歌大脑的程序猿说,他和他妹子都很喜欢这只胖子。于是,他有了用AI帮妹子生出很多很多小吉 (的图片) 的想法。 

“其实就是有了眼睛和耳朵的水滴”

当然,并不只是想想而已。

一切从这里BEGAN

生成对抗网络 (GAN) 是精分的AI,由两个神经网络组成,一是生成模型 (Generator) ,即画师,二是判别模型 (Discriminator) ,即鉴赏家。缩略为G和D。

人类要用大量的图像来喂养GAN,培养两个神经网络的艺术细菌。

先把食物对成山?

然后,G可以在熏陶之下,模仿着画出自己的作品,让D以为那就是人类投喂的画;而D渐渐了解自己吃过的画是什么味道,就能辨别哪些图是G画的。

相爱相杀的日子里,两者技能都会得到有效提升。G的画功越来越像人类,D也越来越难骗。

不过,技术宅支配的不是普通的GAN,而是名为BEGAN的新朋友。

结构和EBGAN差不多

它的判别模型是自编码器 (AutoEncoder) 结构,即D的输入是图像,输出是编码解码后的图像;生成模型则借鉴了WGAN的损失函数。

不过,GAN的一生阅片无数,通常需要喂食几万乃至几百万张图像,才能茁壮成长。

可惜的是,虽然贵为表情包,胖吉也没有很多照片的。

尊贵的座驾

于是,机智的少年加了一个 (并不厉害的) 小特技,一幅图翻过来掉过去,或放大或缩小,或背景变白,就变出了很多训练素材。不过,毕竟原始图库几百张,扩充之后可能还是有些干瘪。

我有特别的模仿技巧

既然胖吉的姿势不多,场景也不多,技术宅当时就没有太大的幻想。他抱着养死也没事的一颗宽广的心,开始训练BEGAN。

训练过程中,D的目标是让判别错误越少越好;G的目标,是让D错得越多越好。具体来说——

一张图片相当于一个数据x,D对它编码解码后得到图像D(x)。

z是一串随机数组成的向量 (Latent Vector) ,G根据它来生成的图可表示为g(z),D对它编码解码后得到图像D(g(z))。

我说的模仿,不是cosplay

随着训练的进行,G的模仿能力越来越强,D(g(z))会越来越接近D(x)的分布。

不过,BEGAN在对比D(g(z))和D(x)之间差异的时候,用的损失函数 (Loss Function) 有些不一样。

让G作品的重构误差 (Reconstruction Error) 分布,去逼近人类作品的重构误差分布——BEGAN的损失函数使用的是这两者之间的差异。Wasserstein距离,可以把这个差异转换为真实的差异。

可能有惊喜的play

卖家秀之Model 1

技术宅用3个数字组成的向量,来表示图片。他还给吃瓜党提供了自己调整向量的play——

每个角上的图像都可以自行设定,作为起点。从四角出发,生成的其他图,便是灰猫的渐变修养。

这个过程里,多多少少会有可爱的新胖吉出现。当然,生成效果并没有那么完美,畸形猫和看不出喵型的图像也理直气壮地存在。

三只耳朵怎么样

程序猿友情提示,如果想少看一些畸形猫,就尽量把数字调小一些。数大了之后,容易有斑斓的色彩倾泻出来,让你忘了画猫的初衷。

不过那样的话,猫的样子也很难有丰富的变化,可能会比较单调

有种听天由命的感觉

不想费力调向量的话,就点下一键生成按钮 (如上图) ,看到比渐变过程更随机的猫阵。

为了能让浏览器对面的大家感受到猫阵的厉害,程序猿还特意用TensorFlow.js重写了程序 (怕不是想增加撒狗粮的力度吧) 。

单身使我快乐

在少年提供的三个模型里,我喜欢Model 2的效果,笔触比较圆润,配色似乎也可爱一些。

技术要领探讨一下

从WGAN那里借来的损失函数,帮BEGAN保证了两个模型的势均力敌,D和G想要赢对方都不那么容易。

来亚,负相桑害亚

程序猿说,不久以后就会公布自己生成胖吉用的代码,但在那之前他想先给大家划个重点。此次实验过程中发挥最好的结构和超参数如下——

· 激活函数用了带泄露整流函数 (leaky ReLU) ,alpha=2 · 批量归一化 · G,步长为1的卷积层之后,近邻 (Nearest Neighbor) 算法缩放图像两次 · D,步长为1的卷积层之后,2 x 2窗口的平均池化 (Average Pooling) · D,每层32或64个过滤器 · G,开始每层32或64个过滤器,后面依次翻倍 (e.g, 32,32,32,64,64,64,128,128,128…) · 100维的潜在空间 · 学习率e-4或5e-4或e-3

视频内容

视频是训练过程,可以看到AI一开始画的图很简单,灰疙瘩而已。后面元素就慢慢多起来了,耳朵、尾巴、五官,甚至还有吃的和玩的。

不过,少年也说了,有些模型mode collapse的迹象比较明显,作品没什么新意。他觉得一部分原因可能是,用略显稚嫩的方法扩充的数据集,掩饰不住匮乏的本质。BEGAN从小就没吃饱吧。

明明今天上午,吃了五碗面

再有,在模型取舍上,是选单调但能生产完整胖吉的模型,还是选天马行空多姿多彩但日常画出畸形猫的模型?当事人还是倾向于后者。

如果这都不算爱

少年果然有双发现美的眼睛,给自家AI的作品 (强行) 划归了多个不同的系列。

比如,戏水吉。

比如,玩火吉。

比如,绿林吉。

比如,飞天吉。

比如,连体吉。

另外,程序猿还做了加减play,他说虽然效果不太明显,但结果还是合理的。你看——

友好解读是,吃taco的左歪猫 - 左歪猫 + 被绳牵着的右歪猫 = 吃小taco且被绳牵着的右歪猫。

好吧,我信了。

比起BEGAN论文里生成人脸的整容技能,胖吉的举一反三可能只是小打小闹。

但不管怎么看,这也是表情包和TensorFlow.js的正确打开方式了,至少可以让妹子开心啊。

回头想想那个要举着手机、在办公室里到处寻觅表情包本体的游戏,不被当成 (hen) (tai) 也很难啊。

警察叔叔,就是他

没有对比就没有伤害。所以,传送门也要放在一起。

这是胖吉变变变试玩地址: http://zna.do/pusheen

这是寻找表情包试玩地址: https://emojiscavengerhunt.withgoogle.com/

P.S. 程序猿的名字叫Zachary Nado,进入谷歌大脑之前,他还在发射成瘾的SpaceX工作过。那么,为什么要在结尾多介绍一次呢?因为小卷毛还是有点可爱。

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2018-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

小二,来一份机器学习书单!

编者注:澳大利亚机器学习专家、畅销书作者 Jason Brownlee,对机器学习领域的各类优质书籍进行了盘点,汇总成这份阅读指南。在 AI 研习社所筛选的学...

51850
来自专栏大数据文摘

斯坦福大学怎样讲“情感分析”

18030
来自专栏大数据文摘

数学之美:两点之间最快的路径

19190
来自专栏大数据挖掘DT机器学习

【趣味】数据挖掘(6)——借水浒传故事,释决策树思路

决策树 (又称判定树,Decision Tree)是硕、博士生数据挖掘课程要点和难点,教学实践表明,这一章需要数学基础知识多,难得有趣。明知是难点,偏向难...

36550
来自专栏机器之心

机器之心「GMIS 2017」嘉宾揭秘:LSTM之父Jürgen Schmidhuber

2017 全球机器智能峰会(GMIS 2017),让我们近距离接触「LSTM 之父」Jürgen Schmidhuber。 2017 全球机器智能峰会(GMIS...

32580
来自专栏PPV课数据科学社区

【经典】数据科学家教你用数据模型来恋爱

男生和女生分别是来自不同星球的科学事实已经众所周知的了.男生们总是认为,女生们都是迷一样的生物,他们的情感状态浮动似乎是以秒单位在变化的,难以理解,更勿论预测了...

26040
来自专栏CSDN技术头条

大数据专家教你用数据模型来找女朋友

男生和女生分别是来自不同星球的科学事实已经众所周知的了.男生们总是认为,女生们都是迷一样的生物,他们的情感状态浮动似乎是以秒单位在变化的,难以理解,更勿论预测了...

26290
来自专栏SIGAI学习与实践平台

理解计算-从根号2到AlphaGo 第4季 凛冬将至

在新中国诞生的那一年,加拿大生理学家唐纳德﹒赫布(Donald O. Hebb)出版了《行为的组织》 (《The Organization of Behavio...

9420
来自专栏新智元

褚达晨:深度学习青衫磊落险峰行,人工智能漫谈之一

【新智元导读】作者褚达晨认为,科技发展让人类借助计算机的能力,在一个超高维弯曲空间中,搜寻自然世界奥秘。而深度学习则是利用最近年发展起来的大算力,让计算机代替人...

29280
来自专栏机器人网

无人机用陀螺仪的数据处理

1 陀螺仪数据校准 1.1 原理 一款飞控上的传感器是需要进行校准的,比如这里讲的陀螺仪。目前大多数的陀螺校准其实就是去掉零点偏移量,采集一定的数据,求平均,...

71660

扫码关注云+社区

领取腾讯云代金券