万字长文:Stable Diffusion 保姆级教程_stable diffusion教程

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039

万字长文:Stable Diffusion 保姆级教程(文末领取资料)


2022年绝对是人工智能发作的元年,前有 stability.ai开源 Stable Diffusion模子,后有 Open AI发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone,Google推出Android。它们让AI不再是一个遥不可及的技术名词,而是触手可及、实着实在的智能应用工具。
差别于ChatGPT可以直接体验,Stable Diffusion需要自己部署后才能利用,所以国内了解的人还不多。但Stable Diffusion绝对是AI图像生成范畴的ChatGPT级的杀手产品——它利用超级简朴、完全开源免费,生成的图片以假乱真、震惊四座。今天,我将用万字保姆级教程教你如何一步一步在本地运行起Stable Diffusion,并手把手教你如何生成以假乱真的AI生成图片。
文章目次





    • 什么是Stable Diffusion


      • 核心概念


        • 自动编码器
        • U-Net
        • 文本编码器

      • 推理过程

    • 快速体验Stable Diffusion


      • 1. Dream Studio
      • 2. Replicate
      • 3. Playground AI
      • 4. Google Colab
      • 5. BaseTen

    • 本地部署Stable Diffusion


      • 系统配置需求]
      • 情况准备


        • 安装Git
        • 安装Python
        • 配置国内源

      • 安装Stable Diffusion Web Ui
      • 模子安装

    • 利用Stable Diffusion Web Ui


      • 界面介绍


        • txt2img
        • img2img

      • 界面汉化
      • prompt语法
      • 示例


        • 模子
        • Prompt
        • Negative prompt
        • 参数设置
        • 生成


    • Stable Diffusion资源列表


      • 1. Hugging Face
      • 2. Civitai
      • 3. Discord
      • 4. Rentry for SD


什么是Stable Diffusion

Stable Diffusion是一种潜在扩散模子(Latent Diffusion Model),能够从文本形貌中生成详细的图像。它还可以用于图像修复、图像绘制、文本到图像和图像到图像等任务。简朴地说,我们只要给出想要的图片的文字形貌在提Stable Diffusion就能生成符合你要求的逼真的图像!
Stable Diffusion将“图像生成”过程转换为逐渐去除噪声的“扩散”过程,整个过程从随机高斯噪声开始,颠末练习渐渐去除噪声,直到不再有噪声,终极输出更贴近文本形貌的图像。这个过程的缺点是去噪过程的时间和内存消耗都非常大,尤其是在生成高分辨率图像时。Stable Diffusion引入潜在扩散来解决这个问题。潜在扩散通过在较低维度的潜在空间上应用扩散过程而不是利用实际像素空间来减少内存和计算成本。
与DALL·E和Midjourney相比,Stable Diffusion最大的优势是开源,这就意味着Stable Diffusion的潜力巨大、发展飞快。Stable Diffusion已经跟许多工具宁静台进行了集成,且可用预练习模子数目众多(参见Stable Diffusion资源列表)。正是由于社区的活跃,使得Stable Diffusion在各种风格的图像生成上都有着出色的表现,随便给大家看几张我生成的图片:
ChilloutMix生成的写实韩风小姐姐  
SynthwavePunk生成的国风小姐姐  
InkPunk Diffusion生成的泼墨油彩风格的布偶猫  
核心概念

为了方便大家更好地理解后面的内容,下面对Stable Diffusion中的几个核心概念做简朴的说明。=
自动编码器

自动编码器 (VAE) 由两个主要部分组成:编码器和解码器。编码器会将图像转换为低维潜在表现(像素空间–>潜在空间),该表现将作为输入传递给U_Net。解码器做的事情刚好相反,将潜在表现转换回图像(潜在空间–>像素空间)。

自动编码/解码器
U-Net

U-Net 也由编码器和解码器组成,两者都由 ResNet 块组成。编码器将图像表现压缩为较低分辨率的图像,解码器将较低分辨率解码回较高分辨率的图像。

