欢迎光临散文网 会员登陆 & 注册

当看到《西部世界》里这一幕时,我觉得该聊聊AI绘画的原理了

2022-06-30 20:28 作者:蓝鲸泽维尔  | 我要投稿


我觉得但凡之前看过AI绘图相关内容的人,看到《西部世界》第四季第一集里德妹在游戏公司上班这一幕时,应该都会意识这是在cue什么东西吧。借这段时间使用和了解AI绘图的经历,我想在这里简单聊一聊它背后的原理和未来的趋势。

先说德妹在做的事,看上去她是在用语音指导面前这个“电脑”即时生成3D影像。嗯,你们有没有注意到,她面前这个“电脑”只有屏幕,没有鼠标、键盘?另外剧中她也说了,自己的工作是为游戏公司设计NPC,这意味着什么呢?其实就是我们现在看到的AI绘图向“元宇宙”多前进了一步,把“文本——图像”变成了“语音——文本——图像——3D影像”。AI绘图其实只是一种比较低级的人工智能工具,总有人在大谈什么人类的创意要死亡之类的哲学笑话,现在怎么样?即使《西部世界》这样的科幻剧里,还是要保守地告诉你,终究还是得人自己来提供创意。而且它的保守还体现在,根本没提VR和脑机——其实再进一步,不就是直接“脑波——3D影像“?以前我翻译后发在B站的美国五六十年代科幻小说《星际飞鼠》里就有外星人直接用脑波向现实的屏幕进行图像”投影“的想象,现在看来,其实它离实现也不见得很远了。或许早晚有一天人类可以把脑海中的画面直接投影到现实,甚至做梦都可以实时分享。

关于科幻和美剧的东西就此打住,我们下面用最简单的大白话解释当下的现实中,AI绘图的原理。

首先,我们先要排除一些错误的认识。AI绘图和人工手绘、PS等数码绘画软件到底有什么区别?表面上看,所有人都知道,啊,不就是输几个英文单词看它随机跑张画么,有什么好吹的是吧。

其实AI绘图是由两部分组成的,以做菜来比喻比较确切一点——核心的“文本-图像”模型,根据我们提供的文本选择“食材”,也就是选取模型中和文本对应的那些图像元素;而“做菜”的程序,就是我们需要调整的那些计算参数,它是以我们提供的“食材”为判断条件,从一张随机(也可以不随机)生成的噪点图开始,符合文本内容的留下,不符合的删除。然后再重新喷上一些噪点,再进行下一轮判断计算,迭代很多步之后,就得到了我们想做的“菜”

所以有人问AI绘画有什么技术含量?有什么门槛?跟大厨抄菜一样的道理,你既要了解食材,也就是用哪些文本才能调出你想要的画面元素,还要会微调你的做菜程序,也就是怎么调整那些乱七八糟的英文参数来让你的食材变成一道色香味俱全的好菜,而不是黑暗料理。

Disco Diffusion看上去很容易入门,那是因为有很多前人分享出来的文本和参数经验给你,让你节省了很多自己实验的时间。更别提那些连“做菜参数”都不用你调的网站和APP了。

那我先说第一部分,就是文本-图像的模型。其实这是AI绘图最核心也是最有技术含量(也是成本最高)的那块内容。

大数据火了不是一两年了,机器学习和神经网络的概念早就烂大街了,我自己一开始也在用几年前学的知识去想象文本-图像模型的逻辑,后来发觉这都是错误的。AI绘图中用到的各种模型,如Disco DIffusion使用的CLIP(Contrastive Language-Image Pre-Training)等,它是神经网络没错,但是和以前的机器学习有两个区别,一是“多模态”,二是“零样本”。

多模态”:意思是它同时训练AI做了两件事,一是自然语言处理,二是计算机视觉。大白话讲,就是让计算机理解人类语言,和让计算机像人眼一样观察理解世界。以前的机器学习都是只干其中一项就了不起了,而CLIP模型是在两者间建立了一个桥梁,而且还是某种很强力的联系,这是它的伟大之处之一。

零样本”:意思是,它可以输出人类从来没有训练过它的结果。以前的机器学习,让AI画猫,它就学会了画猫。让它画狗,它就学会了画狗。但你没教过它画浣熊,让它画会怎样?会报错,画不出来。而CLIP模型是可以画它没有训练过的内容的,也就是说我一张浣熊的照片都没给它看过,它居然能画出来!而且可能画得还挺像。这也是为何它会被用来进行艺术创作。这是它的伟大之处之二。

