当程序员突然想画画 AI机器人就该登场了
人生总有那么一些时候,你突然间想文艺一下。比方画一幅画。
但,理想和现实之间,可能远隔千山。比方,你其实没有创作的灵感。以及,你其实没有把灵感实现出来的基本技能。
每当这时,有人会妥协退缩,也有人会迎难而上。俗话说:“只要思想不滑坡,办法总比困难多”。
今天,就是这样一位不妥协的程序猿的故事。
澳大利亚人Jeremy Kraybill活了40多岁,突然对绘画产生了兴趣。横亘在他面前的就是那两个问题:既没有艺术灵感,也没有绘画基础。但,他有技术。
先看结果。下面这幅画,就是Jeremy的绘画作品。为了完成这幅画,他动用了人工智能(神经网络)来产生创意,然后又动用了机械臂,把创意画了出来。
这幅成品,看起来是不是有模有样,还颇有大师神韵?实力演绎“不想当画家的创始人不是好的软件工程师”年度大戏。然而,这也并不是一番坦途。
这篇文章就带你真实还原AI设计、机械臂全自动作画完整过程。对了,量子位还“采访”了JK的“御用”机器人,问了问它这几个月的感受。
大概就是这样的画风
从歪七扭八开始
一切都得始于灵感。
在这个出发点上就不能输。不过,怎么才能拥有大师级的创作灵感?作为资深程序员,Jeremy立刻就想到,可以靠AI啊!
没错,现在的AI其实已经有了某种程度的“想象力”和“创造力”了。AI的灵感来源,其实有点像那句话:模仿是艺术家向艺术家最高级别的致敬。
为了生成画作,Jeremy选用了DCGAN(深度卷积生成对抗网络),直接用了tensorlayer在GitHub上开放的TensorFlow代码。
而所用的训练集,由男男的肖像画组成,全都是他喜欢的风格。挑选、修改、增强等等一套操作下来,他Jeremy得到了一个包含10万幅画的训练集。
接下来,就是训练和生成了。即使已经有了开源代码,训练一个GAN也并不容易。一不小心,就会遇到这样惨不忍睹的崩溃NG场面:
各种NG都解决了之后,就进入了最终的训练和生成过程,在亚马逊的AWS p2.xlarge实例上进行,整整花掉了7天时间。Jeremy得到了——
就是这个,一个64×64像素的、歪七扭八的、全新的创意。From AI with Love.。GAN还为这幅作品起了个充满诗意的名字:028749_0001_08。
上面这张小头像和成品之间的差距,可能能绕地球好几圈。但这已经是Jeremy可以得到的最好结果了。他还有过不少其他改善的尝试,不断碰壁后,最终他决定:就用这个了。
这里插播一下,为啥他没有继续尝试,而是急急忙忙接受目前的结果?可能是因为Jeremy初心变了,他不只想画一幅画,而且还想参加机器人艺术大赛RobotArt。
于是,时间一下子就变得很紧张。
转攻机械臂
接下来的问题是,怎么把这个AI贡献的灵感,变成一幅真正的画作?靠机械臂。
那也得教一下机械臂,怎么画画。
第一次尝试机器人手臂大概还是在去年7月份,Jeremy试图熟悉机械臂的功能,并且想让它看起来像人类的笔触,他先就购买了一套温莎牛顿的豪华刷头马克笔。
这套马克笔的笔尖像毛笔,非常适合测试,又不用担心调色的事。
2017年9月早期测试
虽然,没试出什么惊艳的结果,但Jeremy浑身上下写满了 (蜜汁) 自信,感觉用真正的水粉画笔也没问题。
后来,他工作一忙,就开始捉急了。看看越来越近的截止日期,再看看还没玩过水粉笔的自己,Jeremy决定用Aqua Brush (一种内置颜料盒的笔刷),来代替了水粉笔这种需要配置的操作。选了8种预先混合好的颜色,实验又开始了。
Aqua Brush笔刷
“您的扑街只用了一秒。”走出实验室之前,他丧丧地扔掉了所有的Aqua Brush。这种工具需要的水量太大,效果很水。