U-Net架构
为了防止 U-Net 在下采样时丢失重要信息,通常在编码器的下采样 ResNet 和解码器的上采样 ResNet 之间添加快捷连接。
此外,Stable Diffusion 中的 U-Net 能够通过交叉注意力层调节其在文本嵌入上的输出。 交叉注意力层被添加到 U-Net 的编码器和解码器部分,通常在 ResNet 块之间。
文本编码器

文本编码器会将输入提示转换为 U-Net 可以理解的嵌入空间。一般是一个简朴的基于Transformer的编码器,它将标志序列映射到潜在文本嵌入序列。

文本编码器
好的提示(prompt)对输出质量直观重要,这就是为什么现在大家这么夸大提示计划(prompt design)。提示计划就是要找到某些关键词或表达方式,让提示可以触发模子产生具有预期属性或结果的输出。
推理过程

Stable Diffusion的大致工作流程如下:
起首,Stable Diffusion模子将潜在种子和文本提示作为输入。 然后利用潜在种子生成巨细为 64×64 的随机潜在图像表现,而文本提示通过 CLIP 文本编码器转换为 77×768 的文本嵌入。
接下来,U-Net 以文本嵌入为条件迭代地对随机潜在图像表现进行去噪。 U-Net 的输出是噪声残差,用于通过调理算法计算去噪的潜在图像表现。 调理算法根据先前的噪声表现和猜测的噪声残差计算猜测的去噪图像表现。这里可选用的调理算法许多,每个算法各有优劣,对Stable Diffusion来说建议用以下几个:


  • PNDM scheduler(默认)
  • DDIM scheduler
  • K-LMS scheduler
去噪过程重复大约 50 次以渐渐检索更好的潜在图像表现。 完成后,潜在图像表现由变分自动编码器的解码器部分解码。
团体流程可以用下面的流程图表现:

Stable Diffusion工作流程
快速体验Stable Diffusion

假如你不想自己搭建Stable Diffusion情况,或者你想在自己动手部署Statble Diffusion之前,先体验一下Stable Diffusion的威力,可以尝试如下5个免费的工具:
1. Dream Studio

DreamStudio是Stable Diffusion的创造者Stability AI的官方网络应用程序。

Dream Studio dashboard
最大的优势是官方出品,支持stability.ai旗下的全部模子,包罗最新发布的Stable Diffusion v2.1。

Dream Studio模子选择
用Dream Studio生成图片需要消耗积分,注册是会免费赠予积分,用来体验基本够用。假如想生成更多图片可以花10美元购买积分,大约可以生成1000张图片。
2. Replicate

Replicate是一个机器学习模子共享平台,你可以通过API来分享或利用上面的模子。
大神cjwbw在Replicate上共享了Stable Diffusion v2.0模子,你可以免费测试。

Replicate界面
3. Playground AI

Playground AI是一个专注AI图像生成的网站,功能丰富、模子众多。近来也上线了最新的Stable Diffusion v2.1,可以免费利用,但限定每个用户每天最多生成1000张图片。

Playground AI界面
4. Google Colab

假如你是数据工程师或算法工程师,大概你更希望在Jupyter Notebook中利用Stable Diffusion。Anzor Qunash在Google Colab上共享了Stable Diffusion 2.0 Colab(已更新到2.1),你可以直接复制过来利用。

Stable Diffusion 2.0 Colab界面
该Notebook用gradio搭建了界面,只需点击运行按钮,就会显示Gradio UI界面。然后,您就可以在上面生成恣意数目的图像,并且可以调节参数,控制生成结果。
5. BaseTen

Baseten是一个MLOps平台,用于创业公司在生产阶段快速开发、部署和测试模子。BaseTen近来发布了对Stable Diffusion的API支持,并提供了一个演示页面。

BaseTen界面
这个工具非常简朴,只有一个文本框和一个生成按钮,没有其他参数可以调节,也没有生成数目的限定。
本地部署Stable Diffusion

