安妮 栗子 发自 凹非寺
量子位 出品 | 公众号 QbitAI



人生总有那么一些时候,你突然间想文艺一下。

比方画一幅画。

但,理想和现实之间,可能远隔千山。比方,你其实没有创作的灵感。以及,你其实没有把灵感实现出来的基本技能。

每当这时,有人会妥协退缩,也有人会迎难而上。俗话说:“只要思想不滑坡,办法总比困难多”。

今天,就是这样一位不妥协的程序猿的故事。

澳大利亚人Jeremy Kraybill活了40多岁,突然对绘画产生了兴趣。横亘在他面前的就是那两个问题:既没有艺术灵感,也没有绘画基础。

但,他有技术。

先看结果。下面这幅画,就是Jeremy的绘画作品。为了完成这幅画,他动用了人工智能(神经网络)来产生创意,然后又动用了机械臂,把创意画了出来。

这幅成品,看起来是不是有模有样,还颇有大师神韵?实力演绎“不想当画家的创始人不是好的软件工程师”年度大戏。

然而,这也并不是一番坦途。

这篇文章就带你真实还原AI设计、机械臂全自动作画完整过程。对了,量子位还“采访”了JK的“御用”机器人,问了问它这几个月的修炼感受。 

 大概就是这样的画风

从歪七扭八开始

一切都得始于灵感。

在这个出发点上就不能输。不过,怎么才能拥有大师级的创作灵感?

作为资深程序员,Jeremy立刻就想到,可以靠AI啊!

没错,现在的AI其实已经有了某种程度的“想象力”和“创造力”了。AI的灵感来源,其实有点像那句话:模仿是艺术家向艺术家最高级别的致敬。

为了生成画作,Jeremy选用了DCGAN(深度卷积生成对抗网络),直接用了tensorlayer在GitHub上开放的TensorFlow代码。

相关论文:
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
Alec Radford, Luke Metz, Soumith Chintala
https://arxiv.org/abs/1511.06434

代码:https://github.com/tensorlayer/dcgan

而所用的训练集,由男男女女的肖像画组成,全都是他喜欢的风格。挑选、修改、增强等等一套操作下来,他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。这种工具需要的水量太大,效果很水。

技术宅觉得,如果用另外一种介质来代替水,可能会更好。不过,他还是毅然决定死磕水粉了,并坚信古老的笔刷和颜料会比现代工具更适合画画。调色板里颜色是根据要画的作品和最少的混色步骤来选定的。

要指导机器画画,就需要给它一套指令,告诉它该在画布的什么位置、用什么样的笔触、刷上什么颜色。于是,Jeremy基于机器人要用的色板,将这幅图像用算法翻译成一套ABB机器人指令,开头那张“AV画质”的小人脸,摇身一变成了现在的样子——

在这个项目中,“从图像到笔刷”的转换程序是唯一需要“从零开始”的,其他所有关于AI的步骤都主要基于过去几年研究的已有文件和代码。

在转换之前,需要先处理一下DCGAN生成的渣画质小图:放大,将颜色减少到能和色板相匹配、并对图像进行平滑处理来增强所生成笔刷的平滑度……



处理好了图像,还要准备备选的笔刷。这些大大小小的笔刷,是Jeremy在Photoshop里削出来的,构成了算法的训练数据集。这些笔刷再加上混色指令,就是算法的全部输入了。

距离截止日期12天时,Jeremy计划的调色方案还很细腻:从奶油色开始,一步一步加深到深棕色,然后再用调色板来调出余下的颜色。但对于机器人来说,时间显然不够用。



机器人按指令操作的结果,和他美丽的想象相去甚远。以至于最后关头,他还在紧急修改调色指令。



Jeremy还向想让机器人在画布上做一些混色,写出了代码,但在有限的时间里,并没有实践成功。

万事俱备,就该进行“图像到笔刷”的生成了:算法吃下准备好的图像,然后进行一个反复的试错,先考虑进多种可能的笔触,再通过和图片对比来筛选最接近的。

算法输出的结果包括一组要用到的笔刷、和机械臂要执行的混色指令,第一次尝试的时候用了6000笔,最终的作品是4000笔。用这个训练好的“图像到笔刷”生成算法来渲染给机器人的指令,消耗了Jeremy八个小时的时间。



