使用Stable-Diffusion实现AI绘画

9/1/2022 AI绘画Stable-DiffusionMidjourneyDALL-EAI绘画工作流ComfyUI

# 1. 基本介绍

# 1.1 AI绘画的发展史

AI绘画发展过程中比较关键的时间线

  • Disco Diffusion 是发布于Google Colab 平台的一款利用人工智能深度学习进行数字艺术创作的工具,它是基于MIT 许可协议的开源工具,可以在Google Drive 直接运行,也可以部署到本地运行。Disco Diffusion 有一个弊端,就是速度非常慢,动辄半个小时起步。
  • Midjourney是 Disco Diffusion 的原作者Somnai所加入的AI艺术项目实验室。Midjourney 对 Disco Diffusion 进行了改进,平均1分钟能出图。
  • OpenAI推出 DALL·E 2,它实现了更高分辨率和更低延迟,而且还包括了新的功能,如编辑现有图像。目前还没有 DALL·E 2 的体验资格。
  • stability.ai 推出 Stable-Diffusion并且开源了。操作简单,出图快,平均10-20秒。Stable-Diffusion 免费、生成速度又快,每一次生成的效果图就像是开盲盒一样,需要不断尝试打磨。stability.ai 是一个年轻的英国团队,他们的宗旨为 “AI by the people, for the people” ,中文翻译的大意为,人们创造AI,并且AI服务于人,除了 stable-diffusion 他们还参与了众多的 AI 项目。
stability.ai团队宗旨

# 1.2 Stable-Diffusion简介

项目描述:用一段文字描述生成一张图,使用常见的 CLIP ViT-L/14 文本编码器来依照文本调整模型。

项目地址:https://github.com/CompVis/stable-diffusion (opens new window)

效果演示:每次生成的效果随机,效果示例仅供参考。prompt:A well-preserved library among hidden ruins, matte painting

stable-diffusion算法生成绘画的效果示例

封装集成:Stable-Diffusion 一经推出后,受到了大量开发者的追捧,其中又有很多大佬制作了docker及一键脚本,可以很方便的搭建出一个Web界面去运行 stable-diffusion 算法,比如:

下面的自部署我选用的是最后一个,它是以一键脚本的形式进行部署,使用起来非常简单,所有的东西它都给你配好了,而且是独立环境,不会污染系统环境。

# 1.3 Midjourney简介

Midjourney 是一个人工智能程序,可根据文本生成图像,目前架设在 Discord 频道上。于 2022 年 7 月 12 日进入公开测试阶段,使用者可通过 Discord 的机器人指令进行操作,可以创作出很多的图像作品。

官网地址:https://www.midjourney.com/app/ (opens new window)

Midjourney

# 1.4 DALL-E简介

DALL-E是一个由OpenAI开发的神经网络,它能够将自然语言描述生成为相应的图像。它是基于变分自编码器(VAE)和Transformer架构的生成模型。它首先使用一个VAE将图像编码为离散的潜在表示,然后使用一个大型Transformer模型学习从自然语言描述到这些离散潜在表示的映射。训练完成后,DALL-E可以根据输入的文本描述生成一组与描述相符的图像。

DALL-E原理

# 2. Stable-Diffusion实现AI绘画

# 2.1 官方提供的在线服务

打开 https://beta.dreamstudio.ai/ (opens new window) 进行注册。

注册好后,就可以进入到这个界面。可以直接在下方输入名词,也可以在打开右侧的设置按钮,里面会更详细的配置。输入好关键词后,直接点 Dream 按钮,等待10秒左右就可以生成图片。

stable-diffusion在线服务生成效果

这样的生成方式非常的方便,但是是有次数限制的,超出则需要付费使用。而且使用这种方式,你生成图片的版权为CC0 1.0,你可以商用或者非商用你生成的图片,但是也会默认成为公共领域的资源。

另注:上面的官方界面是2022.9的,现在有了很大变化,下面是2023.10的官方界面。

新版stable-diffusion在线服务生成效果

# 2.2 使用 Stable-Diffusion

更建议使用Google Colab进行部署,这种方式可以几乎无限地使用 Stable Diffusion,并且由于这种方式是你自己跑模型的方式生成的图片,版权归属于你自己。

下面我们将使用 Hugging face 开源的 colab 示例,将其保存到自己的Google Drive里。

ipynb地址:https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb (opens new window)

# 2.2.1 连接服务器并安装依赖