本地部署Stable Diffusion最简朴的方法是利用Stable Diffusion Web Ui。
Stable Diffusion Web Ui是一套无代码、可视化的Stable Diffusion集成运行情况。它将Stable Diffusion的安装部署集成打包,提供一键安装脚本,并提供Web界面利用界面,极大简化了Stable Diffusion的利用和利用,让没有不懂代码的小白也能轻松上手利用Stable Diffusion模子。

Stable Diffusion Web Ui界面
系统配置需求

Stable Diffusion照旧比力吃资源的,因此对基础硬件有一定要求。


  • NVIDIA GPU 至少 4GB 显存
  • 至少 10GB 可用硬盘空间
上面的配置是Stable Diffusion运行起来的基础要求,假如想要生成速度快,显卡配置自然是越高越好,显存最好也上到8G。保举配置最好不低于:


  • NVIDIA RTX GPU 至少 8GB 显存
  • 至少 25GB 可用硬盘空间
假如本地机器配置达不到,可以思量用云假造主机。目前最经济的是AWS的g4dn.xlarge,¥3.711元/小时。
情况准备

Stable Diffusion Web Ui用Python开发,完全开源,因此在运行Stable Diffusion Web Ui前,我们需要安装Git来拉取Stable Diffusion Web Ui源代码,并安装Python。
安装Git

Git是一个开源的分布式版本控制系统。这里安装Git是为了获取Stable Diffusion Web Ui的代码。当然,假如不安装Git,我们也可以通过代码打包下载链接直接下载Stable Diffusion Web Ui的代码,但是如许获取的代码无法后续更新,每次Stable Diffusion Web Ui升级都要重新下载代码覆盖老版本代码。用Git就很方便,可以通过clone命令从代码库获取代码,通过git pull更新到最新版代码。
Git安装很简朴,只需到Git下载页面下载对应平台安装包安装即可(Linux发行版一般自带Git可以不用安装)。
Windows用户请注意,安装时在安装配置界面勾选上“Add a Git Bash Profile to Windows Terminal”选项。

安装Python

Python的安装方法有许多,这里保举大家通过Miniconda来安装。用Miniconda有几个利益:

  • 方便创建和管理多个Python假造情况。我建议每个Python项目都创建一套自己独立的Python假造情况,防止python情况或库版本不对导致代码运行出错。
  • Miniconda体积很小,只有conda+python+pip+zlib和一些其他常用的包,小巧机动。
大家只要到Miniconda下载页面下载对应平台的安装包即可,最新的Miniconda包罗_Python 3.10.9_。
下载完安装包直接双击安装即可(Linux版本在Shell中运行下载下来的shell脚本)。Windows用户请注意,当看到下面界面时,请务必勾选第一个选项,将Miniconda添加到情况变量PATH中。

配置国内源

由于 Python 第三方库的泉源是国外源,利用国内网络安装库时会出现下载迟钝、卡顿等征象,不但延伸时间,而且很容易安装失败。因此我们需要将 conda 的安装源替换成国内镜像,如允许以大幅提升下载速度,提高安装成功率。这里保举清华源,实行下方命令即可添加:
  1. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
复制代码
添加成功后可以通过conda config --show-sources检察当前源
  1. channels:
  2.   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  3.   - defaults
  4. show_channel_urls: True
复制代码
除了清华源,还可以添加中科大源或阿里云源
  1. 中科大的源
  2. conda config –add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
  3. 阿里云的源
  4. conda config --add channels http://mirrors.aliyun.com/pypi/simple/
复制代码
最后,运行conda clean -i清除索引缓存,保证用的是镜像站提供的索引。
安装Stable Diffusion Web Ui

情况配置好后,我们就可以开始安装Stable Diffusion Web Ui了。
起首从GitHub上下载Stable Diffusion Web Ui的源代码:
  1. git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