好在,最后的成功,没有让他失望。

Jeremy设计的画作,也最终入围了2018年度RobotArt设计大赛,他还想让大家空了去投个票~

https://robotart.org/artworks/

不过,故事还么完。

光提到Jeremy怎么够?

量子位还(假装)采访到了参与本次创作的ABB机器人,它的心路历程饱满得快要喷发。以下,我们用自述体,还原这次采访。



机器人的艺术修养

那是一个周四的下午,Jeremy到实验室来告诉我,之前的试画他很满意,晚上就会把一幅大作的任务交给我。

之前从来没有画过一张完整的画,每次都让我试几下就把笔收走。啊,想想还真有点小激动呢。

按这个节奏往下走,说不定哪天画廊就会来找我签约,这样我们实验室的小花会被我的才华折服,然后我顺势表白成功。 从此,两只机器人过上了幸福的生活。



回到现实,没想到他让我一整晚不许停笔。我是机器人没错,不管饭可以忍,不能休息也叫小花来看看我。

大概男人辛苦的样子才更可爱吧。这样想着,4月5日的夜晚,我还是用色彩填满了。

第二天,Jeremy说我发挥正常,不过他觉得青色 (Cyan) 用得有些重了,焦赭石色 (burnt umber) 又有点太轻了。

这不是大问题,反正我的混色习惯都是可以调的。可是他还说我画得慢,只有一句话想送给毫无艺术天分的他。



三小时画了1800笔,要不去问问别的机器人有没有这么快。一下子塞给我6000笔的任务,我也很绝望啊。

不过,好在他比我还紧张,这样我也能平衡一点。

可能他也觉得有点对不起我,就给了我三天假。4月9日周一晚上,我又开始工作了。

 没见过吧

Jeremy好像是刚刚知道,我有一个动作更快的模式。一开始,我的内心是拒绝的,那个模式真的很累。但他求了我,还说要带我参加比赛,于是我决定给他看看我真正的速度。

那天晚上,我就把画完成了。还是三个小时,但这次画了4,000多笔。他果然被我精妙的技艺震撼了,除了速度,我还有更加流畅自然的笔触。



这个傲娇的技术宅,明明感受到了我的厉害,还要说我的画有些小小的瑕疵。

他把水粉冲得太淡了,导致颜料在画布上开心地流淌。还有,他又觉得把混色指示里的焦赭石色调得太重了。只要他承认那是他的错,就好。

生动的意外

不知为什么,他好像不想让我再画了,要直接拿这幅画去参加比赛。可我才刚出道,不想只留下一幅作品就隐退。

 大概在剔牙

不过,没过多久Jeremy就跑来告诉我,他改主意了。Jeremy在调色桶和调色盘的转换之间,发现了一个bug,导致我的笔刷位置太低,才有了画布下方那条乱入的棕色长线。

于是,Jeremy第二天一大早又来了。他说这次调整了系统,一幅画只要4,000笔就好了,少了2,000笔。还算懂事。



另外,他还重新设计了颜料的混合方式,这样我就可以画出更有趣的色彩了,好兴奋啊。

早上工作,神清气爽。Jeremy让我先做笔触渲染,等他下班回来再开始画画。

晚上,准备工作两小时,画画三小时。虽然,过程因为调整混色指示而中断了几次,但作品我还是满意的,技术宅应该也满意吧。

和预先准备好的图像相比,我画出的成果有些不同。但在有意无意中,色彩变得更生动了。

投稿截止日期将近,Jeremy说许多变化都是时间不够造成的代码意外,但我们两个都享受这些可爱的意外。如果真的和原图一样,怎么看得出我的天分呢?

后记

机器人不知道的是,那天晚上Jeremy把它的作品小心翼翼地捧回了家,像个得到了珍贵礼物的孩子。



后来,他还用蜡给作品上了一层表面,让水粉多了一些光泽,多了一些深度。当然,那是比赛之后的事了。

至于,这是不是艺术。要说不是,那些孩子一样的心情又是什么呢?

加入社群

量子位AI社群16群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot6入群;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进群请加小助手微信号qbitbot6,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