首先我们先点击右上角连接服务器,连接成功后执行 nvidia-smi 代码块,查看一下所申请到的 GPU 配置。

GPU配置查询

安装 Stable-Diffusion 所需的项目依赖

stable-diffusion安装依赖

# 2.2.2 申请并填写Token

先打开 https://huggingface.co/settings/tokens (opens new window) 页面进行注册,登录进去后创建一个Token,然后执行如下两个代码块,其中第2个会让你填写Token。

stable-diffusion填写Token

下载预训练模型

打开 https://huggingface.co/CompVis/stable-diffusion-v1-4 (opens new window),勾选 I have read the License and agree with its terms,点击 Access repository,再执行下载预训练模型的按钮(如果未进行这一步,直接下载会提示403报错)

stable-diffusion下载预训练模型

# 2.2.3 编写Prompt生成图片

修改 prompt 里的文字,点击执行,等待一会儿算法便会生成图片。该 colab 下面还有很多高级使用示例,我就不一一演示了,根据提示进行操作即可。

stable-diffusion生成图片

# 2.3 使用 Stable-Diffusion-XL

# 2.3.1 项目介绍

Stable Diffusion XL是Stable Diffusion的优化版本,由Stability AI在2023.7发布。比起Stable Diffusion,Stable Diffusion XL做了全方位的优化。

# 2.3.2 运行示例

这里还是使用Google Colab进行部署,打开ipynb,安装依赖并下载模型,运行起来之后会给出公网访问地址。

Stable_Diffusion_XL_Demo

在界面里输入 prompt 即可生成图像。

Stable-Diffusion-XL效果

# 3. 本地部署Stable-Diffusion

# 3.1 在服务器上进行自部署

实验环境:实体GPU服务器,NVIDIA RTX 3090 / 24GB,Ubuntu 20.04.4 LTS, CUDA 11.6

# 3.1.1 部署 Stable-Diffusion-UI

我这里将使用 https://github.com/cmdr2/stable-diffusion-ui (opens new window) 的一键脚本方案进行部署,在服务器上进行自部署建议有GPU环境(当然CPU环境也能跑,就是慢),内存和存储空间占用都比较大,配置不高的话就不用试了。下面是该项目介绍里写的系统要求:

  • 1)Windows 10/11 或 Linux,对 Mac 的实验性支持即将推出。

  • 2)NVIDIA 显卡,最好具有 6GB 或更多的 VRAM。但如果您没有兼容的显卡,您仍然可以通过“使用 CPU”设置来使用它。它会很慢,但它应该仍然有效。

使用 Stable-Diffusion-UI 官方提供的一键脚本进行部署,如果是国内服务器建议先设置一下代理。

$ export https_proxy=http://xxx.xxx.xxx.xxx:xxx   // 如果是国内服务器建议设置一下代理,不然脚本执行中可能会下载失败
$ cd /root/algorithm/stable-diffusion-ui
$ wget https://github.com/cmdr2/stable-diffusion-ui/releases/download/v2.05/stable-diffusion-ui-linux.tar.xz
$ tar Jxvf stable-diffusion-ui-linux.tar.xz -C /root/algorithm && rm -f stable-diffusion-ui-linux.tar.xz
$ ./start.sh
1
2
3
4
5

Stable-Diffusion-UI部署过程

部署过程会比较慢,耐心等待,部署成功后用Chrome打开 http://ip:9000地址进行访问。

Stable-Diffusion-UI界面

注:打开页面之后实际进行操作时还要再等一会儿才能使用,因为算法还需要下载模型、加载模型和启动。因此启动后先随便输入个内容和选张图,点击Make Image,让后台服务先把该下载的模型弄好。

# 3.1.2 使用 Stable-Diffusion-UI

Stable-Diffusion-UI 的使用说明如下:

1)使用文字说明去生成

  • 输入文本提示,如a photograph of an astronaut riding a horse在文本框中。
  • Make Image。这将需要一些时间,具体取决于系统的处理能力。查看使用提示生成的图像。

prompt:a girl with lavender hair and black skirt, fairy tale style background, a beautiful half body illustration, top lighting, perfect shadow, soft painting, reduce saturation, leaning towards watercolor, art by hidari and krenz cushart and wenjun lin and akihiko yoshida

自部署Stable-Diffusion-UI的文字描述生成

