人人都是产品经理 06-06
AI绘画的发展历史(GAN、diffusion、VAE…)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

除了使用工具外,可能很多同学也想了解这些生图工具的原理,演进历史等,那本篇文章主要为大家介绍一下 AI 生图的历史以及目前部分主流的网络模型运行机制。

随着像 midjourney、stable diffusion、DALL-E 这些生图模型的问世,越来越多的同学开始用上了 AI 生图工具,类似文章配图,文章封面这类创作场景都可以直接用 AI 产出的图片,可以说节省了成本的同时提供了很大的便利。

一、20 世纪 70 年 AARON AI 绘画问世

最早的 AI 绘画追溯到 20 世纪 70 年代,艺术家哈罗德 · 科恩(Harold Cohen)发明了 AARON,AARON 最大的一个特点就是通过机械臂输出作画的,当然这套机器的背后也是通过计算机程序围绕规则和算法驱动的,下面为大家展示一些 AARON 绘画的作品:

图片风格有点像我上小学那会儿学科课本上的插画样式带点抽象风格,90 年代的 "AARON" 已经能够使用多种颜色进行绘画,并在三维空间中创作,AARON 的迭代改进持续了几十年,直到今天它还仍然在创作。

2006 年 , 出现了一个类似 ARRON 的电脑绘画产品 The Painting Fool. 它是伦敦大学金史密斯学院的计算机创作学教授 Colton 的作品,它可以观察照片 , 提取照片里的块颜色信息 , 使用现实中的绘画材料如油漆 , 粉彩或者和铅笔等进行创作,Painting Fool 作品如下:

以上都是属于 " 古典 " 的 AI 绘图模型,我们现代的 AI 绘画属于基于深度神经网络基础上产生的,最早也要追溯到 2012 年吴恩达训练出的能生成 " 猫脸 " 的模型。

二、2012 年模糊的猫脸

2012 年,谷歌的吴恩达和 Jeff Dean 使用深度学习模型,基于大量猫脸图片训练出了一个能够生成模糊猫脸的模型,这标志着 AI 绘画的一个重要起点,他们使用了他们使用了 1.6 万个 CPU 核心和来自 YouTube 的一千万张猫脸图片,进行了为期 3 天的训练,成功训练出了一个能够生成模糊猫脸的深度神经网络模型,通过模型生成的猫脸图像参照下面这张图:

尽管生成的图像质量并不高,但这个实验标志着深度学习在图像生成领域的一个重大进步。它证明了深度学习模型能够学习到图像的复杂特征,并用于生成新的图像内容。这个实验使用了卷积神经网络(CNN),这是一种特别适用于图像识别和处理的深度学习架构。这个模型在之前的介绍 GPT 中的神经网络演进历史有讲到过,这篇文章就不再详细介绍了。

三、2014 年生成式对抗网络(GAN)

2014 年,加拿大蒙特利尔大学 Ian Goodfellow 等人提出的生成对抗网络算法为 AI 绘画带来了新的发展,它本质上是通过生成器和判别器的对抗过程来生成图像,下面详细介绍它的训练原理:

上述图中有两个模型:生成器和判别器,这两个模型分别都有一个目标,对于生成器来说,它的目的是让自己生成的图能够骗过判别器,让它认为这张图就是原始数据库中的真实图片而非模型生成的,这种情况下输出结果越趋近于 1(1 为真)就能说明生成模型效果越好;对于判断器来说,它的目的是有效地辨别出生成器生成的图片,这种情况下输出结果越趋近于 0(0 为假)就能说明判别模型效果越好;这样的话就形成了所谓的对抗(GAN),一个想让生成结果更趋向于 1,一个想让生成的结果更趋向于 0,生成的结果数值会给到两个模型和训练目标比对(一个目标是 0,一个目标是 1)后分别进行 Fine tune(优化模型参数);那什么情况下算是训练好了呢?这里就有一个纳什均衡的概念,就是说当输出的结果无限趋近于 0.5,0 和 1 的中间值那么就算是把这个生成器训练完了。这个时候生成器生成的图片效果无限逼近于原始图了。

