Disco Diffusion:开源的人工智能绘画工具

Disco Diffusion 是发布于 Colab 平台的一款利用人工智能深度学习进行数字艺术创作的工具,它是基于 MIT 许可协议的开源工具,可以在 Google Drive 直接运行,也可以部署到本地运行。下面介绍使用方法。

在线版

优势

使用的是在线服务器进行计算,对本地计算机配置没有要求。有免费版和付费版可供选择,如果只是体验一下效果,免费版完全够用了。

要求

需要能正常使用谷歌账号

使用步骤

进入Disco Diffusion

1、使用浏览器打开链接:https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb,登录谷歌账号。

%title插图%num

2、点击「复制到云端硬盘」或点击「文件」选择「在云端硬盘中保存一份副本」,副本创建完成会出现「笔记本的副本已完成」弹窗,点击「在新标签页中打开」。

%title插图%num
配置Disco Diffusion

1、点击左上角标题可修改名称,方便区分。

%title插图%num

2、修改“3. Settings”里的“Basic Settings”。

batch_name即图片保存在云盘的名称;steps,即AI推演步数,可按默认值(通常 200 – 300 已经足够,若效果不符合预期可适当调整);width_height即图片尺寸,需是 64 的倍数,请勿设置过大尺寸,新手可按默认设置。

%title插图%num

3、修改“Extra Settings”

设置 intermediate_saves 即过程图保存张数。设置为0,渲染完成只保存最后一张图,设置为2,渲染完成会得到一张进度 33%、一张 66% 和一张 100% 的图片;设置为[5, 9, 34, 45] (包含括号)则会保存第5、9、34、45步的图片。数值越大数量越多,不影响渲染速度。

%title插图%num

4、设置 Prompts(特征点)

在这里输入描述画面的语句,格式为”XXXX, XXXX, XXXX.”,建议在其他地方编辑好直接粘贴过来,保留最前和最后的引号,使用一个 Prompt 即可,不要求是完整的句子,可以是长短句或单词,可参考默认结构,前置词描述画作类别,中间描述画面内容,后接参考风格的艺术家,另外可以增加整体风格的词汇或者其他内容,emoji 也可以。

%title插图%num

5、设置“4. Diffuse!”

设置display_rate,即渲染预览图的刷新频率,建议设置为 5,每过 5 个 steps 更新一次预览图。设置n_batches,即以这个主题渲染的图片张数,因为每次渲染的结果都是不同的,所以可以设置多张图片,一张渲染完成后会接着渲染下一张,已经渲染完成的会自动保存,可按需要设置)。

%title插图%num
运行Disco Diffusion

点击“代码执行程序”选择“全部运行”。

%title插图%num

弹出“笔记本需要高 RAM”的窗口,点击“确定”。

%title插图%num

弹出“允许此笔记本访问您的 云端硬盘文件吗?”的窗口,点击“连接到 Google 云端硬盘”,弹出“登录 – Google 账号”窗口,选择你的谷歌账号,点击“允许”。

回到 Disco Diffusion 的页面你会发现每段代码前面都有个中间有个三角形的圆,外面在转圈圈的就是在运行当前的代码,运行完成后前面会出现一个绿色的小勾。

%title插图%num

第一次运行需要等待几分钟,稍等片刻你会看到在「4. Diffuse!」的末尾会出现一张充满噪点的图,就表示开始渲染了,图片上方的 Batches 会显示你的渲染总进度,下方显示的是当前这张图的渲染进度,后面有预计的渲染时间,网页最下方会显示运行时间计时。

%title插图%num

查看结果

渲染完成后,你便可以在Google Drive直接查看保存的图片了,在 AI – Disco_Diffusion – images_out 相应的文件夹里(若设置了 intermediate_saves 会多出一个 partials 的子文件夹,里面是过程图)。所有的图片都是随着进程实时更新的,每完成一个进度就会自动保存一张,在这里可以把图片下载到本地。Colab Notebooks 这个文件夹里保存的是你的源文件。

生成图片

%title插图%num

以图生图

除了直接用文字描述的方式,Disco Diffusion 也可以在一张图片的基础上做渲染,你可以选择自己拍摄的照片、涂鸦的画作或是之前渲染的图片作为一个起点,再配合 Prompts 描述变成一个全新的作品。

基础的操作是一致的,我们只需要多一个步骤,就是在 Settings 里写入 init_image。首先我们需要把使用的图片上传到“文件”中。

上传本地图片

方法一:

