我们基于 Disco-diffusion 为 50 句中国古诗词生成了画面 (开源代码)
我的朋友碎瓜最近常和我讨论一些 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
这就是这个五一假期做的事情,还不赖。