<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">小明明s à domicile</title>
  <id>http://www.dongwm.com/atom.xml</id>
  <updated>2026-04-05T21:24:15.557160Z</updated>
  <link href="www.dongwm.com" />
  <link href="http://www.dongwm.com/atom.xml" rel="self" />
  <generator>Werkzeug</generator>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">关于本博客</title>
    <id>205</id>
    <updated>2019-04-23T00:00:00+00:00</updated>
    <published>2019-04-23T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/page/about-blog" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">这是一个使用asyncio生态开发的个人技术博客</summary>
    <content type="html">&lt;h3 id=&quot;关于本博客&quot;&gt;关于本博客&lt;/h3&gt;
&lt;p&gt;项目已经开源: &lt;a href=&quot;https://github.com/dongweiming/lyanna&quot;&gt;https://github.com/dongweiming/lyanna&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;文档请看: &lt;a href=&quot;https://dongweiming.github.io/lyanna/#/&quot;&gt;https://dongweiming.github.io/lyanna/#/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;概述&quot;&gt;概述&lt;/h3&gt;
&lt;p&gt;这是一个使用 asyncio 生态开发的个人技术博客。用到的主要的库如下：&lt;/p&gt;
&lt;p&gt;Web 框架: Sanic&lt;/p&gt;
&lt;p&gt;模板: Mako/Sanic-Mako&lt;/p&gt;
&lt;p&gt;数据库: TortoiseORM/aiomysql&lt;/p&gt;
&lt;p&gt;缓存: aiomcache&lt;/p&gt;
&lt;p&gt;KV 数据库: aioredis&lt;/p&gt;
&lt;p&gt;任务队列: arq&lt;/p&gt;
&lt;p&gt;其他 aio 扩展: Sanic-Auth、Sanic-wtf、sanic-session、aiotask-context、asyncblink、sanic-sentry、sanic-jwt、aiosmtplib&lt;/p&gt;
&lt;p&gt;博客后台部分：&lt;/p&gt;
&lt;p&gt;前端部分：ElementUI + Vue-CLI3 + Vue-Router + Vuex + Axios&lt;/p&gt;
&lt;p&gt;后端部分：Sanic + Sainc-jwt (是的，用了 JSON Web Token)&lt;/p&gt;
&lt;h3 id=&quot;功能&quot;&gt;功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;可以通过后台对文章、标签等做增删改查&lt;/li&gt;
&lt;li&gt;后台支持 Markdown 编辑 / 预览&lt;/li&gt;
&lt;li&gt;支持代码语法高亮&lt;/li&gt;
&lt;li&gt;支持 TOC&lt;/li&gt;
&lt;li&gt;支持文章搜索&lt;/li&gt;
&lt;li&gt;支持 Github 登录评论&lt;/li&gt;
&lt;li&gt;支持 Github 登录对文章和平台表态&lt;/li&gt;
&lt;li&gt;可以分享文章到微信 / 微博 / 豆瓣 / 印象笔记 / Linkedin&lt;/li&gt;
&lt;li&gt;支持 Hexo 等其他 Markdown 源文件的导入&lt;/li&gt;
&lt;li&gt;支持文章的语法高亮&lt;/li&gt;
&lt;li&gt;支持个人设置 (如设置头像，个人介绍)&lt;/li&gt;
&lt;li&gt;支持定制导航栏&lt;/li&gt;
&lt;li&gt;支持 RSS/Sitemap&lt;/li&gt;
&lt;li&gt;相关文章推荐 (根据相似标签)&lt;/li&gt;
&lt;li&gt;响应式设计&lt;/li&gt;
&lt;li&gt;支持集成 Sentry&lt;/li&gt;
&lt;li&gt;支持评论提及邮件&lt;/li&gt;
&lt;li&gt;支持 Github Cards. 本文就能看到卡片效果&lt;/li&gt;
&lt;li&gt;文章内容 (除代码部分之外) 自动「盘古之白」&lt;/li&gt;
&lt;li&gt;支持文章专题&lt;/li&gt;
&lt;li&gt;支持用 Docker Compose 本地开发&lt;/li&gt;
&lt;li&gt;支持 kubernetes 上运行&lt;/li&gt;
&lt;li&gt;Widget 系统，内置 aboutme、blogroll、most_viewed、latest_comments、tagcloud、html 等 widget&lt;/li&gt;
&lt;li&gt;导航栏项可以设置 icon (如 RSS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;关于我&quot;&gt;关于我&lt;/h3&gt;
&lt;h3 id=&quot;结尾&quot;&gt;结尾&lt;/h3&gt;
&lt;p&gt;欢迎 Star 和贡献代码 O (∩_∩)O~&lt;/p&gt;
&lt;p&gt;相信这个博客用到的 Sanic 和 aio 的各种细节会对大家学习了解 asyncio 和 aio 开发有帮助、带来灵感，欢迎技术探讨~&lt;/p&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/page/about-blog&quot;&gt;关于本博客&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - Controlnet</title>
    <id>204</id>
    <updated>2023-05-16T00:00:00+00:00</updated>
    <published>2023-05-16T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-controlnet/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍SD最重要的Controlnet</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;在 ControlNet 出现之前，AI 绘画更像开盲盒，在图像生成前，你永远都不知道它会是一张怎样的图。ControlNet 的出现，真正意义上让 AI 绘画上升到生产力级别。简单来说可以用 ControlNet 精准控制 AI 图像的生成效果。&lt;/p&gt;
&lt;p&gt;ControlNet 就是在大型扩散生成模型的基础上，再加上一个结构，使得扩散生成模型能够接受一个新的 “图像输入”。并且对模型的输出起到控制作用，使其与输入图像类似。&lt;/p&gt;
&lt;p&gt;在实际的 AI 绘图，用户要解决 2 个关键问题:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;图像的精准控制。例如确定背景、结构等&lt;/li&gt;
&lt;li&gt;图像的风格控制。例如确定动作、表情等&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;无论你使用再准确的提示词再好的微调模型也是无法实现的。而通过 ControlNet 的应用模型，可以让这 2 个问题获得解决。所以不仅是常见的人物画像，在建筑、室内、产品图、平面设计、海报等等领域都可以提高生产力甚至做出设计师难以做出的效果。&lt;/p&gt;
&lt;h3 id=&quot;安装&quot;&gt;安装&lt;/h3&gt;
&lt;p&gt;需要先安装扩展，点击「Extensions」Tab 下的「Install from URL」子 Tab，然后输入: &lt;a href=&quot;https://github.com/Mikubill/sd-webui-controlnet，再点击「Install」，在提示安装完成后，点击「Apply&quot;&gt;https://github.com/Mikubill/sd-webui-controlnet，再点击「Install」，在提示安装完成后，点击「Apply&lt;/a&gt; and restart UI」按钮重启 UI。&lt;/p&gt;
&lt;p&gt;接着需要下载应用模型。我使用了最新的 ControlNet-v1-1-nightly 的模型:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_ip2p.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_shuffle.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_tile.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11e_sd15_depth.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1e_sd15_tile.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_inpaint.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_lineart.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_mlsd.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_normalbae.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_scribble.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_seg.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/blob/main/control_v11p_sd15_softedge.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/blob/main/control_v11p_sd15s2_lineart_anime.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_softedge.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15s2_lineart_anime.pth -P ~/workspace/stable-diffusion-webui/models/ControlNet
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;这些模型文件都在 1.3G 左右，文件比较大，可以按需下载。&lt;/p&gt;
&lt;h4 id=&quot;解决安装报错问题&quot;&gt;解决安装报错问题&lt;/h4&gt;
&lt;p&gt;我在安装这个插件时，发现报错了:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;xcrun: error: invalid active developer path &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;/Library/Developer/CommandLineTools&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;, missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;需要安装 Mac 开发工具再重新安装:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;➜ xcode-select --install
➜ &lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/workspace/stable-diffusion-webui
➜ venv/bin/pip install svglib fvcore
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;初体验&quot;&gt;初体验&lt;/h3&gt;
&lt;p&gt;我们通过一个李多惠的照片在 txt2img 模式下生成图片作为例子:&lt;/p&gt;
&lt;p&gt;这个招聘的动作其实是复杂的，用提示词不可能表达出来，现在有了 ControlNet 就非常容易还原，下面是用 canny、openpose 这个两个不同的应用模型，加上对应大模型和提示词最终生成的图:&lt;/p&gt;
&lt;p&gt;Counterfeit:&lt;/p&gt;
&lt;p&gt;ReV Animated:&lt;/p&gt;
&lt;p&gt;可以看到每个图都固定对了动作，衣服结构、头发等细节也都非常还原。&lt;/p&gt;
&lt;p&gt;另外这次我们只讨论动作是不是正确，手部问题一直是 AI 绘画的难点 (SD 很难理解人应该有 5 个手指🤦🏻‍♀️)，负面提示词也很难解决，我之后会专门写一篇文章介绍怎么修复。&lt;/p&gt;
&lt;p&gt;接着了解一下各个参数及其意义:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Single Image。上传单张图片。&lt;/li&gt;
&lt;li&gt;Batch。处理多张图片。Input Directory 填写的是待处理的图片所在路径。&lt;/li&gt;
&lt;li&gt;Enable。在生图时激活 ControlNet，必选。&lt;/li&gt;
&lt;li&gt;Low VRAM。生图使用 ControlNet 会吃更多 VRAM，此选项可降低 VRAM 使用量。它是建议 8G 以下显存开启，我 16G 也会开启。&lt;/li&gt;
&lt;li&gt;Pixel Perfect。由 ControlNet 自动决定 Preprocessor 分辨率。&lt;/li&gt;
&lt;li&gt;Allow Preview。允许预览生图结果，会显示该模型侦测的线条或骨架。一会我们会展开&lt;/li&gt;
&lt;li&gt;Preprocessor 预处理器。Preprocessor 是先将上传的图片处理过一轮，例如 Scribbles 会将彩色图片转成线稿。通常 Preprocessor 和下面 Model 二者要一致，但如果你的图片不需要处理 (例如已经在 PS 里处理过了)，Preprocessor 可留空。&lt;/li&gt;
&lt;li&gt;Model。设置生图的时候使用哪个 ControlNet 模型。&lt;/li&gt;
&lt;li&gt;Control Weight。ControlNet 在生图时的权重。&lt;/li&gt;
&lt;li&gt;Starting Control Step。开始参与生图的步数。&lt;/li&gt;
&lt;li&gt;Ending Control Step。结束参与生图的步数。&lt;/li&gt;
&lt;li&gt;Preprocessor Resolution。预处理器的分辨率。当然我也建议勾选上面的「Pixel Perfect」让 ControlNet 自动决定。&lt;/li&gt;
&lt;li&gt;Control Mode。控制生图时，要 AI 平衡二者 (Balanced)，或是偏重你的提示词 (My prompt is more important)，还是偏重 ControlNet (ControlNet is more important)。&lt;/li&gt;
&lt;li&gt;Resize Mode。当生成图和原图的尺寸不一致时选择调整模式。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;应用模型介绍&quot;&gt;应用模型介绍&lt;/h3&gt;
&lt;p&gt;ControlNet 包含多个应用模型，这小节介绍几个主要的模型。这节的内容大部分来自于延伸阅读链接 5，我觉得比我之前的写的好，所以直接替换了。&lt;/p&gt;
&lt;h4 id=&quot;OpenPose姿势识别&quot;&gt;OpenPose 姿势识别&lt;/h4&gt;
&lt;p&gt;通过姿势识别，达到精准控制人体动作。除了生成单人的姿势，它还可以生成多人的姿势，此外还有手部骨骼模型，解决手部绘图不精准问题。以下图为例：左侧为参考图像，经 OpenPose 精准识别后，得出中间的骨骼姿势，再用文生图功能，描述主体内容、场景细节和画风后，就能得到一张同样姿势，但风格完全不同的图。&lt;/p&gt;
&lt;h4 id=&quot;Canny边缘检测&quot;&gt;Canny 边缘检测&lt;/h4&gt;
&lt;p&gt;Canny 模型可以根据边缘检测，从原始图片中提取线稿，再根据提示词，来生成同样构图的画面，也可以用来给线稿上色。&lt;/p&gt;
&lt;h4 id=&quot;HED边缘检测&quot;&gt;HED 边缘检测&lt;/h4&gt;
&lt;p&gt;跟 Canny 类似，但自由发挥程度更高。HED 边界保留了输入图像中的细节，绘制的人物明暗对比明显，轮廓感更强，适合在保持原来构图的基础上对画面风格进行改变时使用。&lt;/p&gt;
&lt;h4 id=&quot;Scribble黑白稿提取&quot;&gt;Scribble 黑白稿提取&lt;/h4&gt;
&lt;p&gt;涂鸦成图，比 HED 和 Canny 的自由发挥程度更高，也可以用于对手绘线稿进行着色处理。&lt;/p&gt;
&lt;h4 id=&quot;Mlsd直线检测&quot;&gt;Mlsd 直线检测&lt;/h4&gt;
&lt;p&gt;通过分析图片的线条结构和几何形状来构建出建筑外框，适合建筑设计的使用。&lt;/p&gt;
&lt;h4 id=&quot;Seg区块标注&quot;&gt;Seg 区块标注&lt;/h4&gt;
&lt;p&gt;通过对原图内容进行语义分割，可以区分画面色块，适用于大场景的画风更改。&lt;/p&gt;
&lt;h4 id=&quot;NormalMap法线贴图&quot;&gt;Normal Map 法线贴图&lt;/h4&gt;
&lt;p&gt;适用于三维立体图，通过提取用户输入图片中的 3D 物体的法线向量，以法线为参考绘制出一副新图，此图与原图的光影效果完全相同。&lt;/p&gt;
&lt;h4 id=&quot;Depth深度检测&quot;&gt;Depth 深度检测&lt;/h4&gt;
&lt;p&gt;通过提取原始图片中的深度信息，可以生成具有同样深度结构的图。还可以通过 3D 建模软件直接搭建出一个简单的场景，再用 Depth 模型渲染出图。&lt;/p&gt;
&lt;h4 id=&quot;Tile&quot;&gt;Tile&lt;/h4&gt;
&lt;p&gt;输入图片，选取一个区域，使其变清晰的模型。&lt;/p&gt;
&lt;h3 id=&quot;MultiControlNet&quot;&gt;Multi ControlNet&lt;/h3&gt;
&lt;p&gt;缺省安装后只会使用一个 ControlNet，但是叠加多个有助于生成更好的图片，所以可以开启多个 ControlNet 的组合使用，对图像进行多条件控制。例如对一张图像的背景和人物姿态分别进行控制，那可以配置 2 个 ControlNet，第 1 个 ControlNet 使用 Depth 模型对背景进行结构提取并重新风格化，第 2 个 ControlNet 使用 OpenPose 模型对人物进行姿态控制。此外在保持 Seed 种子数相同的情况下，固定出画面结构和风格，然后定义人物不同姿态，渲染后进行多帧图像拼接，就能生成一段动画。&lt;/p&gt;
&lt;p&gt;要激活 Multi ControlNet，需要进入「Settings」，在左侧菜单栏选择「 ControlNet」，拖动拉杆，设置要激活的 ControlNet 数量 (我设置成了 3):&lt;/p&gt;
&lt;p&gt;设置后需要重启 webui。&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2302.05543&quot;&gt;https://arxiv.org/abs/2302.05543&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lllyasviel/ControlNet&quot;&gt;https://github.com/lllyasviel/ControlNet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lllyasviel/ControlNet-v1-1-nightly&quot;&gt;https://github.com/lllyasviel/ControlNet-v1-1-nightly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Mikubill/sd-webui-controlnet&quot;&gt;https://github.com/Mikubill/sd-webui-controlnet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.uisdc.com/stable-diffusion-2&quot;&gt;https://www.uisdc.com/stable-diffusion-2&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-controlnet/&quot;&gt;Stable Diffusion高级教程 - Controlnet&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - 图生图(img2img)模式</title>
    <id>203</id>
    <updated>2023-05-16T00:00:00+00:00</updated>
    <published>2023-05-16T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-img2img/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">介绍Stable Diffusion的图生图(img2img)。顾名思义，除了根据正向和反向提示词之外，还需要基于一张图片生成图。</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;现在终于可以介绍 Stable Diffusion 除了文生图 (txt2img) 之外最重要的功能：图生图 (img2img)。顾名思义，除了根据正向和反向提示词之外，还需要基于一张图片生成图。这个模式下功能很多我们挨个说&lt;/p&gt;
&lt;h3 id=&quot;img2img&quot;&gt;img2img&lt;/h3&gt;
&lt;p&gt;图生图模式下的默认功能，我们先看一下主界面:&lt;/p&gt;
&lt;p&gt;上面还是正面提示词和负面提示词，接着是一个上传图片的区域，写着「Drop Image Here - or - Click to Upload」。然后就是相关参数，大部分在文生图里面已经见过，只有 Resize mode、Denoising strength 是新增的，我们挨个介绍:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Resize mode。当上传图片尺寸和要生成的图的尺寸不同时，需要选择调整大小方案。&lt;/li&gt;
&lt;li&gt;Sampling Method 用于去噪，平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。&lt;/li&gt;
&lt;li&gt;Sampling Steps 是去噪过程的采样步骤数。越多越好，但需要更长的时间。一般在 20-28 之间。&lt;/li&gt;
&lt;li&gt;宽度和高度 (Width/Height)，输出图像的大小。按需调整即可。&lt;/li&gt;
&lt;li&gt;Batch Count 批次数量，我更愿意用下面的 Batch size 调整生产图的总数。&lt;/li&gt;
&lt;li&gt;Batch size，每一批次要生成的图像数量。可以在测试提示时多生成一些，因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。&lt;/li&gt;
&lt;li&gt;CFG (Classifier Free Guidance) scale，提示词相关性， 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示)，3 (更有创意)，7 (遵循提示和自由之间的良好平衡)，15 (更加遵守提示)，30 (严格按照提示操作)，常用的是 7，做个平衡。测试时可以换这个值体验区别。&lt;/li&gt;
&lt;li&gt;Denoising strength。降噪强度，常翻译成「重绘幅度」，取值范围是 0-1，描述新生成的图片与原图的相似程度，数值越小，采样越少，相似度越高，算的越快 (采样数 = Denoising strength* Sampling Steps)&lt;/li&gt;
&lt;li&gt;Seed，生成的每个图像都有自己的种子值，修改这个值可以控制图像的内容。&lt;/li&gt;
&lt;li&gt;Script。用户可以编写脚本代码，以实现一些特殊定制的功能。这个未来可以具体说，目前还没有遇到。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先具体说说 Resize mode (当然上传的图片最好与生图设置的一致):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Just resize：调整图片为生图设置的宽高。若上传图片的宽高与生成设置的宽高不一致，则该图片会被压扁。这个我非常不推荐使用，会让图片非常奇怪。&lt;/li&gt;
&lt;li&gt;Crop and resize：裁切图片以符合生图的宽高，我最推荐的方式。&lt;/li&gt;
&lt;li&gt;Resize and fill：裁切并调整图片宽高，若上传图片的宽高与生成设置的宽高不一致，则多出来的区域会自动填满。&lt;/li&gt;
&lt;li&gt;Just resize (latent upscale)：调整图片大小为生图设置的宽高，并使用潜在空间放大。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个模式下最主要的就是调 Denoising strength 参数。我们用下面这张从网上找的新垣结衣的照片来体验:&lt;/p&gt;
&lt;p&gt;首先注意，我选择这个图是有 2 个原因的:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这个一张人像正面近像，在生成新图后更容易感受到 SD 的模型的作用&lt;/li&gt;
&lt;li&gt;照片可以看到手部有动作，我会生成一张有问题的图让你感受到目前图生图模式的问题&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我希望通过 SD 把这个真人照片做出动漫的效果，咱们先来个较大的 Denoising strength 的值，为了方便对比我用了固定的 Seed:&lt;/p&gt;
&lt;p&gt;我直接把生成参数列出来:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a woman with a short hair and a white shirt is posing for a picture with her hand on her chin, a photorealistic painting, Ayami Kojima, precisionism, perfect face
Negative prompt: dongwm-nt,bad finger, bad body
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 8, Seed: 2345567052, Size: 512x512, Model hash: cbfba64e66, Model: CounterfeitV30_v30, Denoising strength: 0.65, Clip skip: 2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里有一点需要特别的提一下，正面提示词不是我写的。在图生图模式里，生成按钮左边有 2 个选项，分别是「Interrogate CLIP」和「Interrogate DeepBooru」。在上传图片后，可以通过「Interrogate CLIP」反推出提示词，我这个就是这么生成的。另外也说一下「Interrogate DeepBooru」，这说的是一个开源的女孩图片特征提取器，上传图片可以获得图片的标签，我已经把链接都放在了延伸阅读里面:&lt;/p&gt;
&lt;p&gt;PS: 如果你选择 DeepBooru 反推，不能直接使用那些标签，你需要从中筛选需要的、合理的标签，否则结果会完全偏离。&lt;/p&gt;
&lt;p&gt;好的，说回来。之前已经说过，Denoising strength 的值越大越和原图不符，所以如果你希望「微调」，这个值不应该大于 0.4，现在我们先取了一个更大的值，你可以看到生成图的人物手部的结果是有问题的。而且注意，负面提示词 dongwm-nt 本身是包含 bad finger,bad body 这些的。&lt;/p&gt;
&lt;h4 id=&quot;图生图不是万能的甚至很难达到你的预期&quot;&gt;图生图不是万能的甚至很难达到你的预期&lt;/h4&gt;
&lt;p&gt;是的，这是我的体验。这个模式下如果你想要生成你想要的效果，对于大模型、微调模型、提示词、参数等都有要求，在前期，你很可能生成奇怪的图，你需要不断尝试总结经验。&lt;/p&gt;
&lt;h4 id=&quot;不同的Denoisingstrength效果的区别&quot;&gt;不同的 Denoising strength 效果的区别&lt;/h4&gt;
&lt;p&gt;我们使用 x/y/z 脚本试试不同的重绘幅度值看看生成的效果:&lt;/p&gt;
&lt;p&gt;可以看到随着 Denoising strength 变大，越来越不像原图了。&lt;/p&gt;
&lt;p&gt;同时，我们还可以重叠各种微调模型，下面是使用了 VAE、Lora 和 HyperNetwork 后的效果:&lt;/p&gt;
&lt;p&gt;这就是微调模型的作用，不过注意，微调后手部后两张还是会有问题。&lt;/p&gt;
&lt;p&gt;PS，这个例子用的主模型是: &lt;a href=&quot;https://civitai.com/models/4468/counterfeit-v30&quot;&gt;https://civitai.com/models/4468/counterfeit-v30&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;绘图(Sketch)&quot;&gt;绘图 (Sketch)&lt;/h3&gt;
&lt;p&gt;第二个 Tab 是 Sketch，他适合有美术基础的用户，可以给一张现有的图加东西，或者画出你想要的东西，然后再输入提示词完善，我这个没有画画细胞的人基本不用，在这里也举 2 个例子 (我也就这个水平啦)。&lt;/p&gt;
&lt;p&gt;因为我们一会要用笔刷编辑图片，我需要用到颜色，所以加启动参数，重启 webui:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./webui.sh --disable-safe-unpickle --gradio-img2img-tool color-sketch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ok, 先尝试基于现有图做修改的，我用了下面这张图:&lt;/p&gt;
&lt;p&gt;上传后就进入了编辑模式，然后我用笔刷选了个粉色的把头发涂变色 (当然提示词中并没有提到粉色头发):&lt;/p&gt;
&lt;p&gt;可以看到 Denoising strength 到了 0.7 才看起来正常，前面的那个「涂」的效果很明显。所以如果你使用和原图差别很大的颜色涂，那么需要更大的重绘幅度值，但是相对的，生成图和原图差别很大。如果选择对比色较少的例如黑色，那么重绘幅度 0.4 可能就够了。&lt;/p&gt;
&lt;p&gt;接着我们试试完全从零画一幅画 (叫「涂鸦」更合适)，为了展示 SD 的厉害之处，我特意选择了一个「复杂」的构图，在本灵魂画手非常努力作画后，看一下生成图的效果这样的:&lt;/p&gt;
&lt;p&gt;注意哈，因为这个模式需要上传图，所以我这里只是截了个终端的黑色区域作为背景图。我知道大家看不懂我的 Sketch🤦🏻 ♀️，解释一下，这幅画我希望展示蓝天白云，下面是草地和几棵树 (提示词也非常直白)，草地中间还有一点小溪（实在不知道溪水用什么颜色就直接换个绿区别一下）中间黑色的是背景我没涂东西，主要想看看 SD 会怎么理解。&lt;/p&gt;
&lt;p&gt;这个效果我还是很满意的，可以说 0.65 的图已经完全达到我的预想了。&lt;/p&gt;
&lt;p&gt;PS: 这种绘画的方法需要更大的 Denoising strength 值，否则用户就得具有极强的画画天赋啦&lt;/p&gt;
&lt;h3 id=&quot;局部绘制(Inpaint)&quot;&gt;局部绘制 (Inpaint)&lt;/h3&gt;
&lt;p&gt;用户指定在图像中特定区域进行修改，而保证其他区域不变。这个我认为图生图模式下最又实用价值的模式，类似换脸、换衣服、换背景等等需要都可以通过它来实现。在上面的 Sketch 里面的例子一，我曾经想给新垣结衣换头发颜色，但是需要 Denoising strength 值比较大才会看起来正常，但是通过也和原图差别非常大了。而局部绘制可以平缓的给新垣结衣换头发颜色。来试试:&lt;/p&gt;
&lt;p&gt;我涂黑了头发，当然差不多就可以，SD 会清楚你想把头发改颜色，另外要在提示词加上 pink hair 让 SD 朝着粉色头发来。可以看到随着 Denoising strength 增大，头发越来越粉。&lt;/p&gt;
&lt;p&gt;接着看一下参数:&lt;/p&gt;
&lt;p&gt;这次新增 5 个参数:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mask blur。图片上的笔刷毛边柔和程度。我一般默认&lt;/li&gt;
&lt;li&gt;Mask mode。选择要让 AI 填满涂黑区域 (Inpaint masked)，或是填满未涂黑区域 (Inpaint not masked)。&lt;/li&gt;
&lt;li&gt;Masked content。要填充的内容类型。Fill：让 AI 参考涂黑附近的颜色填满区域；Original：在填满区域的时候参考原图底下的内容；latent noise：使用潜在空间填满，可能会生出跟原图完全不相关的内容；latent nothing：使用潜在空间填满，不加入噪声&lt;/li&gt;
&lt;li&gt;Inpaint area。选择要填满整张图片 (Whole picture) 或是只填满涂黑的区域 (Only masked)&lt;/li&gt;
&lt;li&gt;Only masked padding, pixels。像素内距。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;局部绘制-涂鸦蒙版(Inpaintsketch)&quot;&gt;局部绘制 - 涂鸦蒙版 (Inpaint sketch)&lt;/h3&gt;
&lt;p&gt;局部绘制 Inpaint 的一个更细的分类，它们的区别是局部绘制中，用户涂黑的部分表示该部分可以被重绘，而在局部绘制 - 涂鸦蒙版（inpaint sketch）中，用户涂鸦的部分不仅表示可以重绘，用户涂鸦的内容还会成为图像生成的内容来源，换个表达方法，局部绘制 - 涂鸦蒙版是「局部绘制 (Inpaint)」+「绘图 (Sketch)」的组合，通过一个例子来理解:&lt;/p&gt;
&lt;p&gt;我涂了 2 个地方：1. 头发上的墙上背景，我希望它被 P 掉，2 粉色头发。然后提示词加了 pink hair 让 SD 能更理解我表达。所以最终生成的图里面的特点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;除了头发和背景改变，对人物外貌动作等未改变 (因为没有产生绘制)，而且头发形状整体保持住了。&lt;/li&gt;
&lt;li&gt;我 sketch 使用了一个偏紫的颜色，所以生成的图的头发颜色参考了这个颜色生成的微紫的粉色&lt;/li&gt;
&lt;li&gt;可以看到 0.6 的效果是最好的，值越小越偏原图就能看出我涂鸦的痕迹，值越大头发走的越偏离我的意思&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;局部绘制-上传蒙版(Inpaintupload)&quot;&gt;局部绘制 - 上传蒙版 (Inpaint upload)&lt;/h3&gt;
&lt;p&gt;可以在其他工具里 (例如 PS) 做好蒙版上传，而不是在 SD 里面创建蒙版。对于一些专业的用户这是一种更好的选择，因为在浏览器绘制蒙版的功能很简陋，其他专业软件做出来的效果会好得多。不过我不会 PS 这里就不举例了。&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.kanotype.net:8003/deepdanbooru/&quot;&gt;http://dev.kanotype.net:8003/deepdanbooru/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/KichangKim/DeepDanbooru&quot;&gt;https://github.com/KichangKim/DeepDanbooru&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-img2img/&quot;&gt;Stable Diffusion高级教程 - 图生图(img2img)模式&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - 微调模型</title>
    <id>202</id>
    <updated>2023-05-16T00:00:00+00:00</updated>
    <published>2023-05-16T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-models/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍SD的微调模型</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;这节我们专门介绍 Stable Diffusion 里面各个微调模型。&lt;/p&gt;