2)使用图片去生成

  • 单击Browse..旁边的Initial Image。选择您想要的图像。
  • 可选的文本提示可以帮助您进一步描述您想要生成的图像类型。
  • Make Image。这将需要一些时间,具体取决于系统的处理能力。查看使用提示生成的图像。

提示:还可以单击Use as Input生成的图像,将其用作下一代的输入图像,这对于通过单击按顺序细化生成的图像很有用。

自部署Stable-Diffusion-UI的图像生成

实际系统资源占用及性能:占用了约16GB存储空间、6GB显存,出图速度大约为10s。

Stable-Diffusion-UI执行时的GPU占用情况

# 3.2 在ARM芯片的Macbook Pro上运行

实验环境:Macbook Pro 2021,M1 pro芯片,16G内存,macOS Monterey12.5.1系统,Python3.9环境

# 3.2.1 使用 DiffusionBee 生成

Stable-Diffusion 官方仓库的 apple-silicon-mps-support (opens new window) 分支支持了在ARM芯片的Macbook Pro上运行。

DiffusionBee (opens new window) 项目使用这个分支制作了傻瓜式GUI工具,算法模型也会自动下载,不需要任何技术背景就可以使用。

系统环境要求如下:

  • Mac with Intel or M1/M2 CPU
  • For Intel : MacOS 12.3.1 or later
  • For M1/M2 : MacOS 11.0.0 or later

跟普通应用程序一样傻瓜式安装即可。

  • Step1:在 Github 的 Releases处 下载 DiffusionBee 的安装程序。

  • Step2:下载完安装程序之后,打开 DiffusionBee 还有算法模型会自动下载,模型会下载至/Users/xxx/.diffusionbee/downloads目录下

使用DiffusionBee生成图像

输入描述文字,Advanced options有少量参数设置可改可不改,点击 Generate 即可。

我的 M1 pro芯片 Macbook pro 出图时间为 44s。芯片越强出图速度越快,反之越慢,大约耗时多少取决于你的芯片配置。

# 3.2.2 使用 MochiDiffusion 生成

MochiDiffusion (opens new window) 项目支持在 Mac 上原生运行 Stable Diffusion。

系统环境要求如下:

  • Apple Silicon(M1 及更高版本)
  • macOS Ventura 13.1 及更高版本
  • Xcode 14.2(构建)

需要转换或下载 Core ML 模型才能使用 Mochi Diffusion。这个我懒得实践了,这里放一张官方的截图。

MochiDiffusion

# 4. 使用StreamDiffusion加速生成

# 4.1 StreamDiffusion 简介

StreamDiffusion能以惊人的速度生成 AIGC 图像,单张 RTX4090 显卡可达 100 张/秒。它通过流批处理简化数据处理,采用残差无分类器(RCFG)减少计算冗余,随机相似性过滤器提高 GPU 利用率,并通过优化 IO 队列实现并行处理。同时,利用多种模型加速工具,实现爆炸式地提升 AIGC 图像速度。

# 4.2 部署 StreamDiffusion 服务

实验环境:租用的AutoDL的GPU服务器,NVIDIA RTX 4090 / 24GB,Ubuntu20.04,Python 3.10, CUDA 11.8

# 4.2.1 安装基础环境

安装conda环境

$ curl -O https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh   // 从官网下载安装脚本
$ bash Anaconda3-2019.03-Linux-x86_64.sh           // 阅读协议确认安装,安装完成后再输入yes以便不需要手动将Anaconda添加到PATH
$ conda create -n streamdiffusion python=3.10      // 安装虚拟环境,streamdiffusion是给虚拟环境起的别名(任意即可)
$ source /root/miniconda3/etc/profile.d/conda.sh   // conda初始化
$ conda activate streamdiffusion                   // 激活虚拟环境
1
2
3
4
5

安装其他版本的CUDA/cuDNN

$ conda search cudatoolkit
$ conda install cudatoolkit==11.8.0
$ conda list cudatoolkit
$ conda search cudnn --channel nvidia
$ conda install cudnn=8.9.2.26
$ conda list cudnn
1
2
3
4
5
6

注:默认镜像都内置了最原生的CUDA和cuDNN,如果您自己安装了cudatoolkits等,那么一般会默认优先使用conda中安装的cudatoolkits。

安装node.js和npm环境

$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo bash -
$ apt update
$ apt-get install aptitude -y
$ aptitude install nodejs
$ node -v
$ npm -v
1
2
3
4
5
6

注:直接使用 apt install nodejs 命令安装的node.js环境版本太低,后面使用时会出依赖问题,因此采用了这种方式。

