我的朋友碎瓜最近常和我讨论一些 idea,最近一个月内我们大概讨论了 40 多个 idea,有的谈得上巧妙,但大部分不是太难了,就是太无聊了。碎瓜的主业是做机器学习,于是首先搞了一台 V100 显卡的机器。做好算力准备,既是一种实际需要,也代表了一种仪式感:我们真的要搞点东西。

五一假期之后,碎瓜把 Disco-diffusion 部署在了 V100 上,并进行了一些优化,Disco-diffusion 是一个开源的基于diffusion+CLIP的深度学习模型,输入文本便能生成图像画面,并且风格可以随着输入文本改变(例如画家名字、风格名),你可以用Google Colab来玩,不过受限于机器性能,生成一张图的速度实在太慢了。碎瓜做了自己的封装和速度优化,还通过 DeepL使其支持中文文本输入,这样就可以做一些好玩的事了。

我们用了两天时间,把玩这个定制的 Disco-diffusion,将脑海中的一闪而过的画面提取出文字,然后交给 V100 去生成画面,得益于 V100 强大的算力,以及碎瓜的优化,一幅画的生成时间只需要4分钟。

我们尝试了很多很多的画面,例如:

躺在废墟中的玻璃鲸鱼,抽象画

海贼王路飞戴着草帽站在船头瞭望大海 

精灵城堡

麦田烈日下,老人坐在巨大的水稻下乘凉

五颜六色的立方体冰块漂浮在火山的湖泊中

对于我这样脑海中画面感很强,但没有任何绘画能力的人来说,这似乎给了我一个强大的工具,我把斑斓,混乱,梦幻又离奇的许多句子输入,然后看到他们变成画面,我乐此不疲,熬到凌晨三四点,看到了许多画面诞生出来,才心满意足的去睡觉。

两天前我们聊了各自生成的画面,我发现,如果使用中国画或水彩画风格,在输入一些古诗词的时候,可以得到意想不到的好效果,例如:

 日暮苍山远,天寒白屋贫

于是我有了一个想法, 找更多古诗词,将他们全部生成画面,碎瓜也觉得这个想法有意思,于是我们连夜修改了代码,并写了一个自动脚本,然后跑了两天两夜,结果嘛,有些非常惊艳,有一些比较失败,我选了十几张张我认为还不错的,如下:

 峨眉山月半轮秋,影入平羌江水流

 
更无柳絮因风起,惟有葵花向日倾

 
古树老连石,急泉清露沙

 
横看成岭侧成峰,远近高低各不同

 
忽如一夜春风来,千树万树梨花开

 
明月松间照,清泉石上流

 
墙角数枝梅,凌寒独自开

 
鸡声茅店月,人迹板桥霜

 
黄河远上白云间,一片孤城万仞山

 
日斜江上孤帆影,草绿湖南万里情

 
山随平野尽,江入大荒流

这张不是中国画风格,因为我觉得这张效果最好

 
天街小雨润如酥,草色遥看近却无

 
无边落木萧萧下,不尽长江滚滚来

 
一道残阳铺水中,半江瑟瑟半江红

这些画面的效果,肯定还比不上真正的艺术家的作品,但是它的产出只需要四分钟的时间,并且我真心认为,其中的一些,还挺不错的。

我们从小背了那么多古诗,其中很多诗句的美,要在很多年后才能感受到,我们在脑海中想象「半江瑟瑟半江红」,「无边落木萧萧下」,「山随平野尽」,而现在,哪怕很不完美,但我们可以更直接的看到这样的画面了。

我们新建了一个 GitHub 开源项目,将这次的代码,50句古诗词的画面都放在了里面,任何有兴趣的人,都可以自行下载部署,或许你能找到你更喜欢的画面。

我们想,如果有机会,或许能做一个这样的公益平台,将中国最美的那些古诗词都拿来「图形化」一遍,大家既可以为最棒的画面投票,也可以将模型下载到自己的机器上,去自己跑一句诗,然后将图片上传,这样一来,或许我们能够看到许多曾经只能在头脑中想象的句子,变成真正的一幅画。

当然这个事情做起来也很困难,所以我们先从开源开始,所有代码,图片,素材,都可以在这个 GitHub Repo 中找到:mazzzystar/disco-diffusion-wrapper: Implementation of disco-diffusion-wrapper that could run on your own GPU with batch text input. (github.com)

这就是这个五一假期​做的事情,还不赖。​


我的微信公众号~