&lt;h3 id=&quot;为什么会有这么多类型的模型？&quot;&gt;为什么会有这么多类型的模型？&lt;/h3&gt;
&lt;p&gt;如果你点开 C 站的过滤器，你会发现模型的类型很多:&lt;/p&gt;
&lt;p&gt;除了类型为 Checkpoint 的主模型，以外还有非常多的模型，有些你可能听过有些也是第一次看到，当然，未来还会出现更多类型的这种微调模型。根据我的学习，先解释下为什么会有这么多类型的模型。&lt;/p&gt;
&lt;p&gt;这么多模型是模型发展历史的产物。在一开始，Stable Diffusion 是从无到有训练大模型，成本很高。因为训练通用大模型非常烧钱，之前我看其他文章，GPT-3 训练一次的成本约为 140 万美元，对于一些更大的 LLM（大型语言模型），训练成本介于 200 万美元至 1200 万美元之间。除了花钱，也非常耗时间，需要一个专门团队维护。&lt;/p&gt;
&lt;p&gt;虽然这种基础模型并没不好用，但是他们打下了很好地基础，之后 Stable Diffusion 所有的模型都是在这种模型基础上微调出来的。不过随着 Stable Diffusion 越来越流行，大模型生成的图越来越不满意不同用户的需求，所以就开始诞生各种调整技术的出现。&lt;/p&gt;
&lt;p&gt;一开始是对大模型的参数的训练，这就诞生了在 C 站看到的各个 Checkpoint 类型的模型，这种 Checkpoint 主模型需要的 GPU、时间、人员相对于大模型来说已经非常经济了，但是，Checkpoint 只满足一（多）个类用户的需求，但是细分下去还是细节和准确度不够，也不够灵活，势必出现非常垂直的解决方案。&lt;/p&gt;
&lt;p&gt;接着出现了 Embedding 模型，由于它只训练负责的文本理解的模块，体积很小，训练也没什么门槛，效果却不错，逐渐被用户接受。然后相继出现了兼顾效果、文件体积、训练时间、训练难度等方面的 Lora、Hypernetwork。就是这样新模型不断涌现，最近几个月最热门的是 Lora，而最近一个月 Lycoris 效果也非常好。&lt;/p&gt;
&lt;p&gt;Textual Inversion 之前已经专门写过一篇，而 Controlnet 之后会专门写，所以这篇仅介绍美学梯度、Lora、Hypernetworks、LyCORIS 这几个模型。&lt;/p&gt;
&lt;h3 id=&quot;美学梯度(AestheticGradients)&quot;&gt;美学梯度 (Aesthetic Gradients)&lt;/h3&gt;
&lt;p&gt;它的思路是在通过一张或者几张参考图生成一个美学模型，最终对提示词进行调整和加权。&lt;/p&gt;
&lt;p&gt;原项目是: &lt;a href=&quot;https://github.com/vicgalle/stable-diffusion-aesthetic-gradients&quot;&gt;https://github.com/vicgalle/stable-diffusion-aesthetic-gradients&lt;/a&gt; ，其中 &lt;a href=&quot;https://github.com/vicgalle/stable-diffusion-aesthetic-gradients/tree/main/aesthetic_embeddings&quot;&gt;aesthetic_embeddings&lt;/a&gt; 目录下有一些准备好的 Embedding。&lt;/p&gt;
&lt;p&gt;如果你想要使用它，需要使用 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients&lt;/a&gt; 这个扩展，这样就可以在「Aesthetic imgs embedding」里面选择对应的 Embedding。&lt;/p&gt;
&lt;p&gt;现在它已经是落后的模型方案了，效果相对于其他方案来说比较差，且大模型可能以及集成它的算法，现在已经没什么人用了。&lt;/p&gt;
&lt;h3 id=&quot;LoRA&quot;&gt;LoRA&lt;/h3&gt;
&lt;p&gt;LoRA（全称 Low-Rank Adaptation of large language models）直译为大型语言模型的低阶自适应，通过矩阵分解的方式，微调少量参数，并加总在整体参数上，所以它现在主要用来控制很多特定场景的内容生成。&lt;/p&gt;
&lt;p&gt;当然我们不需要理解它的算法，你可以简单的认为它是特定概念 (例如画风、动作、特定对象、角色等特征) 图片的训练集即可，他会引导 SD 生成符合训练结果的图片，而不会让 SD 自由发挥。它的模型大小普遍在几十到上百 M，它比较热门的主要原因我觉得是训练难度低且效果非常好。&lt;/p&gt;
&lt;p&gt;通过例子看效果，还是用 blindbox (大概是盲盒): &lt;a href=&quot;https://civitai.com/models/25995/blindbox&quot;&gt;https://civitai.com/models/25995/blindbox&lt;/a&gt; 。对比下不用 LoRA 和用 LoRA 的区别:&lt;/p&gt;
&lt;h3 id=&quot;Hypernetwork&quot;&gt;Hypernetwork&lt;/h3&gt;
&lt;p&gt;Hypernetwork 是 NovelAI 软件开发员 Kurumuz 在 2021 年创造的一个单独的神经网络模型，它和 LoRA 很类似，它是让梯度作用于模型的扩散 (Diffusion) 过程。扩散过程中的每一步都通过一个额外的小网络来调整去噪过程的结果。这个模型主要用于画风。&lt;/p&gt;
&lt;p&gt;通过例子看效果，用 InCase style: &lt;a href=&quot;https://civitai.com/models/5124/incase-style-hypernetwork。对于下不用Hypernetwork和用Hypernetwork的区别&quot;&gt;https://civitai.com/models/5124/incase-style-hypernetwork。对于下不用 Hypernetwork 和用 Hypernetwork 的区别&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;但是和 Textual Inversion 一样，由于其效果和训练难度的原因（需要设置网络结构、训练参数等），目前并没有成为主流选择。&lt;/p&gt;
&lt;h3 id=&quot;LyCORIS&quot;&gt;LyCORIS&lt;/h3&gt;
&lt;p&gt;LyCORIS (Lora beYond Conventional methods) 是最近开始流行的一种新的模型，如其名字是一种超越传统方法的 Lora，但是要比 LoRA 能够微调的层级多，它的前身是 LoCon (LoRA for convolution layer)。&lt;/p&gt;
&lt;p&gt;LoCon 和 LoHA (LoRA with Hadamard Product representation) 都是 LyCORIS 的模型算法，如果 C 站模型下载页面如果明确说是 LoCon 那就是 LoHA&lt;/p&gt;
&lt;p&gt;现在 stable-diffusion-webui 还没有自带它，所以需要先安装扩展: &lt;a href=&quot;https://github.com/KohakuBlueleaf/a1111-sd-webui-lycoris&quot;&gt;https://github.com/KohakuBlueleaf/a1111-sd-webui-lycoris&lt;/a&gt; 。 首先点「Extensions」，再点「Install from URL」把地址输入后点「Install」等待提示完成。&lt;/p&gt;
&lt;p&gt;注意和其他扩展不同，安装不能点击「Apply and restart UI」不能生效，需要重启 webui 进程。&lt;/p&gt;
&lt;p&gt;接着我们去站找个模型，就拿「Miniature world style 微缩世界风格」: &lt;a href=&quot;https://civitai.com/models/28531/miniature-world-style&quot;&gt;https://civitai.com/models/28531/miniature-world-style&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;➜ wget https://civitai.com/api/download/models/34223 -O ~/workspace/stable-diffusion-webui/models/LyCORIS/miniatureV1.1c21.safetensors
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;注意，LyCORIS 有独立的 Tab，没有和 Lora 混在一起，但它的用法和 LoRA 很像:&lt;/p&gt;
&lt;p&gt;对比下用 LyCORIS 的区别:&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/612992813&quot;&gt;https://zhuanlan.zhihu.com/p/612992813&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/KohakuBlueleaf/LyCORIS&quot;&gt;https://github.com/KohakuBlueleaf/LyCORIS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2106.09685&quot;&gt;https://arxiv.org/abs/2106.09685&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/1609.09106&quot;&gt;https://arxiv.org/abs/1609.09106&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-models/&quot;&gt;Stable Diffusion高级教程 - 微调模型&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - VAE</title>
    <id>201</id>
    <updated>2023-05-03T00:00:00+00:00</updated>
    <published>2023-05-03T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-vae/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍SD的微调模型VAE</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;这小节我们开始学习 Stable Diffusion 里面的 VAE，它的全称是变分自动编码器 (Variational Auto-Encoder)，是机器学习中的一种人工神经网络结构。当然我们都不必了解的它的原理，只需要理解它是在 SD 模型的基础做微调的，类似于我们熟悉的滤镜，让生成的图片调整饱和度。&lt;/p&gt;