我们现在熟知的 Midjourney 底层就是基于 GAN 模型。

四、2015 年 谷歌的 Deep Dream

2015 年,谷歌推出了 " 深梦 "(Deep Dream)图像生成工具,尽管它更像是一个高级滤镜,但它也标志着 AI 绘画技术的进步,我们可以先看一下 Deep Dream 生图的效果:

上面那排是原始训练的数据集,下面那排是 Deep Dream 生成的像梦境般的迷幻图。

Deep Dream 原理:

假设输入图像是 X,这个输入图像可以是随机噪音,也可以是一个图像。把这个图像输入到卷积神经网络中,它输出的结果是各个类别的概率,这里卷积神经网络就是一个分类机器,怎样得到 Deep Dream 图像呢?需要指定一个标签。比如想要生成海星状的图像,就需要把目标标签指定为海星,然后通过海星和预测结果的类别之间的误差,反向传播到输入图像,去优化输入的图像 X,如果优化后的 X 通过卷积神经网络后得到的海星标签的概率很高,那么就得到了类似海星的图像。

注意:这里调整的是输入图像的像素值而不是卷积神经网络。在 Deep Dream 项目中,用到的卷积神经网络的参数是固定的,调整的仅是输入的图像。

无论是 14 年的 GAN 还是 15 年的 DeepDream 都还没有实现文字 ->图片,直到 2021 年 Open AI 推出的生图模型 DALL-E 的诞生。

五、2021 年 OpenAI 推出 DALL-E

DALL- E 模型的革命性的意义是实现了文字 ->图片的生成模式,相当于用户输入 prompt 给 DALL-E,DALL-E 就能生成文字对应的图片,DALL-E 截止目前已经更新到了第三个版本,每个版本使用的模型可以说差别都挺大的,这个三个版本涉及到的主要模型如下:

DALL-E 1

时间 : 2021 年 1 月

模型基础 : GPT-3(Transformer) + VAE(自分编码器)

DALL-E 2

时间 : 2022 年 4 月

模型基础 : CLIP(视觉语言预训练模型) + Diffusion(扩散模型)

DALL-E 3

时间 : 2023 年 10 月

模型基础:CLIP + VAE + Diffusion(扩散模型)

下面是网上找到的 DALL-E2 和 DALL- E3 的对比图:

上述涉及的模型比较多,但我们可以将其进行归类,一类是图像描述生成模型(将用户的 Prompt 转换成生图模型理解的描述),例如:GPT-3(Transformer)、CLIP(视觉语言预训练模型);另外一类是图像生成,模型 VAE(自分编码器)、Diffusion(扩散模型)。那么下面我们就分别来看看这些模型的原理:

CLIP(视觉语言预训练模型)

中心思想:基于 4 亿个图像 - 文本对的数据集,自监督学习的方式实现最大化文本和图像的关联关系。

1)具体步骤为:数据集准备:收集大量的图像和文本对。这些图像和文本对可以是成对的,也可以是单独的图像或文本。理想情况下,这些数据应该涵盖广泛的类别和场景。

2)特征提取:使用预训练的卷积神经网络(CNN)作为图像编码器,从图像中提取特征。对于文本,可以使用预训练的语言模型(如 BERT)来提取文本特征。

3)正负样本对:为每个图像生成正样本对(与图像匹配的文本描述)和负样本对(与图像不匹配的文本描述)。这可以通过从数据集中随机选择或使用专门的数据增强技术来实现。

4)对比学习:CLIP 模型的核心是对比学习,它通过最大化正样本对之间的相似度并最小化负样本对之间的相似度来训练模型。这通常通过一个对比损失函数来实现。

5)迭代训练:重复上述步骤,直到模型在验证集上的性能不再显著提升或达到预定的迭代次数。