那么这样的模型是怎样训练出来的呢?

首先,你需要一个由图片构成的训练集。每张图片上都有相应的文本描绘。CLIP模型里有两个子模型,一个负责图像解码,一个负责文本解码,于是每张图像和对应的文本描绘都会分别生成一个特征值。对这个过程形象一点的比喻,就是把图像和文本上蕴含的信息分别“砸”进同一个数学空间里

第二步,也就是最花钱的步骤,就是要对这些特征值进行拟合。要让所有对应的特征值之间的差距最小,而让所有非对应的特征值之间的差距最大。就像下图这样,让右侧矩阵中的浅蓝色方块所代表的那组特征值差距之和最小,而其他灰色方块中的特征值差之和最大。于是基于这组图片和文本描绘建立起来的模型就计算出来了,当你给出一段文本或某张图像时,它就会把对应的图像或文本输出给你。

这个计算量可想而知是有多大了。所以整个AI绘画最值钱的部分就是它了。如果不是那些科研团队(康奈尔、清华等)和公司(OpenAI、谷歌、苹果等)选择开源公布这些他们可能花了几百万美元训练出来的模型代码的话,我们也就不太可能接触到这项技术(为啥会开源我后面会说!)。

现在问题来了,这种模型为什么会有创造性?要是只是一个文本-图像的多对多网络而已,那它跟百度谷歌搜图引擎或者各种图像数据库有什么区别?秘密就在模型所构建的那个数学空间里,是存在无限的可能的。当你输入训练集中原本没有的文本或图像时,它所生成的新的特征值在这个空间里还是会有自己的位置的,而模型所输出的内容,可能就会与它相邻的那些特征值所代表的训练集中原本存在的内容有关。

我们用最简单的坐标系空间来理解,假设(1,2)这个特征值不是通过学习训练集生成的,也就是没有哪张图像对应的特征值是它,而是你输入的新文本被解码成了(1,2),那么模型会输出什么图像呢,是空白吗?如果(1,1),(0,2),(3,3)的特征值原本是有对应的图像的,那模型不会给你输出空白,而是会输出和这三张图像有关的一张图像。当然实际的数学空间远比这个坐标系复杂得多,但原理是一样的。这也是为何当你使用符号、非训练语言(在基于英文的训练模型里输入中文)、错误拼写单词、生造词汇,依然可以获得图像输出,甚至还能制造特殊效果的原因(如果你把某位画家名字拼错,还是能得到类似的风格,不过会和正常拼写的风格有微妙变化!)。

现在说说这个模型的局限性在哪里。

首先,是训练集的质量问题。这无数张图片(CLIP模型用了四十亿张图片,规模更大的训练集还有的是),其实大部分是直接爬取的网络图片。就如你在百度谷歌搜索图片时看到的那样,所有图片上都自带有一串文字描绘。于是我们就直接拿他们来训练AI了。到这里你就应该意识到它和传统机器学习的不同之处了,它跳过了最劳神的数据标注

现在问题就来了,基于这样的数据集进行训练,它真的能形成非常严谨的自然语言理解吗?

使用者其实都发现了,你用日常的英语去进行交互,限制是非常多的,远没有达到德妹那种自由对话的程度,甚至只要主题超过一个立马画糊了。我还试验过用Disco Diffusion只画一个单词,让它一个单词一个单词的画,令人失望的是,它能准确表达的词汇其实不多。更别提用语法去构造句子了。为什么呢?

原因就在于这些原本的描绘词和图像之间的联系可能就不会很精细,比喻地讲,好比我们没有像背字典、看图解百科全书那样一个词一个词地去教AI看图识字,而是直接让它通过成百上千的带有插画的英文文章阅读,自己形成一套对英语的理解。如果这时候原本数据集中的文本描绘与图像就有偏差,那就很难保证这种理解是没有偏差的。

实际上现有模型中你输入的某个单词,它背后所联系到的图像,绝不会是百科全书或词典里那样的标准内容,而是训练集中所有其描绘文本中有这个单词的图像形成的合集。你输入的是鸡蛋,但画出来的可能会有只老母鸡、厨房或者别的什么你根本没想到的东西。这也是为何我们想做一些复杂描绘时总会遇到困难的原因。但它同时也提供了更多的想象力,有时能创作出我们意想不到的好场景。这是把双刃剑。