复制代码
下载完成后,cd stable-diffusion-webui进入Stable Diffusion Web Ui的项目目次,在项目目次里会看到webui.bat和webui.sh这两个文件,这两个文件就是Stable Diffusion Web Ui的安装脚本。


  • 假如你是Windows系统,直接双击运行webui.bat文件
  • 假如你是Linux系统,在控制台运行./webui.sh
  • 假如你是Mac系统,利用方法跟Linux相同
安装脚本会自动创建Python假造情况,并开始下载安装缺失的依赖库。这个过程大概会有点久,请耐心等待。假如中途安装失败,多半是网络连接超时,此时可以重新实行安装脚本,脚本会接着上次的下载安装位置继承安装。直到看到
  1. Running on local URL:  http://127.0.0.1:7860
复制代码
说明Stable Diffusion Web Ui安装成功。
用浏览器打开http://127.0.0.1:7860就会看到Stable Diffusion Web Ui的界面。

Stable Diffusion Web Ui界面
模子安装

Stable Diffusion Web Ui安装过程中会默认下载Stable Diffusion v1.5模子,名称为v1-5-pruned-emaonly。假如想用最新的Stable Diffusion v2.1,可以从Hugging Face上下载官方版本stabilityai/stable-diffusion-2-1。下载后将模子复制到models目次下的Stable-diffusion目次即可。完成后点击页面左上角的革新按钮,即可在模子下拉列表中看到新参加的模子。

Stable Diffusion Web Ui选择模子
除了尺度模子外,Stable Diffusion另有其他几种类型的模子,models目次下每一个子目次就是一种类型的模子,其中用的最多的是LoRA模子。
LoRA(Low-Rank Adaptation)模子是小型稳固扩散模子,可对尺度模子进行微调。它通常比尺度模子小10-100倍,这使得LoRA模子在文件巨细和练习结果之间取得了很好平衡。LoRA无法单独利用,需要跟尺度模子共同利用,这种组合利用方式也为Stable Diffusion带来了强盛的机动性。
LoRA模子下载后需要放到Lora目次中,利用时在提示中参加LoRA语法,语法格式如下:
  1. <lora:filename:multiplier>
复制代码
filename是LoRA模子的文件名(不带文件后缀)
multiplier 是LoRA 模子的权重,默认值为1,将其设置为 0 将禁用该模子。
关于Stable Diffusion提示的利用规则请参考这里。
利用Stable Diffusion Web Ui

界面介绍

Stable Diffusion Web Ui团体上分为2个部分,最上面是模子选择,可以从下拉列表中选择已下载的预练习模子

模子选择区
模子选择下面是一个Tab栏,这里是Stable Diffusion Web Ui提供的全部功能。

Stable Diffusion Web Ui功能模块


  • txt2img — 根据文本提示生成图像;
  • img2img — 根据提供的图像作为范本、结合文本提示生成图像;
  • Extras — 优化(清晰、扩展)图像;
  • PNG Info — 显示图像基本信息
  • Checkpoint Merger — 模子合并
  • Train — 根据提供的图片练习具有某种图像风格的模子
  • Settings — 系统设置
平常利用最多的是txt2imgimg2img,下面针对这2大块功能详细讲解。
txt2img

txt2img有三个地区:


  • 提示区
  • 参数调节区
  • 输出浏览区