# 4.2.2 拉取代码并安装依赖

拉取代码并安装依赖。

$ git clone https://github.com/cumulo-autumn/StreamDiffusion.git
$ conda activate streamdiffusion   
$ pip3 install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu118
$ pip3 install streamdiffusion[tensorrt]
1
2
3
4

# 4.2.3 启动realtime-txt2img前端

构建realtime-txt2img的前端。

$ cd /root/StreamDiffusion/demo/realtime-txt2img/frontend
$ npm install
$ npm run build
1
2
3

将config.py的端口改成6006,启动realtime-txt2img服务,然后配置一下自定义服务,在本地进行访问。

$ cd /root/StreamDiffusion/demo/realtime-txt2img
$ pip3 install -r requirements.txt
$ python3 main.py
1
2
3

# 4.3 使用 StreamDiffusion 服务

Prompt:one girl, cat ears, ukiyoe, Mt.F

使用StreamDiffusion服务

使用体验:生成速度的确非常快,但它生成的图里有很多跟 Prompt 描述不相关的,上图是挑了个效果好的。

# 5. 基于ComfyUI实现AI绘画工作流

# 5.1 ComfyUI简介

# 5.1.1 基本介绍

ComfyUI 是一个开源的基于节点式工作流的 Stable Diffusion 方案,它将 Stable Diffsuion 模型推理时各个流程拆分成不同的节点,让用户可以更加清晰地了解Stable Diffusion 的原理,并且可以更加精细化地控制整个流程。

ComfyUI主界面

# 5.1.2 横向对比

SD WebUI 简单易用,功能一目了然,入门门槛比较低。ComfyUI 相当于 WebUI 来说,拥有更好的性能和速度(生成图片时的速度相较于SD WebUI有10%~25%的提升),可以使用更低的显存来运行(生成大图片的时候也不会爆显存),而且节点式的界面和工作流玩法,配置灵活,玩法也更多,但是入门门槛相对较高。

# 5.2 ComfyUI搭建

实验环境:Macbook Pro 2021,M1 pro芯片,16G内存,macOS Ventura13.3.1系统,Python3.9环境

# 5.2.1 下载模型与源码

Step1:拉取官方代码,并安装依赖。

$ git clone https://github.com/comfyanonymous/ComfyUI.git
$ cd ComfyUI
$ pip3 install -r requirements.txt
1
2
3

Step2:需要将模型文件放入 models/checkpoints 目录,模型下载其一即可:

Stable-Diffusion-v1.5模型地址:https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main (opens new window)

$ wget -P models/checkpoints https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt
1

Stable-Diffusion-XL模型地址:https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main (opens new window)

$ wget -O models/checkpoints/sd_xl_base_1.0.safetensors "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors?download=true"
1

注:如果之前已经在 SD WebUI 下载过模型,也可以通过修改 extra_model_paths.yaml.example 配置文件共用模型。

# 5.2.2 部署服务并使用

执行main.py,部署ComfyUI服务。

$ touch ./app/__init__.py
$ python3 main.py
1
2

ComfyUI后台启动日志

使用Chrome浏览器打开 http://127.0.0.1:8188地址,选择模型,设定Prompt,点击Queue Prompt执行工作流。

ComfyUI界面概述

过一会儿便可看到生成的图片,右键图片,点击Save Image可以将其保存下来。

ComfyUI生成示例

附:ComfyUI快捷键

快捷键 说明
Command + Enter 将当前图形加入生成队列中
Command + Shift + Enter 将当前图形作为第一个加入生成队列
Command + Z/Command + Y 撤销/重做
Command + S 保存工作流
Command + O 加载工作流
Command + A 选择所有节点
Alt + C 折叠/展开所选节点
Command + M 静音/取消静音所选节点
Command + B 绕过所选节点(就像从图中移除了节点并重新连接了线一样)
Delete/Backspace 删除所选节点
Command + Delete/Backspace 删除当前图形
Space 按住空格键并移动光标时可移动画布
Command/Shift + Click 添加点击的节点到选择区
Command + C/Command + V 复制并粘贴所选节点(不保持与未选择节点输出的连接)
Command + C/Command + Shift + V 复制并粘贴所选节点(保持从未选择节点的输出到粘贴节点的输入的连接)
Shift + Drag 同时移动多个所选节点
Command + D 加载默认图形
Q 切换队列的可见性
H 切换历史记录的可见性
R 刷新图形
双击左键 打开节点快速搜索面板