点击左侧的第四个“文件”图标展开文件窗口。 点击文件窗口上方第一个“上传到会话存储空间”图标,选择你要上传的图片并点击“打开”,图片就会开始上传(你也可以把图片直接拖进文件窗口的空白处)。 当这个执行阶段重新开始时,已上传的档案会遭到删除。

%title插图%num

上传完成后图片会显示在文件窗口的列表中,找到你要使用的图片并点击文件名后方的三个小圆点,选择“复制路径”。

%title插图%num

方法二:

进入Google Drive,在云端硬盘左侧依次进入AI – Disco_Diffusion – init_images文件夹。

%title插图%num

进入Disco Diffusion,打开左侧文件窗口,点击第3个图标“挂载云端硬盘”,系统会提示需要执行的命令,点击命令前的运行按钮,系统会获取你的云端硬盘的访问权限。

然后在左侧就会出现一个“drive”文件夹,在列表中依次展开 drive – MyDrive – AI – Disco_Diffusion – init_images,找到你要使用的图片并点击文件名后方的三个小圆点,选择“复制路径”。

%title插图%num
设置Disco Diffusion

找到 Settings – Init Settings – init_image,将路径粘贴在此处。设置 init_scale,默认值为 1000,数值越小变化越大;设置 skip_steps,默认值 10,就是将你的图片处理为初始噪点后,直接从 11 步开始使用 Prompts 渲染,建议设置为总步数的一半左右。

%title插图%num

其他设置按照前面的教程设置并运行代码即可。

本地部署版

优势

可离线使用,完全独立,可以使用不同的微调模型。

要求

内存不应低于16G,硬盘可用空间不小于50G,显卡要求显存大于4GB(最好高于6GB,建议8GB以上),建议是不低于Nvidia 10系。

准备运行环境

安装Python

安装Python 3.10.6及以上的Python 3.10.*版本,勾选“Add Python to PATH”(将Python添加到路径)。经测试3.11版本部分依赖装不上。

%title插图%num

安装完成后,在命令行里输入 python -m pip install --upgrade pip安装升级pip到最新版。

获取stable-diffusion-webui

下载git,一路下一步安装。

命令行里,切换到需要安装的目录(最好不要在C盘,要求硬盘剩余空间大于50G以上),整个路径中,不要有中文(比如“C:\AI作画工具\”),也不要有空格(比如“C:\Program Files”)可以避免很多奇怪的问题。运行命令git clone https://.com/AUTOMATIC1111/stable-diffusion-webui.git

安装依赖

进入 stable-diffusion-webui目录,运行webui-user.bat,耐心等待,脚本会自己检查依赖,会下载大约几个G的东西,解压安装到文件夹内。安装过程视网络状态可能会有多次中断(一部分模型在国外)。但凡报错中断之后,只需要重新运行webui-user.bat,程序会继续安装过程。

安装完毕之后,会出现如下界面:

%title插图%num

如果安装过程顺利,在浏览器输入地址http://127.0.0.1:7860 ,就能访问到stable diffusion的本地服务了。

下载模型文件

stable-diffusion-webui只是个工具,他需要后端的训练模型来让AI参考建模。目前比较主流的模型有

  • stable-diffusion:偏真人(一般简称为 SD 模型, SDwebui 模型)
  • waifu-diffusion:偏向二次元(一般简称 Waifu 模型,WD模型)
  • Novel-AI-Leaks:更加偏向二次元(一般简称 Naifu 模型)
模型的大致区别
名称需求效果备注
stable-diffusion (4GB emaonly模型)2GB 显存起步出图速度 10s,单次最大出 920×920适合出图用
stable-diffusion (7GB full ema模型)4GB 显存起步带最后一次训练的权重,所以费显存适合训练用
waifu (Float 16 EMA 模型)2GB显存起步与stable性能接近 ,显存占用略高适合出图用
waifu (Float 32 EMA 模型)2GB显存起步与stable性能接近,显存占用略高适合出图用,出图质量其实和16差别不大
waifu (Float 32 Full 模型)4GB显存起步与stable性能接近,显存占用略高适合出图或训练用
waifu (Float 32 Full + Optimizer 模型)8GB显存起步与stable性能接近,显存占用略高适合训练用
Naifu (4GB pruned 模型)最低8GB显存&8GB显存和官方比较接近适合出图用
Naifu (7GB latest模型)最低8GB显存(向上浮动10GB)和官方比较接近适合出图或训练用
下载stable-diffusion