txt2img功能区
提示区主要是2个文本框,可以输入提示文本。其中:
prompt: 主要是对于图像进行形貌。prompt对Stable Diffusion图像生成质量至关重要,因此假如想生成高质量图片,一定要在提示计划上下功夫。一个好的提示需要详细和具体,后面会专门讲解如何计划一个好的提示。
Negative prompt:主要是告诉模子我不想要什么样的风格或元素;
参数调节区提供了大量参数用于控制和优化生成过程:
Sampling method:扩散去噪算法的采样模式,差别采样模式会带来不一样的结果,具体需要在实际利用中测试;
Sampling steps:模子生成图片的迭代步数,每多一次迭代都会给 AI 更多的机会去对比 prompt 和 当前结果,从而进一步调解图片。更高的步数需要耗费更多的计算时间,但却不一定意味着会有更好的结果。当然迭代步数不敷肯定会低落输出的图像质量;
Width、Height:输出图像宽高,图片尺寸越大越消耗资源,显存小的要特别注意。一般不建议设置的太大,由于生成后可以通过 Extras 进行放大;
Batch count、 Batch size:控制生成几张图,前者计算时间长,后者需要显存大;
CFG Scale:分类器自由引导尺度,用于控制图像与提示的一致程度,值越低产生的内容越有创意;
Seed:随机种子,只要种子一样,参数和模子稳定,生成的图像主体就不会剧烈变化,适用于对生成图像进行微调;
Restore faces:优化面部,当对生成的面部不满意时可以勾选该选项;
Tiling:生成一张可以平铺的图像;
Highres. fix:利用两个步骤的过程进行生成,以较小的分辨率创建图像,然后在不改变构图的情况下改进其中的细节,选中该选项会有一系列新的参数,其中重要的是:
Upscaler:缩放算法;
Upscale by:放大倍数;
Denoising strength:决定算法对图像内容的保留程度。0什么都不会改变,1会得到一个完全差别的图像;
img2img

img2img跟txt2img界面类似,差别的是没有了txt2img中的参数调节区,取而代之的是图像范本区。

img2img功能区
我们可以上传范本图片让Stable Diffusion模拟,其他地方跟txt2img相同
界面汉化

通过这里下载简体中文语言文件,下载完成后将其复制到项目文件夹的“localizations”目次中。之后在Settings -> User interface -> Localization (requires restart),在下拉菜单中选择zh_CN。假如下拉列表中看不到zh_CN,请先点击右侧的革新按钮,然后就能在下拉列表中看到了。设置完成后记得点击页面上方的“Apply settings”按钮生存设置。

语言设置
语言设置需要重启才能生效。Ctrl + C先终止Stable Diffusion Web Ui服务,然后再运行webui.bat或webui.sh,重启后革新浏览器页面就能看到语言变成了简体中文了。

汉化界面结果
   ⚠注意:该汉化大概不完美,个别地方会漏汉化或汉化表达禁绝确,接待大家反馈错误和优化建议。有能力的朋侪建议用英文界面。
  prompt语法

为了产生具有特定风格的图像,必须以特定格式提供文本提示。 这通常需要添加_提示修饰符_或添加更多关键字或关键短语来实现。下面为大家介绍一下Stable Diffusion的prompt语法规则。
Stable Diffusion提示文本中的关键字或关键短语通过半角逗号分割,一般越靠前权重越高。我们可以通过提示修饰符来认为修改权重。


  • (tag):增加权重5%
  • [tag]:低落权重5%
  • (tag: weight):设置具体权重值
括号可以嵌套利用,例如:(tag)的权重为 1 × 1.05 = 1.05 1 \times 1.05 = 1.05 1×1.05=1.05,((tag))的权重为 1 × 1.05 × 1.05 = 1.1025 1 \times 1.05 \times 1.05 = 1.1025 1×1.05×1.05=1.1025。同理[tag]的权重为 1 1.05 = 0.952 \frac{1}{1.05} = 0.952 1.051​=0.952,[[tag]]的权重为 1 1.0 5 2 = 0.907 \frac{1}{1.05^2} = 0.907 1.0521​=0.907 。


  • [tag1 | tag2]:将tag1和tag2混合;
  • {tag1 | tag2 | tag3}:从标签聚会合随机选择一个标签;
  • [tag1 : tag2 : 0.5 ]:表现先用tag1生成,当生成进程到50%时,改用tab2生成;假如输入整数的话表现步长,好比10,意思是生成10步后改用tag2;
  • lora:filename:multiplier:LoRA模子引用语法
示例

模子