# 5.3 ComfyUI插件

安装ComfyUI插件的方式很简单,切换到./custom_nodes目录,使用git clone命令拉取相应的插件项目即可,启动时会自动将其加载。

# 5.3.1 插件安装管理器

插件简介:ComfyUI-Manager是一个在线安装插件、模型等的插件。

插件地址:https://github.com/ltdrdata/ComfyUI-Manager (opens new window)

使用方式:这个插件安装完成之后,控制面板的最下面会出现一个“Manager”的按钮,点开菜单即可管理插件。

ComfyUI插件安装管理器

再点击Install Custom Nodes,即可安装节点。

ComfyUI插件安装管理器-安装节点

# 5.3.2 ComfyUI界面汉化

插件简介:可以将所有的节点、菜单进行汉化,并且可以在中英文之间来回切换。

插件地址:https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION (opens new window)

使用方式:安装插件之后,点开设置按钮,在里面的菜单里将语言选择成中文即可。

ComfyUI界面汉化插件

汉化后的界面效果如下:

ComfyUI界面汉化效果

# 5.3.3 SDXL风格样式

插件简介:主要用于SDXL模型的风格选择。

插件地址:https://github.com/twri/sdxl_prompt_styler (opens new window)

使用方式:Add Node时,在utils下有SDXL Prompt Styler、SDXL Prompt Styler Advanced两个Node,添加之后可以在style里选择风格。

SDXL风格样式插件-选择风格

以下是官方的一个使用示例:

sdxl_prompt_styler插件

# 5.3.4 蟒蛇八卦工具箱

插件简介:这个插件是很多小工具的集合,具体去官网看详细的功能介绍。

插件地址:https://github.com/pythongosssss/ComfyUI-Custom-Scripts (opens new window)

使用方式:Add Node时,它带有的功能都会显示一个绿色小蛇的图标,方便我们区分。

蟒蛇八卦工具箱

# 6. 参考资料

[1] Comparing Adobe Firefly, Dalle-2, OpenJourney, Stable Diffusion, and Midjourney from Muhammad Usman (opens new window)

[2] AI数字绘画 stable-diffusion 保姆级教程 from 秋风的笔记 (opens new window)

[3] 一系列很棒的工具、想法、提示工程工具、colabs、模型和助手,供提示设计师使用 aiArt 和图像合成 from Github (opens new window)

[4] Disco Diffusion 非原创聚合型速查手册 from Notion (opens new window)

[5] 秋风的笔记-数字绘画 from Notion (opens new window)

[6] 在 Docker 容器中运行官方稳定版本的 Stable Diffusion from Github (opens new window)

[7] 人人都能用的「AI 作画」如何把 Stable Diffusion 装进电脑?from 少数派 (opens new window)

[8] 在您自己的计算机上和安装使用 Stable Diffusion 的简单一键式方式。from Github (opens new window)

[9] 如何在你的 M1/M2 Mac 本地运行 Stable Diffusion form 玉树芝兰 (opens new window)

[10] Diffusion Bee 是在 M1 Mac 上本地运行 Stable Diffusion 的最简单方法 from Github (opens new window)

[11] 文生图模型之Stable Diffusion from 知乎 (opens new window)

[12] 两万字干货!可能是全网最详细的Midjourney基础教程 from 优设 (opens new window)

[13] 怎样系统的学习 AI 绘画?from 知乎 (opens new window)

[14] 实时图像生成StreamDiffusion from Github (opens new window)

[15] Stable Diffusion 3深夜横空出世!模型与Sora同架构,也能「理解」物理世界 from 微信公众号 (opens new window)

[16] OOTDiffusion简介 from 映技派 (opens new window)

[17] 超详细的 Stable Diffusion ComfyUI 基础教程(一):安装与常用插件 from 优设 (opens new window)

[18] ComfyUI安装与使用教程 from AI123教程 (opens new window)

[19] ComfyUI安装及生成第一张图 from AI魔法学院 (opens new window)

[20] ComfyUI 下载、导入模型详细图文教程!新手级入门学习安装使用必备教学 from AI喜好儿 (opens new window)

[21] Stable Diffusion ComfyUI 入门感受 from 知乎 (opens new window)

[22] ComfyUI爽玩必备,6大插件汇总推荐 from AI魔法学院 (opens new window)

Last Updated: 6/1/2024, 9:45:58 PM