当,程序员突然想画画,AI+机器人就该登场了相关推荐

  1. 100%的程序员都想挑战的算法趣题!| 码书

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  2. 我敢打赌,这是98%的程序员都想挑战的算法趣题!

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  3. 100% 的程序员都想挑战的算法趣题!

    作者 | 图小敏 计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,&quo ...

  4. 知乎热议:告别“大小周”、程序员“内卷”时代终结?程序员最想学习的语言原来是这?

    相信许多人都有这样一种感觉:工作之后,对于时间的概念似乎减弱了,只会在恍惚间瞄到日历,才惊觉:一年竟又已临近尾声. 这一年,我们见证了许多科技行业的变化:小米宣布造车.Chrome OS 超越 mac ...

  5. 程序员,想要彻底弄懂Redis,这15点你一定要明白~(纯干货)

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Java实现QQ登录和微博登录个人原创+1博客:点击前往,查看更多 作者:耿直的小码农 来源:https://s ...

  6. 程序员如果想安身立命 什么情况????

    程序员如果想安身立命[飞秋官方下载] 作者:       i_like_cpp        -       日期:2012-02-13     浏览 24 次 WZSZF关联内容页的方法是使用搜索对 ...

  7. 程序员面试金典——9.2机器人走方格

    程序员面试金典--9.2机器人走方格 问题I: Solution1:我的答案 普通的从左上角走到右下角的题目 动态规划,哈哈啊哈哈哈 class Robot { public:int countWay ...

  8. 互联网公司和外包公司有什么区别?为什么有些程序员不想进外包公司?

    什么是外包? 大部分人口中的外包公司应该是劳务派遣,基本外包公司属于一种中介的概念,实际用人单位同外包公司签订人才派遣或租赁合同,外包公司安排人员来用人单位面试,通过后在用人单位工作,但是该外包人员的 ...

  9. 程序员为什么想做自由职业者

    程序员为什么想做自由职业者-很多人看见这个问题,心里或许有很多疑问.所以在考虑这个问题之前我们更要考虑清楚的是,自由职业者带来的是什么?为什么想做自由职业?为了自由?还是为了挣钱? 我还没有挣到太多钱 ...

最新文章

  1. 深度学习核心技术精讲100篇(四十一)-阿里飞猪个性化推荐:召回篇
  2. 大数据+社会化协同 菜鸟不菜成老师
  3. [HDOJ2586]How far away?(最近公共祖先, 离线tarjan, 并查集)
  4. mysql scrapy 重复数据_MySQL大数据量表中删除重复记录
  5. 上机 文件读写器 c# 1614998685
  6. 经过一晚上的浓缩之后
  7. 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办...
  8. mysql日期查询_mysql 查询日期
  9. C++ 正则表达式教程:C++ 中的正则表达式与示例
  10. ubuntu18.04安装微信和qq和谷歌浏览器
  11. matlab imwareaopen,李祎 副教授
  12. 对比苏州和杭州这两座城市,你会发现?
  13. 雅俗共赏——广告词之很美很强大的汉语言
  14. 秋风:教育部办学还是学校办学?
  15. mysql哨兵模式_redis 哨兵模式集群搭建
  16. ecmascript2015
  17. 重装系统后,没有以太网和WLAN怎么办
  18. android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码
  19. 小学教材失实一事体现出僵化的教育思维
  20. 2018内推提前批 银联、天猫一面 / 华为业务面+综合面

热门文章

  1. 2008年卫星地图_黄河入海口1984年-2016年,34年卫星地图变化
  2. php新建数据表输入自己相信,php学习记录 - whoAmIR的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. python web报表_python django框架 渲染和ajax表单提交周报表
  4. 确定一个整数是否是2的幂
  5. java base64字符 转图片_JAVA实现图片与base64字符串之间的转换详解
  6. linux fpga 开发环境,- Vivado+Zedboard之Linux开发环境搭建
  7. 大数据对人们的好处_大数据有什么作用和优势
  8. Linux下apache和fcgi的关系,Linux下编译安装Apache httpd 2.4
  9. python识别复杂验证码2020_Python识别验证码!学会这步,百分之60的网站你基本都能识别了!...
  10. 计算机集成项目经理 培训,计算机信息系统集成项目经理培训总结.doc