这里我将利用chilloutmix + KoreanDollLikeness生成写实风韩系偶像小姐姐。
起首需要下载chilloutmix模子(我用的是chilloutmix_NiPrunedFp32Fix.safetensors),将其拷贝到Stable-diffusion目次,还需要下载KoreanDollLikeness这个LoRA模子,将其拷贝到Lora目次。
然后在Stable Diffusion Web Ui主界面的模子选择中下拉选择chilloutmix_NiPrunedFp32Fix.safetensors。假如找不到该模子,可以点击右侧革新按钮革新一下。
Prompt

选择好模子后,我们开始计划prompt。起首我们引入LoRA
  1. <lora:koreanDollLikeness_v10:0.66>
复制代码
然后界说生成图片的风格,我们希望超写实风,可以用如下关键词:
  1. best quality, ultra high res, (photorealistic:1.4)
复制代码
其中photorealistic我们赋予较高的权重1.4。
接着来界说图片的主体内容,这里我将希望图片中出现的元素都做个权重加强:
  1. 1girl, thighhighs, ((school uniform)),((pleated skirt)), ((black stockings)), (full body), (Kpop idol), (platinum blonde hair:1), ((puffy eyes))
复制代码
最后,修饰一些表情、姿势的细节:
  1. smiling, solo focus, looking at viewer, facing front
复制代码
如许我们完备的promt是:
  1. <lora:koreanDollLikeness_v10:0.66>
  2. , best quality, ultra high res, (photorealistic:1.4)
  3. , 1girl, thighhighs, ((school uniform)),((pleated skirt)), ((black stockings)), (full body), (Kpop idol), (platinum blonde hair:1), ((puffy eyes))
  4. , smiling, solo focus, looking at viewer, facing front
复制代码
Negative prompt

我们还需要提供Negative prompt去除我们不想要的风格和元素:
  1. paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glan
复制代码
这里主要剔除了绘画风、简笔画、低质量、灰度图,同时去除雀斑、痤疮等皮肤瑕疵。
参数设置

为了让图片生成得更加真实自然,我们需要对参数做一些调解,需要调解的参数如下:


  • Sampler: DPM++ SDE Karras
  • Sample Steps: 28
  • CFG scale: 8
  • Size: 512x768
这里鼓励大家多尝试其他取值,上面只是我认为结果最好的一组参数。
生成

完成上面全部设置后,就可以点击Generate按钮生成图片了。生成速度由你的设备性能决定,在我的电脑上大约30s生成一张图片。

Stable Diffusion Web Ui生成结果
Stable Diffusion资源列表

好的生成质量离不开好的模子,这里为大家列出了Stable Diffusion预练习模子资源的获取泉源。
1. Hugging Face

Hugging Face是一个专注于构建、练习和部署先进开源机器学习模子的网站。
HuggingFace是Stable Diffusion模子创作的首选平台,目前平台上有270多个与Stable Diffusion相关的模子,用"Stable Diffusion"作为关键字就能搜到。

保举Dreamlike Photoreal 2.0这个模子,这是一个由Dreamlike.art制作的基于Stable Diffusion v1.5的真实感模子,生成结果非常接近真实照片。

另一个热门模子是Waifu Diffusion,保举尝试。
2. Civitai

Civitai是一个专为Stable Diffusion AI艺术模子计划的网站。该平台目前有来自250+创作者上传的1700个模子。这是迄今为止我所知的最大的AI模子库。你可以在上面分享自己的模子或生成作品。

3. Discord

在Stable Diffusion的Discord页面中有一个名为“Models-Embeddings”的专属频道,内里提供了许多可以免费下载的各种模子。

4. Rentry for SD

Rentry网站上有一个生存Stable Diffusion模子的页面sdmodels,上面由70多个模子可以免费下载。

利用这些模子资源的时候要注意:下载自界说AI模子会带来危险。例如,某些大概包罗NSFW(不安全)内容。
另一个风险是,这些自界说AI模子大概包罗恶意代码或恶意脚本,特别是CKPT文件。假如想要更安全地利用AI模子,请尽量选择safetensor文件类型。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表