&lt;h3 id=&quot;在页面上显示VAE设置&quot;&gt;在页面上显示 VAE 设置&lt;/h3&gt;
&lt;p&gt;stable-diffusion-webui 默认页面并没有显示 VAE 设置部分，所以需要先设置一下。首先点击「Settings」，然后点左侧菜单的「User interface」这个 Tab，拉到下面有个选项叫做 Quicksettings list，在输入框里面添加，sd_vae,CLIP_stop_at_last_layers:&lt;/p&gt;
&lt;p&gt;最后点击上面的「Apply settings」，在点「Reload UI」就会重新刷新页面，即可看到头部的 VAE 区域:&lt;/p&gt;
&lt;p&gt;另外我也顺手打开了 Clip skip，在 C 站的图片参数中都有 Clip skip 选项，默认是 1，需要改成常用的 2，可以简单的理解这个值越高，AI 就会省略越多的分类细项。&lt;/p&gt;
&lt;h3 id=&quot;下载VAE模型&quot;&gt;下载 VAE 模型&lt;/h3&gt;
&lt;p&gt;目前我们还没有任何的 VAE 模型，需要下载再使用。VAE 主要是从 Huggingface 下载，而 C 站 VAE 比较少，并没有一个专门的过滤分类，只能通过搜索框输入 vae 过滤:&lt;/p&gt;
&lt;p&gt;另外一个方式是看主模型下的提示，很多知名主模型里面会有 VAE 相关的内容，例如有打包 VAE 的模型 (自带的就不需要额外加了)，或者在描述中建议你使用什么 VAE。&lt;/p&gt;
&lt;p&gt;举个例子: &lt;a href=&quot;https://civitai.com/models/6925/realdosmix&quot;&gt;RealDosMix&lt;/a&gt; 的描述中提到:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.ckpt&quot;&gt;https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.ckpt&lt;/a&gt;   &lt;a href=&quot;https://huggingface.co/AIARTCHAN/aichan_blend/tree/main/vae&quot;&gt;https://huggingface.co/AIARTCHAN/aichan_blend/tree/main/vae&lt;/a&gt;  Apply VAE. You will get better color results.&lt;/p&gt;
&lt;p&gt;所以我们把这些 VAE 模型下载并把它放入到 models/VAE 目录下:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt -O ~/workspace/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.ckpt
wget https://huggingface.co/AIARTCHAN/aichan_blend/resolve/main/vae/Anything-V3.0.vae.safetensors -O ~/workspace/stable-diffusion-webui/models/VAE/Anything-V3.0.vae.safetensors
wget &lt;span class=&quot;s2&quot;&gt;&amp;quot;https://huggingface.co/AIARTCHAN/aichan_blend/resolve/main/vae/Berry&amp;#39;s%20Mix.vae.safetensors&amp;quot;&lt;/span&gt; -O ~/workspace/stable-diffusion-webui/models/VAE/BerrysMix.vae.safetensors
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;下载好，然后点击 VAE 设置项右边的刷新按钮就可以看到这些模型了:&lt;/p&gt;
&lt;p&gt;接着使用前面说的 X/Y/Z plot 脚本对比一下不加 VAE 和加了这三个 VAE 其中之一的效果:&lt;/p&gt;
&lt;p&gt;所谓没有对比就没有伤害，对比明显可以感受到不加 VAE 图片优点灰蒙蒙的，不够鲜艳，另外是细节不够，而加了不同的 VAE 都有了更好的颜色效果，细节更全了 (微调)。&lt;/p&gt;
&lt;p&gt;最后，注意不同的 VAE 适配的模型不同，也不是某个 VAE 可以用在任何模型下，否则可能会生成非常奇怪的图。&lt;/p&gt;
&lt;h3 id=&quot;为什么VAE模型比较少？&quot;&gt;为什么 VAE 模型比较少？&lt;/h3&gt;
&lt;p&gt;我觉得主要的原因是很多软件已经实现了滤镜相关的功能，例如 PS、一些美颜 App、剪映等等。它们的效果更全更好，而且门槛很低。&lt;/p&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-vae/&quot;&gt;Stable Diffusion高级教程 - VAE&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - Script</title>
    <id>200</id>
    <updated>2023-05-01T00:00:00+00:00</updated>
    <published>2023-05-01T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-script/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍SD的脚本(Script)的用途、常用脚本、安装方法以及如何开发脚本</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;这节主要介绍 stable-diffusion-webui 提供的脚本 (script) 功能。脚本和扩展一样也被独立出来，脚本主要是涉及生成图片的逻辑上，不涉及生成算法，类似于 Python 语言的装饰器的用途，可以在生成图片前按照规则调整提示词、参数值等内容，对于执行的每个步骤插入更多的操作。&lt;/p&gt;