将.ckpt文件放在\stable-diffusion-webui\models\Stable-diffusion\ 下,文件名可以是任何你喜欢的英文名,比如stable-diffusion .ckpt。

下载 waifu-diffusion

将.ckpt文件放在\stable-diffusion-webui\models\Stable-diffusion\ 下,文件名可以是任何你喜欢的英文名,比如waifu-diffusion-16.ckpt。

下载 NovelAILeaks

找到naifu\models\animefull-final-pruned\model.ckpt放在\stable-diffusion-webui\models\Stable-diffusion\ 下,文件名可以是任何你喜欢的英文名,比如Naifu-Leaks- 4chan.ckpt。

找到naifu\models\animefull-final-pruned\config.yaml放在\stable-diffusion-webui\models\Stable-diffusion\ 下,文件名改成和你上边的文件同名,比如Naifu-Leaks- 4chan.yaml。

找到naifu\modules\,把里面所有的.pt文件复制到\stable-diffusion-webui\models\hypernetworks\文件夹下,没有这个文件夹就自己新建一个。

生成AI作图

双击运行\stable-diffusion-webui\webui-user.bat

%title插图%num

在浏览器输入地址http://127.0.0.1:7860,进入stable-diffusion-webui。

%title插图%num

Stable Diffusion checkpoint:选择模型,放在models目录下的模型会自动识别出来。

Prompt:填写想要的特征点

Negative prompt:填不想要的特征点,排除一些负面标签,比如奇怪的手,奇怪的肢体,减少生成奇怪图片的几率。

Sampling Steps:你可以理解让AI推演多少步,一般来说超过17基本就能看了,步数越多,画面中的细节就越多,但需要的时间也就越久,一般20~30是一个比较稳妥的设定。这个数不会改变画面内容,只会让内容更加精细,比如20的项链就是一个心形钻石,而50的项链还是同样的心形钻石,只是钻石上会有更加复杂的线条。

Sampling method:你可以理解成AI推演的算法,一般Euler a,Euler ,DDIM,都是不错的,任选一个就行。

图片分辨率:这个就是拼显卡显存的,自己调吧,低于512X512可能画面就不会有太多细节了,越大的分辨率AI能发挥的地方就越多。

下边是3个扩展选项,一般不需要勾选。
Restore faces:勾选后可以生成更真实的脸,第一次勾选使用时,需要先下载几个G的运行库。
Tiling:让图片可以平铺(类似瓷砖,生成的图案左右上下都可以无缝衔接上自己)
Highres. fix:超分辨率,让AI用更高的分辨率填充内容,但生成的最终尺寸还是你上边设定的尺寸。

Batch count:是一次运行几次
Batch size: 是同时生成多少张
比如:Batch count设置为4,用时N分钟*4,生成4张图;Batch count设置为4,用时N分钟,生成4张图,但是同时需要的显存也是4倍。512X512大概需要3.75GB显存,4倍就是15GB显存了。

CFG Scale:AI有多参考你的Prompt与Negative prompt,开得越高,AI越严格按照你的设定走,但也会有越少的创意;开的越低,AI就越放飞自我,随心所欲的画。一般7左右就行。

Seed:随机数种子,AI作画从原理上其实就是用一个随机的噪声图,反推回图像。但因为计算机里也没有真随机嘛,所以实际上,AI作画的起始噪声,是可以量化为一个种子数的。

Generate:生成按钮。.

生成的图片会自动保存到stable-diffusion-webui\outputs文件夹。

改软件中还有img2img等功能。需要的可自行摸索。

%title插图%num

如果生成的时候报错或生成的图片是一个黑块,是因为显卡显存较低。解决方法如下:

在stable-diffusion-webui文件夹下找到webui-user.bat,右键编辑,其内容如下:

@echo off



set PYTHON=

set GIT=

set VENV_DIR=

set COMMANDLINE_ARGS=

call webui.bat

在上述文件中的“set COMMANDLINE_ARGS=”后根据自己显卡的显存选择下面的参数填入

4G显存:--precision full --no-half --lowvram --always-batch-cond-uncond

6G显存:--precision full --no-half --medvram

低于5G显存:--medvram

低于3G显存:--lowvram --always-batch-cond-uncond

如:

%title插图%num

如没有好用的Prompt,可在https://lexica.art/根据关键词搜索图片,然后复制Copy prompt和下面的参数。

%title插图%num

生成效果对比

Visits78
LightDark
LightDark