VAE(自分编码器)

VAE(自分编码器)也是一个生图模型,我们在了解 VAE(自分编码器)之前可以先了解下它的前生 AE(自动编码器)

AE 模型由两部分组成,编码器(Encoder)和解码器(Encoder),可以理解为是两个神经网络层,前者是将高维输入(图片)映射为低维编码(code),后者将低维编码(code)映射为高维图片。这样的架构下生成的图片效果并不是很理想,原因是过拟合,泛化性不好,下面用一个例子来解释下这个缺点:

如果我们让 AE 这套架构先去学习 " 新月 " 和 " 满月 " 两个数据,其中 " 新月 " 输出的 code=1 而满月输出的 code=10,这时候想让训练好的 AE 输出 " 半月 " 也就是 code=5,效果是不理想的,原因模型训练都是固定的输入和输出,中间没有灰度,所以为了解决这个问题,那么下面讲到的 VAE 就横空出世了。

VAE 是怎么解决 AE 的缺陷的呢,同样用 " 新月 "" 满月 " 的例子,如下图:

我们可以简单理解为在 AE 的基础上增加了正太函数,使得不仅仅 code=1 为 " 新月 ",code=0.9、0.8、1.1 …同样具备新月的特征,同理不仅仅 code=10 为 " 满月 ",code=10.5、11、9.5 …同样具备满月的特征,那当 code=5 时候就同时具备了满月和新月的特征,输出的结果就比较理想。

Diffusion(扩散模型)

同样 Diffusion(扩散模型)也是一个生图模型,相比上文提到的 GAN(对抗生成网络)和 AVE(自分编码器)的优势在于生成的图片质量更高且训练过程可控稳定但计算资源消耗较大,我们来看下扩散模型的生图原理:

简单来说 diffusion models 就是一个通过给图片加噪,再反向减噪还原图片的过程,还原的过程中会涉及到一个 unet 网络去预测还原的噪声。具体步骤如下:

1. 将数据集中的图像加噪:

2. 反向引入 unet 网络预测噪声,这里涉及到 unet 网络如何训练:

引入一个随机噪声图像;

随机噪声图像代入到 unet 网络,网络预测产生了多少噪声;

将随机图像 - 噪声 得到图片结果;

将图片结果和实际正确图片进行比对产生误差后反向调整模型,直到显示正确的图像。

不同的图片数据集反复形成一个合格的 unet 网络。

3. 有了 unet 网络,就可以还原数据集中的图片:随机噪声 -unet 网络预测的噪声

备注:这里面可以了解下马尔可夫链的相关知识,油管地址:https://www.youtube.com/watch?v=2NruDWUyXBk&t=194s

马尔可夫链在这里可以简单理解为,结果不受初始值(随机噪声)的影响,通过马尔可夫链计算函数可以预测到固定的结果,所以我们可以引入随机的噪音。

我们现在熟知的 stable diffusion 主要就是基于 diffusion 生图模型。

到这里 DALL-E 模型就基本介绍完了,接下来介绍的就是我们众所周知的 Midjourney 喝 Stable Diffusion 两个图片生成 AI 了,而他们所用的模型基本在前面的内容中都介绍了,所以我们就不再扩展,简单介绍下他们用的模型以及一些生图的效果。

八、2022 年 3 月 AI 绘画工具 Midjourney 问世

核心的模型:CLIP+GAN

Midjourney 为闭源系统

* 图片来源互联网,若有侵权请联系作者删除

九、2022 年 8 月 AI 绘画工具 stable diffusion 问世

核心模型:CLIP+diffusion+VAE

stable diffusion 为开源系统

* 文章图片来源互联网,若有侵权请联系作者删除

本文由 @产品萧书 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自 Pixabay,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

智慧云

智慧云

ZAKER旗下新媒体协同创作平台

相关标签

绘画 ai 深度学习 神经网络 计算机
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论