&lt;h3 id=&quot;脚本和扩展的区别&quot;&gt;脚本和扩展的区别&lt;/h3&gt;
&lt;p&gt;按我的理解，扩展是为了扩充 stable-diffusion-webui 的 UI 界面，所以会涉及前端的静态文件 (如 javascript、CSS 等），所以它会在 Web UI 页面上新增 Tab。&lt;/p&gt;
&lt;p&gt;而脚本如其名字，是实现某个功能的 Python 脚本，突出轻便简单，写代码时需要继承 scripts.Script 这个基类，按照对应的方法编写对应逻辑。&lt;/p&gt;
&lt;h3 id=&quot;脚本列表&quot;&gt;脚本列表&lt;/h3&gt;
&lt;p&gt;项目的 wiki 有专门的页面: &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这里面列出来当前全部的扩展，但是我还没有用到。目前只用到了官方项目中自带的一些:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;ls ~/workspace/stable-diffusion-webui/scripts
poor_mans_outpainting.py     prompts_from_file.py prompt_matrix.py
custom_code.py               postprocessing_codeformer.py sd_upscale.py
img2imgalt.py                postprocessing_gfpgan.py     xyz_grid.py
loopback.py                  postprocessing_upscale.py
outpainting_mk_2.py
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;这些脚本有的可以在 txt2img 和 img2img 模式下都可以使用，有的只能用于 img2img 模式，请注意。&lt;/p&gt;
&lt;p&gt;接下来我重点介绍几个常用的脚本，其他的欢迎大家补充用途和用法&lt;/p&gt;
&lt;h4 id=&quot;Promptmatrix&quot;&gt;Prompt matrix&lt;/h4&gt;
&lt;p&gt;如其名字，按照不同的提示词生成图片矩阵。我们过去写提示词，就是一些标签然后逗号隔开。但是如果你想要了解或者不确定几个提示词的组合效果，那么可能你得多次生成，效率低也不方便。&lt;/p&gt;
&lt;p&gt;而启用这个脚本后，可以使用 | 语法分割词，这样会组成多个提示词组合让你一次性的看到效果:&lt;/p&gt;
&lt;p&gt;可以看到正面提示词最后 2 个，用的是 headphones|,&lt;a href=&quot;lora:blindbox_v1_mix:1&quot;&gt;lora:blindbox_v1_mix:1&lt;/a&gt;| &lt;a href=&quot;lora:iu_V35:1&quot;&gt;lora:iu_V35:1&lt;/a&gt;，这样就可以生成一个矩阵图完整的看到这两种 lora 模型以及是否戴耳机的效果:&lt;/p&gt;
&lt;p&gt;图里面分别是戴耳机用 blindbox、戴耳机用 iu、不戴耳机用 blindbox、不戴耳机用 iu。Btw，可以看到换个 Lora 会让效果差别极大~&lt;/p&gt;
&lt;h4 id=&quot;X/Y/Zplot&quot;&gt;X/Y/Z plot&lt;/h4&gt;
&lt;p&gt;无论是初学者还是有一定经验使用 SD 的用户很多时候也不能确定各个参数到底取那个值是最符合需求的，按过去的模式只能是修改参数，然后生成图保存下来，在修改参数然后生成图。不断地循环，最终尝试出最佳的值。但是这个过程是非常漫长繁琐的，而这个 X/Y/Z plot 脚本可以快速的放我们了解这些功能参数的意义和效果。接下来我们通过调整各个参数生成一个矩阵图，这样非常方便对比出参数的效果。&lt;/p&gt;
&lt;p&gt;首先看页面的选择 (提示词等还是用了之前生产的 &lt;a href=&quot;https://civitai.com/images/375791?modelVersionId=32988&amp;amp;prioritizedUserIds=266262&amp;amp;period=AllTime&amp;amp;sort=Most+Reactions&amp;amp;limit=20&quot;&gt;一张图&lt;/a&gt; ，额外加了个负面次 nsfw，也就是 not safe from work，除此之外我指定了 seed 方便对比):&lt;/p&gt;
&lt;p&gt;这个例子里 x/y/z 三个维度我都选择了，分别是:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;采样器，右侧点击黄色图标可以列出全部的采样方案，我这里只列出了部分&lt;/li&gt;
&lt;li&gt;CFG scale。5-15 (+3) 表示从 5-12 范围内，按照 + 3 的方式递增，也就是 5,8,11,14 这 4 个值。&lt;/li&gt;
&lt;li&gt;Steps。20-35 [3] 是另外一种表达方式，是从 20-35 范围内，找 3 个值，也就是 20,27,35 这 3 个值。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意，你选择的范围越大就越耗时（这是相乘的关系)，例如采样器本来有二十多种，我只选择了 3 种。可以通过这样的方式小范围的了解不同参数的值的效果，我这里是一个比较极端的例子 (完成生成大概花了 1 个小时)，如果经验多了会慢慢的知道不同参数什么值会更合理。&lt;/p&gt;
&lt;p&gt;它的结果的图很大，我截个整体的图，在截取 step 为 27 的子图:&lt;/p&gt;
&lt;p&gt;另外不一定需要三个轴都选择，可以只选 2 个甚至 1 个指标，然后生成参数值变化时对图的影响，但是要注意需要固定 seed。&lt;/p&gt;
&lt;h3 id=&quot;脚本安装&quot;&gt;脚本安装&lt;/h3&gt;
&lt;p&gt;目前安装脚本也有三种方法，没有推荐偏向，按个人习惯即可。&lt;/p&gt;
&lt;h4 id=&quot;手动拷贝文件&quot;&gt;手动拷贝文件&lt;/h4&gt;
&lt;p&gt;第一种是直接把项目中的脚本拷贝到 scripts 目录下，例如 &lt;a href=&quot;https://github.com/memes-forever/Stable-diffusion-webui-video&quot;&gt;https://github.com/memes-forever/Stable-diffusion-webui-video&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以这样:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;wget https://raw.githubusercontent.com/memes-forever/Stable-diffusion-webui-video/main/videos.py -O ~/workspace/stable-diffusion-webui/scripts/videos.py
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;当然，先 git clone 代码再拷贝文件也可以。&lt;/p&gt;
&lt;h4 id=&quot;通过UI界面「InstallfromURL」或者「Available」&quot;&gt;通过 UI 界面「Install from URL」或者「Available」&lt;/h4&gt;
&lt;p&gt;如果项目里面脚本放在 scripts 目录下，还可以直接使用安装扩展的方法。点最后一个 Tab「Extensions」，再点「Install from URL」或者「Available」，安装后点击「Installed」的「Apply and restart UI」重启 UI 就可以了。&lt;/p&gt;
&lt;h3 id=&quot;开发脚本&quot;&gt;开发脚本&lt;/h3&gt;
&lt;p&gt;官方文档有 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts#saving-steps-of-the-sampling-process&quot;&gt;一个例子&lt;/a&gt; ，非常清晰，你需要对 Gradio 有基本了解，然后修改 title、ui 和 run 方法的逻辑即可。&lt;/p&gt;
&lt;p&gt;当然你还可以通过 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Developing-custom-scripts&quot;&gt;官方文档 Developing custom scripts&lt;/a&gt; 获取更多信息。&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://gigazine.net/gsc_news/en/20220909-automatic1111-stable-diffusion-webui-prompt-matrix/&quot;&gt;https://gigazine.net/gsc_news/en/20220909-automatic1111-stable-diffusion-webui-prompt-matrix/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Scripts&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-script/&quot;&gt;Stable Diffusion高级教程 - Script&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - Extension</title>
    <id>199</id>
    <updated>2023-04-26T00:00:00+00:00</updated>
    <published>2023-04-26T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-extension/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍SD的扩展(Extension)的用途，常用扩展以及如何开发扩展</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;这节主要介绍 stable-diffusion-webui 提供的扩展 (extension) 功能。stable-diffusion-webui 为了只保证核心功能并便于管理，将非核心功能解耦并转为扩展和脚本形式提供，这在很多知名项目都有相关实践。这节先介绍扩展。&lt;/p&gt;
&lt;h3 id=&quot;扩展列表&quot;&gt;扩展列表&lt;/h3&gt;
&lt;p&gt;项目的 wiki 有专门的页面: &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Extensions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这里面列出来当前全部的扩展，比如常用的:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN&quot;&gt;https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN&lt;/a&gt; 简体中文汉化&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/journey-ad/sd-webui-bilingual-localization&quot;&gt;https://github.com/journey-ad/sd-webui-bilingual-localization&lt;/a&gt; 双语汉化&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/civitai/sd_civitai_extensionC&quot;&gt;https://github.com/civitai/sd_civitai_extensionC&lt;/a&gt; 站的官方扩展，可以自动下载模型&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/butaixianran/Stable-Diffusion-Webui-Civitai-Helper&quot;&gt;https://github.com/butaixianran/Stable-Diffusion-Webui-Civitai-Helper&lt;/a&gt; 另外一个 C 站的扩展&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/DominikDoom/a1111-sd-webui-tagcompleteTAG&quot;&gt;https://github.com/DominikDoom/a1111-sd-webui-tagcompleteTAG&lt;/a&gt; 自动补全&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients&lt;/a&gt; 根据美学权重优化图片&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/hnmr293/sd-webui-llul&quot;&gt;https://github.com/hnmr293/sd-webui-llul&lt;/a&gt; 用于给局部增加细节&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Scholar01/sd-webui-mov2mov&quot;&gt;https://github.com/Scholar01/sd-webui-mov2mov&lt;/a&gt; 制作视频，之后我们还会用得到。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/CiaraStrawberry/TemporalKit&quot;&gt;https://github.com/CiaraStrawberry/TemporalKit&lt;/a&gt; 用于让视频顺滑，之后我们还会用得到它 + Ebsynth。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/canisminor1990/sd-webui-kitchen-theme&quot;&gt;https://github.com/canisminor1990/sd-webui-kitchen-theme&lt;/a&gt; 一个自定义主题，我这里只是提出这个思路，其实还有其他主题就不列出来了，我个人还是比较习惯原版 UI。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg&lt;/a&gt; 移除图片背景（对，可以用 SD 抠图）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;扩展安装&quot;&gt;扩展安装&lt;/h3&gt;
&lt;p&gt;目前安装扩展有三种方法，没有推荐偏向，按个人习惯即可。&lt;/p&gt;
&lt;h4 id=&quot;本地克隆&quot;&gt;本地克隆&lt;/h4&gt;
&lt;p&gt;如官方文档说明，直接克隆代码到 extensions 目录即可&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients extensions/aesthetic-gradients
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h4 id=&quot;通过UI界面「InstallfromURL」&quot;&gt;通过 UI 界面「Install from URL」&lt;/h4&gt;
&lt;p&gt;点最后一个 Tab「Extensions」，再点「Install from URL」，和上面的方法差不多，UI 稍微封装了一下:&lt;/p&gt;
&lt;p&gt;然后点「Installed」的「Apply and restart UI」重启 UI 就可以了。&lt;/p&gt;
&lt;h4 id=&quot;通过UI界面的「Available」&quot;&gt;通过 UI 界面的「Available」&lt;/h4&gt;
&lt;p&gt;也是最后一个 Tab「Extensions」，再点「Available」，默认是官方 wiki 的各个扩展的 json，点击「Load from」就会加载这些扩展，把全部选项都去掉勾选就会列出全部扩展，点击扩展行最后一项的「Install」就可以安装了。&lt;/p&gt;
&lt;h3 id=&quot;开发扩展&quot;&gt;开发扩展&lt;/h3&gt;
&lt;p&gt;可以遵循 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Developing-extensions&quot;&gt;官方文档&lt;/a&gt; ，其实是很简单的，我这里就不重复粘贴了。&lt;/p&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-extension/&quot;&gt;Stable Diffusion高级教程 - Extension&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - Textual Inversion(Embedding)</title>
    <id>198</id>
    <updated>2023-04-26T00:00:00+00:00</updated>
    <published>2023-04-26T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-embedding/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍Textual Inversion(Embedding)的具体用途和用法</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;今天介绍 Textual Inversion，中文名字是文本反转，在之前的版本里面这个功能叫做 Embedding，也就是文本嵌入。通俗的讲其实就是把提示词打包成为一个提示词。如果你想要稳定的实现某个特定的角色、画风或者动作，通常会输入很多提示词去限定特征，这个是非常有门槛也很考验经验的。Textual Inversion 就是解决这个问题的。&lt;/p&gt;
&lt;h3 id=&quot;使用别人发布的TextualInversion&quot;&gt;使用别人发布的 Textual Inversion&lt;/h3&gt;
&lt;p&gt;在 C 站你可以搜到很多已经打包好的 Textual Inversion，打开它的右侧筛选窗口，点击 Model types 里面的 Textual Inversion，这样页面显示的都是打包好的:&lt;/p&gt;
&lt;p&gt;例如你想要快速的创建一个《星期三》里面的女主 Addams 风格的图片，其实只需要下载 &lt;a href=&quot;https://civitai.com/models/4115/jenna-ortega-wednesday-addams-embedding&quot;&gt;https://civitai.com/models/4115/jenna-ortega-wednesday-addams-embedding&lt;/a&gt; 这个 Embedding 包 (只有 30.92kb)，然后存放到本地的 embeddings 目录下:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;mkdir ~/workspace/stable-diffusion-webui/embeddings  &lt;span class=&quot;c1&quot;&gt;# 这个目录可能不存在，需要创建一下&lt;/span&gt;
mv ~/Downloads/W3DDDN3SD4Y.pt ~/workspace/stable-diffusion-webui/embeddings
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;接着，点击网页右侧「Generate」按钮下面的「show/hide extra networks」按钮会显示一些额外选项，然后点击「Refresh」，在第一个 Tab「Textual Inversion」里面就可以看到这个新的 Embedding 包了，之后就可以直接用 W3DDDN3SD4Y 作为一个提示词，而不用把那些都输入进来，非常方便。&lt;/p&gt;
&lt;h3 id=&quot;自定义TextualInversion&quot;&gt;自定义 Textual Inversion&lt;/h3&gt;
&lt;p&gt;图做多了你会习惯性的使用一些提示词，因为他们会让图的质量变的更好，例如 photography, masterpiece, best quality, 8K, HDR 等等，那么这正好利用本文的 Textual Inversion 创建一些给自己用，例如我，创建了一个名字叫做 dongwm 的正面，还有一个叫做 dongwm-nt 的负面的。&lt;/p&gt;
&lt;p&gt;怎么创建呢，点开页面的「Train」这个 Tab，下面菜单栏第一项就是「Create embedding」，然后输入 Embedding 的名字和相关的提示文本即可，下面是我的正面提示词文本 dongwm 的内容:&lt;/p&gt;
&lt;p&gt;点击「Create embedding」按钮就会保存，如果未来你想修改替换它，可以重新准备提示词，然后勾选「Overwrite Old Embedding」再保存。&lt;/p&gt;
&lt;p&gt;现在可以在 Tab「Textual Inversion」看到三个 Embedding 包了:&lt;/p&gt;
&lt;h3 id=&quot;最终效果&quot;&gt;最终效果&lt;/h3&gt;
&lt;p&gt;现在利用上面提到的 1 个别人创建的和 2 个自定义的 Textual Inversion，看看生成的图的效果:&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-embedding/&quot;&gt;Stable Diffusion高级教程 - Textual Inversion(Embedding)&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - 如何使用Stable Diffusion？</title>
    <id>197</id>
    <updated>2023-04-26T00:00:00+00:00</updated>
    <published>2023-04-26T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/how-to-use-stable-diffusion/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文介绍运行Stable Diffusion的方式，重点是本地部署stable-diffusion-webui，以及体验基本的txt2img</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;今天这篇介绍怎么运行 SD，包含在线使用和本地运行 stable-diffusion-webui，并体验效果。&lt;/p&gt;
&lt;h3 id=&quot;Civitai平台&quot;&gt;Civitai 平台&lt;/h3&gt;
&lt;p&gt;首先要介绍一个平台： &lt;a href=&quot;https://civitai.com/&quot;&gt;Civitai&lt;/a&gt; 是目前最知名的 Stable Diffusion AI 艺术模型的社区平台，用户把它称为 C 站，它里面有非常多用户上传的模型:&lt;/p&gt;
&lt;p&gt;另外可以通过图片过滤，且模型里面会列出相关用户上传的优质图片。图片页面有相关的提示词文本、使用的模型以及采样数据等参数，可以帮助还不熟悉 Stable Diffusion 的用户快速上手:&lt;/p&gt;
&lt;p&gt;PS: Browing mode 选择 Everything 有惊喜，请做好心理建设哟~&lt;/p&gt;
&lt;h3 id=&quot;在线使用StableDiffusion&quot;&gt;在线使用 Stable Diffusion&lt;/h3&gt;
&lt;p&gt;如果你只是想要试玩一下，最简单的方法就是在线访问 Stable Diffusion 官方网站 &lt;a href=&quot;https://beta.dreamstudio.ai/&quot;&gt;https://beta.dreamstudio.ai/&lt;/a&gt; ，可以免费产生约一百张图，之后需付少许费用。&lt;/p&gt;
&lt;p&gt;其实还有一些其他在线服务，但都是阉割版 (例如不支持模型选择，不支持插件等等），无法体现 Stable Diffusion 的真实能力，就不推荐了，大家认准官方就好了。&lt;/p&gt;
&lt;h3 id=&quot;本地部署StableDiffusion&quot;&gt;本地部署 Stable Diffusion&lt;/h3&gt;
&lt;p&gt;这个我主推的方式，也是玩 Stable Diffusion 最有意思的地方。目前最主流的方法就是使用 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui&quot;&gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui&lt;/a&gt; 这个项目，本地运行一个 Python 的 Web UI。&lt;/p&gt;
&lt;p&gt;首先要明确 AI 绘画需要进行大量的图像处理和计算，所以对于电脑是有硬件要求的:&lt;/p&gt;
&lt;p&gt;本地运行需要需要足够大的显存 (独立显卡的内存)，最低配置 10GB 显存，越大越好。 内存也不能太小，最好大于 16GB。显存大小决定了你能生成的图片尺寸，一般而言图片尺寸越大，SD 能发挥的地方越多，画面里填充的细节就越多。
通常都是用通过 GPU 来跑 SD，因为 GPU 会加速计算。但用 CPU 跑也是可以的，但是速度会非常慢：例如一张显卡 30 秒就能算好的图，CPU 要算 10 分钟。&lt;/p&gt;
&lt;p&gt;我的电脑是 Macbook M1 架构，所以参照的官方 wiki 文档 &lt;a href=&quot;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon&quot;&gt;Installation on Apple Silicon&lt;/a&gt; 配置即可，简单看了下启动脚本，即便不是 Python 开发者我认为也可以顺滑的完成启动过程。接下来是我配置的过程:&lt;/p&gt;
&lt;p&gt;首先下载相关依赖和 stable-diffusion-webui:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;➜ brew install cmake protobuf rust python@3.10 git wget
➜ &lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/workspace
➜ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;目前只是代码克隆下来，还没有任何可用模型，此时可以从文档提到的 &lt;a href=&quot;https://huggingface.co/models?pipeline_tag=text-to-image&amp;amp;sort=downloads&quot;&gt;Hugging Face&lt;/a&gt; 或者 &lt;a href=&quot;https://www.civitai.com/&quot;&gt;C 站 Civitai.com&lt;/a&gt; 下载模型。&lt;/p&gt;
&lt;p&gt;模型格式一般是.ckpt 或者.safetensors 作为文件扩展名。格式的区别是:&lt;/p&gt;
&lt;p&gt;.ckpt: 包含 Python 代码的压缩文件，对于 Python 语言的程序来说很通用方便，缺点是文件很大，一般 2-8G。.safetensors: 只包含生成所需的数据，不包含代码，一般只有几十到几百 M，加载文件也更安全和快速。&lt;/p&gt;
&lt;p&gt;我一般从 C 站下载，找了一个例子: &lt;a href=&quot;https://civitai.com/models/25995/blindbox&quot;&gt;https://civitai.com/models/25995/blindbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;注意，这是一个 Lora 模型 (右侧信息中的 Type 是 LORA)，所以和文档说的放在 models/Stable-diffusion 目录不同，应该放在 models/Lora。&lt;/p&gt;
&lt;figure class=&quot;highlight shell&quot; data-lang=&quot;shell&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs shell&quot;&gt;&lt;span&gt;&lt;/span&gt;mv ~/Downloads/blindbox_V1Mix.safetensors ~/workspace/stable-diffusion-webui/models/Lora
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;然后拉到页面下面，我找到了一个生成的效果图 &lt;a href=&quot;https://civitai.com/images/421118?period=AllTime&amp;amp;sort=Most+Reactions&amp;amp;modelVersionId=32988&amp;amp;modelId=25995&amp;amp;postId=128086&quot;&gt;https://civitai.com/images/421118?period=AllTime&amp;amp;sort=Most+Reactions&amp;amp;modelVersionId=32988&amp;amp;modelId=25995&amp;amp;postId=128086&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以看到生成这个图时候用的各个参数，注意其中的 Model 叫做`revAnimated_v11・，本地也没有需要下载，可以先搜一下就找到了: &lt;a href=&quot;https://civitai.com/models/7371/rev-animated&quot;&gt;https://civitai.com/models/7371/rev-animated&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以看到右侧的 Type 说明它是一个 CHECKPOINT 的类型，下载并把它放在 models/Stable-diffusion 目录:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;mv ~/Downloads/revAnimated_v122.safetensors ~/workspace/stable-diffusion-webui/models/Stable-diffusion
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;这里提一下 Checkpoint 这个模型类型，按我的理解它表示&lt;strong&gt;存档点&lt;/strong&gt;，就是可以使用开源的 Stable-diffusion 不同版本的某个点作为模型使用。另外这个模型子类型叫做 Checkpoint Merge，也就是它是将多个模型混合在一起，而且合并后不同的模型占了不一样的比例的权重。&lt;/p&gt;
&lt;p&gt;然后启动 webUI:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; stable-diffusion-webui
./webui.sh
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;第一次启动会下载相关依赖，比较慢，下载完成就会看到启动提示:&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot; data-lang=&quot;bash&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;hljs bash&quot;&gt;&lt;span&gt;&lt;/span&gt;...
Running on &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt; URL:  http://127.0.0.1:7860
&lt;/pre&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;打开浏览器，访问这个地址就可以看到 Web 页面了。SD 目前支持文生图和图生图 2 个模式，这篇文章先体验文生图，图生图因为需要很多额外的知识我们过段时间铺垫完了再专门写。&lt;/p&gt;
&lt;h3 id=&quot;文本转图片(txt2img)&quot;&gt;文本转图片 (txt2img)&lt;/h3&gt;
&lt;p&gt;这是 SD 最基础的功能，将文本提示转换为图像。还是用上面提到的 blindbox 的例子，就用它的各种参数，唯一要提的是「Batch size」选了 8，，就是一次性生成 8 张图 (事实是 9 张，另外一张是全部图的缩略图)，然后点右侧的「Generate」，就会开始生成了，大概 10 来分钟 (如果单张图约 1 分钟):&lt;/p&gt;
&lt;p&gt;生成的效果非常好。先介绍下各个参数项和用途:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;左侧最上面「Stable Diffusion checkpoint」是个下拉框，可以选择您想要的模型。有很多已经训练好的模型可供选择，如果你有自己特别的需求，也可以训练自己的模型。&lt;/li&gt;
&lt;li&gt;左侧有 2 个文本输入框，上面宽的那个输入正向提示词 (prompt) 文本，表示你希望这个图符合什么要求，下面窄的输入反向提示词 (Negative Prompt) 文本，表示这个图不希望符合什么要求。提示词可以是英文短句或单词，以逗号进行分隔，它们类似标签 (tag) 列表。&lt;/li&gt;
&lt;li&gt;Sampling Method 用于去噪，平衡生成图的速度和质量。内置多种算法可供选择。目前看起来 DPM++ 2M Karras 用的比较多。&lt;/li&gt;
&lt;li&gt;Sampling Steps 是去噪过程的采样步骤数。越多越好，但需要更长的时间。一般在 20-28 之间。&lt;/li&gt;
&lt;li&gt;宽度和高度 (Width/Height)，输出图像的大小。按需调整即可。&lt;/li&gt;
&lt;li&gt;Batch Count 批次数量，我更愿意用下面的 Batch size 调整生产图的总数。&lt;/li&gt;
&lt;li&gt;Batch size，每一批次要生成的图像数量。可以在测试提示时多生成一些，因为每个生成的图像都会有所不同。生成的图像总数等于 Batch Count 乘以 Batch size。&lt;/li&gt;
&lt;li&gt;CFG (Classifier Free Guidance) scale，提示词相关性， 用于控制模型应在多大程度上遵从您的提示。他有几个只可选: 1 (大多忽略你的提示)，3 (更有创意)，7 (遵循提示和自由之间的良好平衡)，15 (更加遵守提示)，30 (严格按照提示操作)，常用的是 7，做个平衡。测试时可以换这个值体验区别。&lt;/li&gt;
&lt;li&gt;Seed，生成的每个图像都有自己的种子值，修改这个值可以控制图像的内容。&lt;/li&gt;
&lt;li&gt;Script。用户可以编写脚本代码，以实现一些特殊定制的功能。这个未来可以具体说，目前还没有遇到。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在生成的过程中会感受到图片从模糊到清晰的过程。如果你特别细心，可以看到正向 prompt 里面比原图多了一个&lt;a href=&quot;lora:blindbox_V1Mix:1&quot;&gt;lora:blindbox_V1Mix:1&lt;/a&gt;，这个其实是指定了 Lora 模型后添加的，选择 Lora 模型的方法是点开「Genrate」按钮下面中间那个按钮「show/hide extra network」，最右一个 Tab 就是 Lora:&lt;/p&gt;
&lt;p&gt;选择你要用的模型就会在 prompt 输入框里面添加或者删除 Lora 模型。&lt;/p&gt;
&lt;p&gt;可以看到，参数都一样的前提下，不同机器的相同 seed 出图是不一样的，但是在本机设置了同一个 seed，重复生成图是一样的 (注：把 seed 输入框改成默认的 - 1 就是随机的):&lt;/p&gt;
&lt;p&gt;PS: 一个好习惯是点击下面的 Save，会把图片按照日期存在本地。&lt;/p&gt;
&lt;h3 id=&quot;如何写好提示词&quot;&gt;如何写好提示词&lt;/h3&gt;
&lt;p&gt;我也正在学习写好用好提示词，目前有 2 个技巧。&lt;/p&gt;
&lt;h4 id=&quot;寻找好的范例&quot;&gt;寻找好的范例&lt;/h4&gt;
&lt;p&gt;提示词主要包含标签和艺术家，可以从如下几个有用的网站获取更多信息:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://rentry.org/artists_sd-v1-4&quot;&gt;https://rentry.org/artists_sd-v1-4&lt;/a&gt; 艺术家列表&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.urania.ai/top-sd-artists&quot;&gt;https://www.urania.ai/top-sd-artists&lt;/a&gt; 艺术家列表&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stablediffusion.fr/artists&quot;&gt;https://stablediffusion.fr/artists&lt;/a&gt; 艺术家列表&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ai.dawnmark.cn/&quot;&gt;https://ai.dawnmark.cn/&lt;/a&gt; 图像细节，如风格、光照等&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tinygeeker.github.io/p/ai-prompt-generator/AI&quot;&gt;https://tinygeeker.github.io/p/ai-prompt-generator/AI&lt;/a&gt; 标签生成器，身体细节&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/wfjsw/danbooru-diffusion-prompt-builderDanbooru&quot;&gt;https://github.com/wfjsw/danbooru-diffusion-prompt-builderDanbooru&lt;/a&gt; 标签超市&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然这种网站很多，欢迎浏览补充&lt;/p&gt;
&lt;h4 id=&quot;获取AI生成图的提示词以及其它参数&quot;&gt;获取 AI 生成图的提示词以及其它参数&lt;/h4&gt;
&lt;p&gt;用 SD 生成的图的元数据中包含了生产时用的提示词以及各个参数等信息，在 stable-diffusion-webui 里面有个页面叫做「PNG info」，非常实用，只需要上传图片就可以看到这些原始信息:&lt;/p&gt;
&lt;h3 id=&quot;在Colab上运行stable-diffusion-webui&quot;&gt;在 Colab 上运行 stable-diffusion-webui&lt;/h3&gt;
&lt;p&gt;本来可以使用 Google Colab 免费运行 stable-diffusion-webui，但是已经不再容许免费用户这么用了，4 月 21 日，Colab 的产品 lead 发推提到了这件事，所以如果你看到有些教程提到使用 Colab 要注意得是付费用户了。不过我本来也不想推荐这个方式，主要是免费用户的空间是 25G，如果你下载主模型等等相关资源是很容易超的，所以开始主推本地运行。&lt;/p&gt;
&lt;p&gt;Colab 付费用户可以看这个项目: &lt;a href=&quot;https://github.com/camenduru/stable-diffusion-webui-colab&quot;&gt;https://github.com/camenduru/stable-diffusion-webui-colab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/how-to-use-stable-diffusion/&quot;&gt;Stable Diffusion高级教程 - 如何使用Stable Diffusion？&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry xml:base="http://www.dongwm.com/atom.xml">
    <title type="text">Stable Diffusion高级教程 - AIGC发展史和产品对比</title>
    <id>196</id>
    <updated>2023-04-25T00:00:00+00:00</updated>
    <published>2023-04-25T00:00:00+00:00</published>
    <link href="https://www.dongwm.com/post/stable-diffusion-history/" />
    <author>
      <name>xiaoming</name>
    </author>
    <summary type="html">本文是Stable Diffusion高级教程的第一篇，介绍AIGC发展史和它与MidJourney的详细对比</summary>
    <content type="html">&lt;h3 id=&quot;前言&quot;&gt;前言&lt;/h3&gt;
&lt;p&gt;AIGC 相关的内容最近非常热，所以我也来蹭个热度。这篇是这个话题的第一篇，先介绍一下 AIGC 和相关的创作工具。&lt;/p&gt;
&lt;h3 id=&quot;AIGC&quot;&gt;AIGC&lt;/h3&gt;
&lt;p&gt;AIGC 全文叫做「AI Gererative Content」，这是继专业生产内容（PGC, Professional-generated Content）、用户生产内容（UGC, User-generated Content）之后的新型内容创作方式。&lt;/p&gt;
&lt;p&gt;AIGC 进入大众视野里程碑的一件事是去年 9 月初，下面这幅使用 MidJourney 生成的数字油画《空间歌剧院》:&lt;/p&gt;
&lt;p&gt;在美国科罗拉多州博览会 (Colorado State Fair) 的艺术比赛中夺得了第一名，之后大赛评委并未对该幅作品进行改判，并认为即使它是 AI 生成的作品，也依旧配得上这样的成绩，这一新闻被报道后引发了圈内外的广泛讨论。&lt;/p&gt;
&lt;p&gt;再之后，一个 B 站 UP 主使用 Midjourney，根据歌词含义生成的图片制作了万能青年旅店的作品《 &lt;a href=&quot;https://www.bilibili.com/video/BV1Me4y1B7j4/&quot;&gt;杀死那个石家庄人&lt;/a&gt; 》火出了圈，接着很多 UP 主发布了类似的「但是每一句歌词都由 AI 作画」主题的作品，例如《Young And Beautiful》、《孤勇者》、《七里香》等。我也是从这个阶段开始关注到这个领域，当然那时候的理解还停留在 AI 绘画（txt2img，也就是输入文字，计算机会把它翻译成图像）这个小方向，其实现在再看，生成的内容的领域是非常广泛的。&lt;/p&gt;
&lt;p&gt;通过 AIGC 这种创作方式，可以让我这种毫无绘画基础的非职业用户也可以创作出非常满意的作品。&lt;/p&gt;
&lt;h3 id=&quot;AIGC的主要创作工具&quot;&gt;AIGC 的主要创作工具&lt;/h3&gt;
&lt;p&gt;接着我根据时间线列出我认为非常重要的一些创作工具。&lt;/p&gt;
&lt;h4 id=&quot;DALL-E&quot;&gt;DALL-E&lt;/h4&gt;
&lt;p&gt;2021 年 1 月，OpenAI 推出了 DALL－E 模型，通过 120 亿参数版本的 GPT-3 Transformer 模型来理解自然语言输入并生成相应的图片。但是它的推出主要用于研究，所以访问权限仅限于小部分测试版用户。这个模型不稳定对于细节理解处理不完善，且会出现严重的逻辑或者事实错误，但是作为开创者，还是得专门提出来的。&lt;/p&gt;
&lt;p&gt;在发布 DALL-E 时还发布了 &lt;a href=&quot;https://github.com/openai/CLIP&quot;&gt;CLIP&lt;/a&gt; （Contrastive Language-Image Pre-training，对比图文预训练）。CLIP 是一种神经网络，为输入的图像返回最佳的标题。它所做的事情与 DALL-E 所做的相反 —— 它是将图像转换为文本，而 DALL-E 是将文本转换为图像。引入 CLIP 的目的是为了学习物体的视觉和文字表示之间的联系。&lt;/p&gt;
&lt;h4 id=&quot;DiscoDiffusion&quot;&gt;Disco Diffusion&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb&quot;&gt;Disco Diffusion&lt;/a&gt; 是 21 年 10 月开始开源的一个基于 diffusion+CLIP 的深度学习模型，输入文本便能生成图像画面。这个工具通常运行在 Google Colab 平台上，无需本地配置，所以对电脑配置不做要求，在浏览器里面运行即可。&lt;/p&gt;
&lt;p&gt;下面是主创是艺术家兼设计师 Somnai 在项目开源时发布的效果图:&lt;/p&gt;
&lt;p&gt;在实际使用中，它对于景色、主体以及画风方面的内容效果还是不错的，但是人物效果比较差。在 Somnai 加入到 MidJourney 后，这个项目就停止了更新。&lt;/p&gt;
&lt;h4 id=&quot;DALL-E2&quot;&gt;DALL-E 2&lt;/h4&gt;
&lt;p&gt;2022 年 4 月，OpenAI 发布了新版本的 &lt;a href=&quot;https://labs.openai.com/&quot;&gt;DALL-E 2&lt;/a&gt; ，它是 DALL-E 的升级版本，另外能对所生成的图像进行二次编辑，现在即使是新用户也需要充值才能生成新图，我没有体验，只是通过官方 Ins 账号展示的动态侧面了解，不过目前现在还可以通过 Bing 体验: &lt;a href=&quot;https://www.bing.com/create/&quot;&gt;https://www.bing.com/create/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;感受它生成的画作相对下面说的 2 种比较单一且简单。&lt;/p&gt;
&lt;h4 id=&quot;MidJourney&quot;&gt;MidJourney&lt;/h4&gt;
&lt;p&gt;MidJourney 的 v1 是 2022 年 2 月发布的，它火出圈是由于 22 年 7 月份的 v3 版本。&lt;/p&gt;
&lt;p&gt;它的特点是综合能力比较全面，艺术性很强，非常像艺术家制作的作品，另外图像生成速度更快，早期主要是很多艺术家会借助 Midjourney 作为创作灵感。另外，因为 Midjourney 搭载在 Discord 频道上，所以有非常良好的社区讨论环境和用户基础。&lt;/p&gt;
&lt;p&gt;第二次火其实就是今年 3 月份发布 V5, 官方说这个版本在生成图像的人物真实程度、手指细节等方面都有了显著改善，并且在提示词理解的准确性、审美多样性和语言理解方面也都取得了进步。&lt;/p&gt;
&lt;p&gt;现在新用户已经不再可以免费生成图片了，需要订阅。就不演示了，我有一下两个经验:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果你不了解怎么输入正确有价值的提示词，可以从类似延伸阅读链接 5 这样的网址去生成 prompt，类似网站很多&lt;/li&gt;
&lt;li&gt;如果想成为 MidJourney 高手，你需要学会很多技巧，可以网上搜各种相关的文章和视频，例如延伸阅读链接 9 和 10 (当然官方文档也是要看的)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;StableDiffusion&quot;&gt;Stable Diffusion&lt;/h4&gt;
&lt;p&gt;2022 年 8 月，Stable Diffusion 开源，&lt;/p&gt;
&lt;p&gt;Stable Diffusion 算法上基于 2021 年 12 月提出的潜在扩散模型（LDM / Latent Diffusion Model）和 2015 年提出的扩散模型（DM / Diffusion Model，它是基于 Google 的 Transformer 模型），所以名字里有 Diffusion，我猜 Stable 表示现在算法已经稳定下来了。&lt;/p&gt;
&lt;p&gt;有必要先说一下这个项目让人疑惑的点，它是开源的，如果你自己研究过，可以从 Github 上找到三个同名的项目:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/CompVis/stable-diffusion&quot;&gt;https://github.com/CompVis/stable-diffusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/runwayml/stable-diffusion&quot;&gt;https://github.com/runwayml/stable-diffusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Stability-AI/stablediffusion&quot;&gt;https://github.com/Stability-AI/stablediffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;首先是慕尼黑大学机器视觉学习组 CompVis 写了这个论文，AI 视频剪辑技术创业公司 Runway 提供专业知识帮助实现了第一个版本，初创公司 StabilityAI 投钱，最终由 Stable Diffusion 推向主流市场 (其实现在已经是 Version 2 了)。所以现在只需要关注第三个项目就可以了。&lt;/p&gt;
&lt;p&gt;SD 会在运行时将成像过程分离成 “扩散（diffusion）” 的过程 —— 从有噪声的情况开始，根据 CLIP 对图像和文本之间相关性打分，逐渐改善图像，直到完全没有噪声，这样就逐步接近所提供的文本描述。具体的原理可以看延伸阅读链接 8.&lt;/p&gt;
&lt;p&gt;SD 可以在短短几秒钟内生成清晰度高，还原度佳、风格选择很广的图片，它最大的突破是任何人都能免费下载并使用其开源代码，不需要像 MidJourney 和 DALL-E 那样把它作为云服务付费用。&lt;/p&gt;
&lt;h4 id=&quot;StableDiffusionXL&quot;&gt;Stable Diffusion XL&lt;/h4&gt;
&lt;p&gt;目前 SD 最让使用者苦恼的 2 个缺点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;需要输入非常长的提示词 (prompts)&lt;/li&gt;
&lt;li&gt;对于人体结构的处理有瑕疵，经常出现动作和人体结构异常&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2023 年 4 月，Stability AI 发布了 Beta 版本的 &lt;a href=&quot;https://clipdrop.co/stable-diffusion&quot;&gt;Stable Diffusion XL&lt;/a&gt; ，并提到在训练结束后参数稳定后会开源，并改善了上述的 2 个缺点。&lt;/p&gt;
&lt;h3 id=&quot;MidJourney和StableDiffusion的对比&quot;&gt;MidJourney 和 Stable Diffusion 的对比&lt;/h3&gt;
&lt;p&gt;首先要说明的是 AI 绘图是有高度的随机性和风格化的，即便你有比较准确的提示词也许换个 seed 可以让结果反转，其实不好直接对比。我这里只是在侧面来对比:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;价格。MidJourney 毕竟是为了盈利的，远不如自己部署到自己服务器的开销要低。SD 完胜&lt;/li&gt;
&lt;li&gt;友好程度。MidJourney 新手友好，注册即用，相对的 SD 需要有一定技术背景，甚至可以说设计师或者艺术创作者自己不具备部署能力。SD 小胜&lt;/li&gt;
&lt;li&gt;功能。SD 除了支持 MidJourney 全部功能外还支持填充修复、自定义模型。SD 小胜&lt;/li&gt;
&lt;li&gt;对细节的控制。类似于苹果 (MidJourney) 和安卓 (SD) 的区别，MidJourney 是商业产品，你无法了解它的背后的原理和代码逻辑，所以可控性差、细节优化难 (甚至越调越差)，而 SD 由于是开源的且有强大的社区和相关的模型、扩展等，可以实现本地私有化部署，还能够精准局部调优，控制风格，SD 完胜的。&lt;/li&gt;
&lt;li&gt;提示方法。Midjourney 是自然语言输入 (直接文字表达需求)，而 SD 是各种带权重的提示词输入。SD 的提示词本文是非常考验输入者能力的，Midjourney 小胜。&lt;/li&gt;
&lt;li&gt;效果。总体上觉得 MidJourney 的图更精致一点点，但是作为非算法开发者，我感觉 SD 目前输在模型训练的素材和方法上。MidJourney 小胜。&lt;/li&gt;
&lt;li&gt;擅长的画风。 MidJourney 注重表达和对细节的渲染，而 Stable-Diffusion 偏写实，如果你想艺术创作，MidJourney 更好，如果你已经有具体的需求，SD 更好。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要注意，上面提到的这些产品都是基于同样的底层原理的 Diffusion 模型，只是在产品化的路线上不同，但我目前更看好 SD 的未来发展 (要不然也不会专门写个专题😋)。&lt;/p&gt;
&lt;h3 id=&quot;延伸阅读&quot;&gt;延伸阅读&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://search.bilibili.com/all?vt=33108793&amp;amp;keyword=%E6%AF%8F%E4%B8%80%E5%8F%A5%E6%AD%8C%E8%AF%8D%E9%83%BD%E7%94%B1AI%E4%BD%9C%E7%94%BB&quot;&gt;https://search.bilibili.com/all?vt=33108793&amp;amp;keyword=%E6%AF%8F%E4%B8%80%E5%8F%A5%E6%AD%8C%E8%AF%8D%E9%83%BD%E7%94%B1AI%E4%BD%9C%E7%94%BB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zh.wikipedia.org/wiki/DALL-E&quot;&gt;https://zh.wikipedia.org/wiki/DALL-E&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb&quot;&gt;https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.midjourney.com/home/&quot;&gt;https://www.midjourney.com/home/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stariu.com/midjourney&quot;&gt;https://stariu.com/midjourney&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Stability-AI/stablediffusion&quot;&gt;https://github.com/Stability-AI/stablediffusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://clipdrop.co/stable-diffusion&quot;&gt;https://clipdrop.co/stable-diffusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stable-diffusion-art.com/how-stable-diffusion-work/&quot;&gt;https://stable-diffusion-art.com/how-stable-diffusion-work/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.uisdc.com/midjourney-5&quot;&gt;https://www.uisdc.com/midjourney-5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.uisdc.com/midjourney-4&quot;&gt;https://www.uisdc.com/midjourney-4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文: &lt;a href=&quot;https://www.dongwm.com/post/stable-diffusion-history/&quot;&gt;Stable Diffusion高级教程 - AIGC发展史和产品对比&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
</feed>
