什么是Stable Diffusion
Stable Diffusion(稳定扩散)是一种基于扩散技术的深度学习文本到图像模型,于 2022 年发布。它被认为是正在进行的人工智能春天的一部分。
它主要用于生成以文本描述为条件的详细图像,但它也可以应用于其他任务,例如修复、外绘以及在文本提示引导下生成图像到图像的翻译。其开发涉及慕尼黑路德维希马克西米利安大学CompVis 小组和Runway的研究人员,并获得 Stability AI 的计算捐赠和来自非营利组织的训练数据。
Stable Diffusion是一种潜在扩散模型,是一种深度生成人工神经网络。它的代码和模型权重已经开源,并且它可以在配备至少 4 GB VRAM的适度GPU的大多数消费类硬件上运行。这标志着与之前只能通过云服务访问的专有文本到图像模型(例如DALL-E和Midjourney)的背离。
发展历史
Stable Diffusion 的开发是由初创公司 Stability AI 资助和塑造的。该模型的技术许可证由慕尼黑路德维希马克西米利安大学的 CompVis 小组发布。他的开发由Runway的 Patrick Esser和 CompVis 的 Robin Rombach 领导,他们是早期发明Stable Diffusion所使用的潜在扩散模型架构的研究人员之一。Stability AI 还将EleutherAI和LAION(一家德国非营利组织,组装了 Stable Diffusion 训练的数据集)作为该项目的支持者。
2022 年 10 月,Stability AI 在由Lightspeed Venture Partners和Coatue Management领投的一轮融资中筹集了 1.01 亿美元。
技术实现
软件架构
Stable Diffusion使用一种扩散模型(DM),称为潜在扩散模型 (LDM),由慕尼黑大学的 CompVis 小组开发。于 2015 年推出,训练扩散模型的目的是消除训练图像上连续应用的高斯噪声,可以将其视为一系列去噪自动编码器。Stable Diffusion由 3 部分组成:变分自动编码器(VAE)、U-Net和可选的文本编码器。VAE编码器将图像从像素空间压缩到更小维的潜在空间,捕获图像更基本的语义。在前向扩散过程中,高斯噪声被迭代地应用于压缩的潜在表示。U-Net 块由ResNet主干组成,对前向扩散向后的输出进行去噪以获得潜在表示。最后,VAE 解码器通过将表示转换回像素空间来生成最终图像。
去噪步骤可以灵活地以文本字符串、图像或其他形式为条件。编码后的调节数据通过交叉注意力机制暴露于去噪 U-Net 。为了对文本进行调节,固定的预训练 CLIP ViT-L/14 文本编码器用于将文本提示转换为嵌入空间。研究人员指出,LDM 的一个优势是提高训练和生成的计算效率。
U-Net 中有 8.6 亿个参数,文本编码器中有 1.23 亿个参数,按 2022 年标准,Stable Diffusion被认为相对轻量级,并且与其他扩散模型不同,它可以在消费级 GPU 上运行。
训练数据
Stable Diffusion 使用取自 LAION-5B 的图像和标题对进行训练,LAION-5B 是一个公开数据集,源自从网络上抓取的Common Crawl数据,其中 50 亿个图像文本对根据语言进行分类,并根据分辨率过滤成单独的数据集,包含水印的预测可能性,以及预测的“审美”分数(例如主观视觉质量)。该数据集由德国非营利组织LAION创建,该组织获得 Stability AI 的资助。 Stable Diffusion模型在 LAION-5B 的三个子集上进行训练:laion2B-en、laion-high-resolution 和 laion-aesthetics v2 5+。对模型训练数据的第三方分析发现,在从使用的原始更广泛数据集中获取的 1200 万张图像的较小子集中,大约 47% 的图像样本大小来自 100 个不同的领域,其中Pinterest采取了占子集的 8.5%,其次是WordPress、Blogspot、Flickr、DeviantArt和Wikimedia Commons等网站。Bayerischer Rundfunk 的一项调查显示,托管在 Hugging Face 上的 LAION 数据集包含大量私人和敏感数据。
训练程序
该模型最初在 laion2B-en 和 laion-高分辨率子集上进行训练,最后几轮训练是在 LAION-Aesthetics v2 5+ 上进行的,LAION-Aesthetics Predictor V2 预测该子集是 6 亿张带字幕图像的子集当被问及对自己的喜欢程度时,人类平均会给出至少 5 分(满分 10 分)。LAION-Aesthetics v2 5+ 子集还排除了低分辨率图像和 LAION-5B-WatermarkDetection 识别为带有大于 80% 概率的水印的图像。最后几轮训练还减少了 10% 的文本调节,以改进无分类器扩散指导。
该模型在Amazon Web Services上使用 256 个Nvidia A100 GPU进行了总共 150,000 个 GPU 小时的训练,成本为 600,000 美元。
限制
Stable Diffusion在某些情况下存在退化和不准确的问题。该模型的初始版本是在由 512×512 分辨率图像组成的数据集上进行训练的,这意味着当用户规格偏离其“预期”512×512 分辨率时,生成图像的质量会明显下降;Stable Diffusion模型的2.0版本更新后来引入了原生生成768×768分辨率图像的能力。另一个挑战是由于 LAION 数据库中肢体的数据质量较差而生成人体肢体。由于数据库中缺乏代表性特征,该模型没有经过充分的训练来理解人体四肢和面部,并且提示模型生成此类类型的图像可能会混淆模型。Stable Diffusion XL (SDXL) 1.0 版于 2023 年 7 月发布,引入了原生 1024×1024 分辨率并改进了肢体和文本的生成。
个人开发者的可访问性也可能是一个问题。为了针对数据集中未包含的新用例定制模型,例如生成动漫角色(“waifu扩散”),需要新数据和进一步训练。通过额外的再训练创建的Stable Diffusion的微调适应已用于各种不同的用例,从医学成像到算法生成的音乐。然而,这种微调过程对新数据的质量很敏感;低分辨率图像或与原始数据不同的分辨率不仅无法学习新任务,还会降低模型的整体性能。即使模型接受了高质量图像的额外训练,个人也很难在消费电子产品中运行模型。例如,waifu-diffusion 的训练过程需要至少 30 GB 的VRAM,这超出了Nvidia GeForce 30 系列等消费类 GPU 提供的通常资源,后者只有大约 12 GB。
Stable Diffusion 的创建者承认存在算法偏差的可能性,因为该模型主要是根据带有英文描述的图像进行训练的。因此,生成的图像强化了社会偏见,并且是从西方角度出发的,因为创建者指出该模型缺乏来自其他社区和文化的数据。与用其他语言编写的提示相比,该模型为用英语编写的提示提供了更准确的结果,西方或白人文化通常是默认表示。
最终用户微调
为了解决模型初始训练的局限性,最终用户可能会选择实施额外的训练来微调发电输出,以匹配更具体的用例,这一过程也称为个性化。可以通过三种方法将用户可访问的微调应用于Stable Diffusion模型检查点(checkpoint):
- “嵌入”可以从用户提供的图像集合中进行训练,并且只要在生成提示中使用嵌入的名称,模型就可以生成视觉上相似的图像。嵌入基于特拉维夫大学研究人员在Nvidia的支持下于 2022 年开发的“文本反转”概念,其中模型文本编码器使用的特定标记的向量表示与新的伪词相关联。嵌入可用于减少原始模型中的偏差,或模仿视觉风格。
- “超网络”是一种小型预训练神经网络,可应用于较大神经网络内的各个点,指的是NovelAI开发者 Kurumuz 在 2021 年创建的技术,最初旨在用于文本生成Transformer 模型。超网络将结果引向特定方向,允许基于Stable Diffusion的模型模仿特定艺术家的艺术风格,即使该艺术家未被原始模型识别;他们通过查找头发和眼睛等重要的关键区域来处理图像,然后将这些区域修补到辅助潜在空间中。
- DreamBooth是由Google Research和波士顿大学的研究人员于 2022 年开发的深度学习生成模型,通过一组描绘特定主题的图像进行训练后,可以对模型进行微调,生成描绘特定主题的精确、个性化的输出。
主要功能
Stable Diffusion模型支持通过使用描述要在输出中包含或省略的元素的文本提示从头开始生成新图像的能力。模型可以重新绘制现有图像,通过其扩散去噪机制合并文本提示描述的新元素(称为“引导图像合成” )。此外,当与支持此类功能的适当用户界面一起使用时,该模型还允许使用提示通过修复和修复来部分更改现有图像,其中存在许多不同的开源实现。
建议使用 10 GB 或更多 VRAM 运行Stable Diffusion,但是 VRAM 较少的用户可能会选择以float16精度加载权重,而不是默认的float32,以权衡模型性能与较低 VRAM 使用率。
文本到图像生成
Stable Diffusion 中的文本到图像采样脚本(称为“txt2img”)除了包含采样类型、输出图像尺寸和种子值的各种选项参数外,还使用文本提示。该脚本根据模型对提示的解释输出图像文件。生成的图像带有不可见的数字水印标记,以允许用户识别由Stable Diffusion生成的图像,尽管如果调整图像大小或旋转该水印就会失去其功效。
每个 txt2img 生成都会涉及一个影响输出图像的特定种子值。用户可以选择随机化种子以探索不同的生成输出,或者使用相同的种子来获得与先前生成的图像相同的图像输出。用户还可以调整采样器的推理步骤数;较高的值需要较长的持续时间,但较小的值可能会导致视觉缺陷。另一个可配置选项,无分类器指导比例值,允许用户调整输出图像与提示的紧密程度。更具实验性的用例可能会选择较低的比例值,而针对更具体输出的用例可能会使用更高的值。
Stable Diffusion的前端实现提供了额外的 text2img 功能,允许用户修改文本提示特定部分的权重。强调标记允许用户通过用括号将关键字括起来来添加或减少对关键字的强调。调整部分提示权重的另一种方法是“负面提示”。负提示是一些前端实现中包含的一项功能,包括 Stability AI 自己的 DreamStudio 云服务,并允许用户指定模型在图像生成过程中应避免的提示。指定的提示可能是不期望的图像特征,由于用户提供的积极提示,或者由于模型最初的训练方式(常见的例子是被损坏的人手),这些特征可能会出现在图像输出中。
图像修改
Stable Diffusion 还包括另一个采样脚本“img2img”,它使用文本提示、现有图像的路径以及 0.0 和 1.0 之间的强度值。该脚本根据原始图像输出一个新图像,该图像还具有文本提示中提供的元素。强度值表示添加到输出图像的噪声量。较高的强度值会在图像内产生更多的变化,但可能会产生在语义上与所提供的提示不一致的图像。
img2img 向原始图像添加噪声的能力使其对于数据匿名化和数据增强具有潜在的用途,其中图像数据的视觉特征被改变和匿名化。相同的过程也可用于图像升级,其中图像的分辨率增加,并且更多细节可能被添加到图像中。此外,Stable Diffusion已作为图像压缩工具进行了实验。与JPEG和WebP相比,Stable Diffusion中用于图像压缩的最新方法在保留小文本和面部方面存在局限性。
Stable Diffusion模型的众多前端实现提供了通过 img2img 进行图像修改的其他用例。修复涉及有选择地修改由用户提供的图层蒙版描绘的现有图像的一部分,这会根据提供的提示用新生成的内容填充蒙版空间。 Stability AI 在发布 Stable Diffusion 2.0 的同时创建了一个专门针对修复用例进行微调的专用模型。相反,外画将图像扩展到其原始尺寸之外,用根据提供的提示生成的内容填充先前的空白空间。
2022 年 11 月 24 日,随着 Stable Diffusion 2.0 的发布,引入了名为“深度2img”的深度引导模型;该模型推断所提供的输入图像的深度,并根据文本提示和深度信息生成新的输出图像,这允许在生成的输出中保持原始输入图像的连贯性和深度。
ControlNet
ControlNet 是一种神经网络架构,旨在通过合并附加条件来管理扩散模型。它将神经网络块的权重复制为“锁定”副本和“可训练”副本。 “可训练”副本学习所需的条件,而“锁定”副本保留原始模型。这种方法确保使用小型图像对数据集进行训练不会损害可用于生产的扩散模型的完整性。 “零卷积”是权重和偏差都初始化为零的 1×1 卷积。在训练之前,所有零卷积都会产生零输出,从而防止 ControlNet 引起的任何失真。没有一层是从头开始训练的;该过程仍在微调,以保证原始模型的安全。这种方法可以在小规模甚至个人设备上进行训练。
版本发布
版本号 | 发布日期 | 笔记 |
---|---|---|
1.0 | ||
1.4 | 2022 年 8 月 | |
1.5 | 2022 年 10 月 | |
2.0 | 2022 年 11 月 | 在过滤后的数据集上从头开始重新训练。 |
2.1 | 2022 年 12 月 | |
XL 1.0 | 2023 年 7 月 | XL 1.0基础模型拥有35亿个参数,使其比以前的版本大约 3.5 倍。 |
XL Turbo | 2023 年 11 月 | 从 XL 1.0 中提取,以更少的扩散步骤运行。 |
Stable Diffusion版本发布
Stable Diffusion生成图片实例
以下是由Stable Diffusion生成的一些图片实例。
文章评论