前言
事先声明!本文没有苦涩难懂的各种专业术语和代码公式,请大家放心食用。
在过去的一年里,AIGC 在绘画领域的蓬勃发展对设计行业的冲击相信大家都有目共睹。各个公司都在要求设计师必须会使用 AIGC 的相关工具,其中以 Stable Diffusion 为基础的系列工具和 Midjourney 应用范围最广。AI 绘画领域能够取得如此巨大的进展,很大的功劳要归属于 Stability AI 发布了开源的 Stable Diffusion。它除了降低硬件要求,使其可以在相对普通的硬件上运行外。也正是因为它的开源性,应运而生的相关研究和为了更好控制模型的各种插件才发展的尤为繁荣。本文也将从 Stable Diffusion 从发,聊一聊它的工作原理,希望能够帮助大家更好的理解和使用它。
一、为什么需要了解 SD 的工作原理
在使用 Stable Diffusion 相关工具时,并非一定需要了解它的工作原理,但了解它对后续的使用会很有帮助。当遇到生成图片质量低,各种参数不知道怎么调整时,不会举手无措。因为你会知道它的配置参数比如:种子、采样器、步数、CFG 比例或去噪强度等是如何去影响最终生成图片的,能够帮助我们自定义调整算法以适应特定的设计需求和偏好,从而生成更符合预期的视觉内容。
在接下来的内容中,我会通过类比的方式让大家了解 Stable Diffusion 的内部工作原理,以及它是如何能够通过提示词、图像参考等输入条件来生成各种创意图像的,再次强调本文没有苦涩难懂的各种专业术语和代码公式,几乎适合所有人。如果你在使用 Stable Diffusion 生图的时候,出图总是不好,相信看完这篇文章会对你有很大的帮助。
二、生成式模型的发展
生成模型发展初期主要是基于生成对抗网络(GAN),但在 2021 年随着扩散模型性能的显著提升和生成质量的大幅度改进逐渐成为主流。因为它更接近人的思维模式,能够实现更自然和多样化的生成内容。与传统的 GAN 相比,扩散模型在生成样本的质量、多样性和稳定性上具有一定的优势。并且在跨模态应用中表现出色,例如 OpenAI 的 GLIDE 和 DALL·E 2、谷歌的 Imagen、以及 Stability AI 的 Stable Diffusion 等都是基于扩散模型的应用,凸显了它在文本到图像生成中的强大能力。下面我们先来介绍一下两者的工作原理,放心你一定能看懂!
三、生成对抗网络(GAN)的工作原理
生成对抗网络(GAN)是由两部分组成的深度学习模型,它的核心思想是让两个网络一个生成器(Generator)和一个判别器(Discriminator)相互对抗,以此来提高生成数据的质量。
接下来我们用设计师做比喻来解释一下生成对抗网络(GAN)的工作原理,想象一个由两位设计师组成的团队:一位是设计实习生(生成器),另一位是设计总监(判别器)。他们相互配合完成客户所要求的视觉作品。
1. 设计实习生(生成器):
实习生的职责是创造出新的视觉作品,比如海报、广告等。他的要求是制作出让客户满意漂亮的作品,以至于让客户相信是出自一位设计大师之手。
在初始阶段他的作品可能看起来比较生硬和不自然,很容易被识别出是新手做的。
2. 设计总监(判别器):
总监主要是评价实习生的作品,并判断它画面是否和谐,字体、颜色等设计是否合理。总监具备视觉鉴赏的敏感眼光,能够识别出画面中的问题。
他的目标是确保提交的方案在视觉上没有问题,画面表达符合客服要求,保持高质量的方案产出。
3. 工作流程:
第一步: 设计实习生提交他的初步设计给设计总监。早期的设计可能很容易出现视觉上的问题,因为缺乏工作经验和设计技法,需要不断地学习。
第二步: 设计总监审核这些设计,并提供反馈,指出画面哪些部分有问题或者没有很好的表达客户的需求。在这个过程中会逐渐提高对实习生的要求。
第三步: 设计实习生根据这些反馈调整他的创作方法,学习新的技术,尝试改进他的画面,让它们更加精细美观,能够更好的表达客户的需求。
重复: 这个过程不断重复,实习生不断改进他的作品,而总监也在不断提高对实习生的作品的视觉要求。
结果:
经过多次迭代后,如果实习生能够创造出,即使是非常有经验的设计总监都难以挑出问题的作品。到这一步就可以说生成对抗网络(GAN)已经训练完成了,生成器(设计实习生)已经能够制作出足够优秀的视觉作品,判别器(设计总监)的审美和视觉评判能力也得到了提升。通过两者不断地提高要求,GAN 用于视觉生成,能够产生质量非常高的图像。
4. 生成对抗网络(GAN)被逐渐放弃的原因
① GAN的训练不稳定:
设计总监过于挑剔:对设计师的每一项作品都持怀疑态度,并拒绝接受大部分设计方案。
设计师走捷径:为了通过审查,设计师开始不断重复相似的设计作品(模式崩溃),最终丧失了创造力和多样性。
② 难以评估设计质量:
缺乏明确标准:没有清晰的设计审美标准,很难判断设计师的作品是否符合期望。
设计总监的个人喜好:有时会因为自身的审美偏好对设计师的作品产生偏见,从而影响作品质量的评估。
③ 对资源要求高:
设计师与设计总监的持续对抗需要大量的精力和时间,使得整个设计过程漫长而耗费资源。
设计师需要反复与总监沟通调整,沟通成本较高。
与 GAN 不同,扩散模型就像是拥有明确方向且稳定的设计团队,通过渐进式的优化逐步达成高质量的设计效果。下面我们继续来看一下扩散模型的工作原理。
四、扩散模型(Diffusion Models) 的工作原理
扩散模型之所以这样命名,是因为它的生成过程和物理学上的分子扩散过程非常相似,就像把冰融化为水再把水冻结成冰,水会在这个过程中逐渐移动和扩散。
扩散模型也是由主要的两个步骤组成,正向扩散和反向扩散,正向扩散是逐步增加噪声直至原始图像没有任何可以辨别的特征,反向扩散是逐步去除噪声直至恢复原始的数据让画面可辨认。
看不懂没有关系,同样我们做个比喻,比如用文物修复师的角色来形容扩散模型的工作原理,文物修复师的工作是修复一件经历了严重损坏的古老珍贵文物。
1. 损坏模拟(正向扩散的加噪过程):
修复师修复文物的时候,首先需要完全了解损坏的过程。因此他采取了一个看似逆向的方法:他先对一个完好无损的相似文物进行人工老化和损坏处理,逐步施加各种损害,比如裂纹、掉漆、褪色等,模拟多年来可能发生的自然磨损。
这个过程相当于扩散模型中的正向过程,即逐步增加噪声。这里的“噪声”不是字面意义上的声音,而是指对文物中的各种损坏因素(裂纹、掉漆、褪色等),让它从完好的状态逐渐变为完全损坏的状态。
2. 文物修复(反向扩撒的去噪过程):
接下来就到了修复师把老化的文物恢复到它原始未受损的状态。这需要非常高超的技术和对文物原始状态的深刻理解。修复师会使用各种工具和化学物质,仔细地去除每一处人为的损坏,包括填补裂缝、重新上色、并修复褪色和磨损的部分。
这一过程对应扩散模型中的逆向过程,即逐步去除噪声。在这里,“去除噪声”意味着修复师在消除之前刻意添加的所有损坏的同时,逐步还原文物的原始状态。
3. 噪声:
在这个过程中,”噪声”指的是刻意施加到文物上的各种损坏因素。
这些“噪声”被有计划地逐步加入到文物的破坏中,来模拟文物被随机破坏。这个过程的目的是,在修复训练中创建一个从完全有序到完全无序的连续过程,以便文物修复师学习如何把随机破坏的文物重新恢复出完好的、精美的原始状态。
4. 噪声预测器和采样:
噪声预测器和采样在反向扩散中是不可或缺的关键技术。
噪声预测器可以想象成一个高级的诊断工具,文物修复师使用它来分析艺术品的损坏程度和类型。这个工具能够精确地确定每一处损伤的位置、深度和影响,为修复工作提供依据。
采样过程可以视为修复过程中的实际操作步骤,每一步操作都基于噪声预测器提供的数据。由于解决某一个破损的问题有很多种方法,所以采样的实际操作步骤也可以分为很多种。对应到模型中就是各种采样器,比如:Euler,Euler Ancestral,DDIM,DPM++ 2M Karras 等。再简单点来说,比如同一道数学题有多种解法,每一种解法就是一个个的采样器。
通过上面的形容,把扩散模型的“加噪”和“去噪”用文物修复的过程来描述,相信大家应该都懂了,其中文物修复师不仅要理解文物人为加速老化过程,还要掌握如何从极端损坏中恢复出文物的原始状态。经过这样不断的双重过程,加上修复工具(噪声预测器和采样等)的使用,先破坏再修复的方式,能够让文物修复师的能力逐渐提升,达到高质量还原文物的目的。回到扩散模型,就是让扩散模型在不断的加噪和去噪中不断训练,提高模型的能力,让其能够生成更高质量的图片或其它逼真数据的目的。
我们经常听到的 Stable Diffusion,与扩散模型(Diffusion Models)并不相等,扩散模型是通用的底层技术。而 Stable Diffusion 是一种实现了特定技术应用的扩散模型,OK,下面我们继续来看一下 Stable Diffusion 的工作流程。
五、Stable Diffusion 的工作流程
Stable Diffusion 虽然与扩散模型的基本原理相同,但它更注重条件生成,名称中的 Stable(稳定的)也强调了这一点,也正是因为条件生成的各项技术,才能让模型更接近我们的想法来生成图片,所以条件生成也是 Stable Diffusion 的核心功能。
1. 条件生成
条件生成技术在视觉领域扮演着核心角色,我们最常使用的文生图(Text-to-Image)就是其最基础的功能之一, 除了文本到图像的转换。如图像到图像(Image-to-Image)、图像修复(Inpainting)、图像扩展(Outpainting)以及深度到图像(Depth-to-Image)等。这些技术都在各个不同的方向解决控制视觉和图形的任务,下面来看一下它们具体是如何工作的。
① 文生图(Text-to-Image):文本到图像的转换
将文本转换为计算机能够理解的内容是 Stable Diffusion 最基本的功能,也就是我们常说的文生图功能。它由以下几部分组成。
分词器(Embedding):
由于计算机不能直接理解人类的语言,只能处理数字和符号。分词器的任务是把我们人类的语言转换成计算机可以理解的数字表示。举个例子,比如:“一只在草地上跳舞的猫”,经过分词器处理后可能是:‘一只’,‘在’,‘草地上’,‘跳舞’,‘的’,‘猫’。通过预先定义的词汇表,将每个词语映射成一个唯一的数字编号。比如:{‘一只’:1,‘在’:2, ‘草地上’:3,‘跳舞’:4,‘的’:5,‘猫’:6}。
嵌入(Embedding):
分词器把文本处理好以后,嵌入将数字编号转换为计算机可以处理的数字向量。嵌入向量可以让模型理解文本的含义,并进行后续的任务,例如文本分类、翻译或图像生成,也就是赋予词汇意义。
语言-图像对比预训练模型-CLIP(Contrastive Language-Image Pre-training):
通过学习大量的图像和对应的文本描述,CLIP 可以将两者联系在一起,使得模型能够根据图像找到相关的文本描述,根据文本描述找到相关的图像。为计算机提供理解自然语言和视觉内容之间关联的能力,来指导图像的生成。
② 类标签(Class Labels)
类标签作为条件信息,可以帮助模型生成特定类别的图像。它作为一种补充信息能够提高生成图像的准确性。比如:“一支鲜花插在牛粪上”,可以使用“花”这个标签来确保生成图像中包含花的元素。还可以与特定的风格相关联,比如“漫画风格”“赛博朋克”等,或者与其他类别标签结合,比如:“赛博朋克风格的花插在牛粪上”,模型可以学习到每个类标签与特定图像风格的关联性,从而生成符合标签描述的风格图像。
虽然在 Stable Diffusion 中主要依赖于文本提示(prompt)来指导图像生成,但类标签在某些应用场景中可以进一步加强生成图像的准确性和多样性。
③ CFG Scale 值(Classification Free Guidance Scale)
CFG Scale 值是一种调节参数,它可以控制生成图像多大程度上符合我们给的文本描述或其他条件,数值越大与提示词的匹配度越高,反之越小。CFG Scale 值的范围一般在 5 到 15 之间,较高值通常在 7-12 可以生成更符合描述的图像,较低在 5 以下,可以生成更具创意的多样化图像。在 WebUI 中 CFG Scale 值过高出现的过拟合现象,就是模型在尽可能的把提示词中的元素全部画出来,呈现的效果细节会非常多效果很差,这种情况是因为采样的迭代步数不够,不能够画出所有的细节,提高迭代步数你会发现画面会比低 CFG Scale 值更加精细,画面也不会出现崩坏,但出图占用更多的算力,出图时间很长。
④ 图生图(Image-to-Image)
图生图在 Stable Diffusion 中可以实现图像风格转换、图像修复、图像扩展、图像编辑与变化、草图到完整图像等工作,它是以用户提供初始图像作为生成的基础,模型从初始图像开始,逐步增加或去除噪声,结合文本描述等其它条件逐渐从初始图像变为符合目标条件的最终图像。
⑤ 图像深度(Depth-to-Image)
利用深度传感器或者深度估计模型来生成图像深度图,把图像的深度信息作为条件引导,可以让模型理解图像中各个物体到摄像机的距离,能够更好地把握整个场景的几何结构,提高图像的准确性。
⑥ ControlNet