# 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 项目。
# 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 一经推出后,受到了大量开发者的追捧,其中又有很多大佬制作了docker及一键脚本,可以很方便的搭建出一个Web界面去运行 stable-diffusion 算法,比如:
https://github.com/fboulnois/stable-diffusion-docker (opens new window)
https://github.com/AUTOMATIC1111/stable-diffusion-webui (opens new window)
https://github.com/sd-webui/stable-diffusion-webui (opens new window)
https://github.com/cmdr2/stable-diffusion-ui (opens new window)
下面的自部署我选用的是最后一个,它是以一键脚本的形式进行部署,使用起来非常简单,所有的东西它都给你配好了,而且是独立环境,不会污染系统环境。
# 1.3 Midjourney简介
Midjourney 是一个人工智能程序,可根据文本生成图像,目前架设在 Discord 频道上。于 2022 年 7 月 12 日进入公开测试阶段,使用者可通过 Discord 的机器人指令进行操作,可以创作出很多的图像作品。
官网地址:https://www.midjourney.com/app/ (opens new window)
# 1.4 DALL-E简介
DALL-E是一个由OpenAI开发的神经网络,它能够将自然语言描述生成为相应的图像。它是基于变分自编码器(VAE)和Transformer架构的生成模型。它首先使用一个VAE将图像编码为离散的潜在表示,然后使用一个大型Transformer模型学习从自然语言描述到这些离散潜在表示的映射。训练完成后,DALL-E可以根据输入的文本描述生成一组与描述相符的图像。
- 论文地址:https://arxiv.org/abs/2102.12092 (opens new window)
- 官网地址:https://openai.com/dall-e-2 (opens new window)
# 2. Stable-Diffusion实现AI绘画
# 2.1 官方提供的在线服务
打开 https://beta.dreamstudio.ai/ (opens new window) 进行注册。
注册好后,就可以进入到这个界面。可以直接在下方输入名词,也可以在打开右侧的设置按钮,里面会更详细的配置。输入好关键词后,直接点 Dream 按钮,等待10秒左右就可以生成图片。
这样的生成方式非常的方便,但是是有次数限制的,超出则需要付费使用。而且使用这种方式,你生成图片的版权为CC0 1.0,你可以商用或者非商用你生成的图片,但是也会默认成为公共领域的资源。
另注:上面的官方界面是2022.9的,现在有了很大变化,下面是2023.10的官方界面。
# 2.2 使用 Stable-Diffusion
更建议使用Google Colab进行部署,这种方式可以几乎无限地使用 Stable Diffusion,并且由于这种方式是你自己跑模型的方式生成的图片,版权归属于你自己。
下面我们将使用 Hugging face 开源的 colab 示例,将其保存到自己的Google Drive里。
# 2.2.1 连接服务器并安装依赖
首先我们先点击右上角连接服务器,连接成功后执行 nvidia-smi 代码块,查看一下所申请到的 GPU 配置。
安装 Stable-Diffusion 所需的项目依赖
# 2.2.2 申请并填写Token
先打开 https://huggingface.co/settings/tokens (opens new window) 页面进行注册,登录进去后创建一个Token,然后执行如下两个代码块,其中第2个会让你填写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报错)
# 2.2.3 编写Prompt生成图片
修改 prompt 里的文字,点击执行,等待一会儿算法便会生成图片。该 colab 下面还有很多高级使用示例,我就不一一演示了,根据提示进行操作即可。
# 2.3 使用 Stable-Diffusion-XL
# 2.3.1 项目介绍
Stable Diffusion XL是Stable Diffusion的优化版本,由Stability AI在2023.7发布。比起Stable Diffusion,Stable Diffusion XL做了全方位的优化。
- 项目地址:https://github.com/TonyLianLong/stable-diffusion-xl-demo (opens new window)
- ipynb地址:https://colab.research.google.com/github/TonyLianLong/stable-diffusion-xl-demo/blob/main/Stable_Diffusion_XL_Demo.ipynb (opens new window)
# 2.3.2 运行示例
这里还是使用Google Colab进行部署,打开ipynb,安装依赖并下载模型,运行起来之后会给出公网访问地址。
在界面里输入 prompt 即可生成图像。
# 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
2
3
4
5
部署过程会比较慢,耐心等待,部署成功后用Chrome打开 http://ip:9000
地址进行访问。
注:打开页面之后实际进行操作时还要再等一会儿才能使用,因为算法还需要下载模型、加载模型和启动。因此启动后先随便输入个内容和选张图,点击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
2)使用图片去生成
- 单击
Browse..
旁边的Initial Image
。选择您想要的图像。 - 可选的文本提示可以帮助您进一步描述您想要生成的图像类型。
- 按
Make Image
。这将需要一些时间,具体取决于系统的处理能力。查看使用提示生成的图像。
提示:还可以单击Use as Input
生成的图像,将其用作下一代的输入图像,这对于通过单击按顺序细化生成的图像很有用。
实际系统资源占用及性能:占用了约16GB存储空间、6GB显存,出图速度大约为10s。
# 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
目录下
输入描述文字,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。这个我懒得实践了,这里放一张官方的截图。
# 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
- 关于GPU服务器租用这里就不赘述了,详见我的另一篇博客:常用深度学习平台的使用指南 (opens new window)
# 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 // 激活虚拟环境
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
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
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]
2
3
4
# 4.2.3 启动realtime-txt2img前端
构建realtime-txt2img的前端。
$ cd /root/StreamDiffusion/demo/realtime-txt2img/frontend
$ npm install
$ npm run build
2
3
将config.py的端口改成6006,启动realtime-txt2img服务,然后配置一下自定义服务,在本地进行访问。
$ cd /root/StreamDiffusion/demo/realtime-txt2img
$ pip3 install -r requirements.txt
$ python3 main.py
2
3
# 4.3 使用 StreamDiffusion 服务
Prompt:one girl, cat ears, ukiyoe, Mt.F
使用体验:生成速度的确非常快,但它生成的图里有很多跟 Prompt 描述不相关的,上图是挑了个效果好的。
# 5. 基于ComfyUI实现AI绘画工作流
# 5.1 ComfyUI简介
# 5.1.1 基本介绍
ComfyUI 是一个开源的基于节点式工作流的 Stable Diffusion 方案,它将 Stable Diffsuion 模型推理时各个流程拆分成不同的节点,让用户可以更加清晰地了解Stable Diffusion 的原理,并且可以更加精细化地控制整个流程。
# 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
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
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"
注:如果之前已经在 SD WebUI 下载过模型,也可以通过修改 extra_model_paths.yaml.example 配置文件共用模型。
# 5.2.2 部署服务并使用
执行main.py,部署ComfyUI服务。
$ touch ./app/__init__.py
$ python3 main.py
2
使用Chrome浏览器打开 http://127.0.0.1:8188
地址,选择模型,设定Prompt,点击Queue Prompt执行工作流。
过一会儿便可看到生成的图片,右键图片,点击Save Image可以将其保存下来。
附: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”的按钮,点开菜单即可管理插件。
再点击Install Custom Nodes,即可安装节点。
# 5.3.2 ComfyUI界面汉化
插件简介:可以将所有的节点、菜单进行汉化,并且可以在中英文之间来回切换。
插件地址:https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION (opens new window)
使用方式:安装插件之后,点开设置按钮,在里面的菜单里将语言选择成中文即可。
汉化后的界面效果如下:
# 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里选择风格。
以下是官方的一个使用示例:
# 5.3.4 蟒蛇八卦工具箱
插件简介:这个插件是很多小工具的集合,具体去官网看详细的功能介绍。
插件地址:https://github.com/pythongosssss/ComfyUI-Custom-Scripts (opens new window)
使用方式:Add Node时,它带有的功能都会显示一个绿色小蛇的图标,方便我们区分。
# 6. 参考资料
[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)