其次,是训练集的选材问题。如果某些描绘词在训练集中过于少见,那很可能就不会形成准确的特征值,所联系到的图像可能就会南辕北辙,张冠李戴。比如Disco Diffusion的训练集是2019年之前的图片数据,那么你把最近两年的一些新生热词直接拿来做描绘词,结果就可想而知了。

当然随着后续技术发展,硬件软件限制的不断破解,这些都会得到解决。而且商业前景其实往往也就在于此。想要一个专做复杂模型、专搞商标设计、专做汽车装饰的高精度AI行不行?只要你肯投钱自己训练模型,没有办不到的。这也是目前这些模型选材广阔和开源的原因,只有更多的人参与测试(至少可以分担显卡工时),才能推进它的研究。如果真有那种很高级可以投入某方面产业化应用的模型问世,想必一般人也是用不起的。

第二部分,就是绘图的算法,也就是“做菜程序”。里面涉及的参数很多我就不展开讲了,推荐大家去看英文的各种材料,实际上老外总结得已经相当细致了。前面说了大致的原理,所以你要关注的主要是图像判断计算的强度、切块的大小(把图像切小进行判断)、计算曲线的设定、计算的步数(和跳过的步数)、文本描绘词影响力的强弱、每步计算时补充新噪点的程度等。这些东西都可以用做菜的程序来比喻,什么火大火小、蒸煮时间长短之类的。在其他Diffusion里,可能还会有更多的参数,比如人脸纠正计算、强制对称性的计算等等,其实都是非常好理解的概念,只要你看得懂英文,稍微浏览一下作者留下的参考文档就会明白它的含义。一些新的DIffusion里已经有了可以手动制作Mask的功能,相当于只把一部分菜品回锅重做,所以在做菜程序上,进步的空间也是非常巨大的。

需要注意的一点,就是这种绘图方法不是“渲染”,不存在预设的底图,而是一种整体的计算,所以作为目前AI绘图程序的使用者而言,必须摆脱传统绘图软件的思路,在了解这些参数背后代表的含义之后进行调整。有时这种调整会非常复杂,因为这些参数并不是直接去影响画质,而是通过改变绘图计算的性质间接地去影响,你拿到的默认设置和前人提供的参数都只能仅供参考。模型不同、文本描绘词不同,要得到理想画面,实际的参数可能是需要很多次实验的。

这也是为什么我不喜欢分享描绘词和参数的原因,因为没有意义。去重复他人的实验,不如做自己的探索来得有意义。

最后再聊聊前面提到过的使用门槛问题。AI绘画技术的迭代是很快的,因为相关硬件和软件的迭代速度也非常快。我们现在说的一些技巧,基本都是基于现在的技术缺陷来谈的,很可能以后会用不到。比如Prompt Engineering,把提示词(文本描绘词)怎么写都上升到一种工程了,恰好说明它在自然语言理解上还有很长一段路要走。在现有条件下探索模型中隐含的那个数学空间,确实需要你从CLIP模型本身的数据集去分析入手,寻找那些能形成你想要的效果的词汇,而不是真的凭空想象就完了。同时对于输入文本的要求,也要贴近原本训练集中的格式才行(问题是原本那四十亿张图的文本描绘格式就不是统一整齐的)。

另外参数的调整也是比较恼人的一个障碍,Disco Diffusion最大的一个优点就是它的稳定性非常好,因为很多不稳定和不好用的参数已经通过大家的实验剔除了,留给使用者的都是相对效果明显而独立的;其他使用者较少的,比如Latent Diffusion等,在稳定性上就差很多,即使用默认参数画默认主题,也会出现至少一半的失败图片(另一半倒是确实很惊艳),这也是开发者和使用者们一起努力的一个过程(开源的另一个意义所在)。

至于当前的AI绘画能不能算一种一种艺术创作,值不值得进行探索和关注,我觉得看完全篇之后,你应该会有一层新的认识。

(完)

当看到《西部世界》里这一幕时,我觉得该聊聊AI绘画的原理了的评论 (共 条)

分享到微博请遵守国家法律