Disco Diffusion 是发布于 Google Colab 平台的一款利用人工智能深度学习进行数字艺术创作的工具,它是基于 MIT 许可协议的开源工具,可以在 Google Drive 直接运行,也可以部署到本地运行,目前最新的版本是 Disco Diffusion v5.2。
主创是 Somnai(@Somnai_dreams)和 Adam Letts(@gandamu_ml),在 Chris Allen(@zippy731)、HostsServer(@HostsServer)和 Tom Mason(@nin_artificial)的协作下迭代到了今天的版本。
用白话讲 Disco Diffusion 的基本工作就是把你给出的 Prompts(提示/描述)由文字信息变成图像信息,把你用文字描述的画面「画」出来。实际操作也基本如此,很简单,先来看几张用 Disco Diffusion 生成的图片。
图片下方是我给出的 Prompts,Disco Diffusion 会根据这些内容去生成画面,并且每一次都会产生不同的结果,这些还是我初期基本按默认参数渲染的,所以精度其实不算太高,如果提高参数设置,做出更好的描述,你会得到质量更高的图片。下面就进入教程环节吧。
准备工作
注册一个谷歌账号。
入门教程
01. 使用浏览器打开 Disco Diffusion v5.2 [w/ VR Mode](https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb)。
02. 点击页面右上角「登录」按钮,登入你的谷歌账号。
03. 点击「复制到云端硬盘」或点击「文件」选择「在云端硬盘中保存一份副本」。
04. 副本创建完成会出现「笔记本的副本已完成」弹窗,点击「在新标签页中打开」。
05. 单击「“Disco Diffusion v5.2 [w/ VR Mode]”的副本」修改笔记本名称(以下所有代码可视为源文件/源代码,此处是源文件的名称,可按创作主题或其他方式命名,方便后期修改和区分)。
06. 修改 batch_name(图片保存在云盘的名称);设置 steps,可按默认值(通常 200 - 300 已经足够,若效果不符合预期可适当调整);设置 width_height(图片尺寸,需是 64 的倍数,请勿设置过大尺寸,新手可按默认设置)。
07. 点击 Extra Settings 前面的小三角,设置 intermediate_saves(设置过程图保存张数,设置为 0 渲染完成只保存最后一张图,设置为 2,渲染完成会得到一张进度 33%、一张 66% 和一张 100% 的图片,数值越大数量越多,不影响渲染速度)。
08. 设置 Prompts(在这里输入描述画面的语句,格式为"XXXX, XXXX, XXXX.",建议在其他地方编辑好直接粘贴过来,保留最前和最后的引号,使用一个 Prompt 即可,不要求是完整的句子,可以是长短句或单词,可参考默认结构,前置词描述画作类别,中间描述画面内容,后接参考风格的艺术家,另外可以增加整体风格的词汇或者其他内容,emoji 也可以)。
09. 设置 display_rate(渲染预览图的刷新频率,建议设置为 5,每过 5 个 steps 更新一次预览图),设置 n_batches(以这个主题渲染的图片张数,因为每次渲染的结果都是不同的,所以可以设置多张图片,一张渲染完成后会接着渲染下一张,已经渲染完成的会自动保存,可按需要设置)。
10. 点击「代码执行程序」选择「全部运行」。
11. 弹出「笔记本需要高 RAM」的窗口,点击「确定」。
12. 弹出「您还在设备面前吗?」的窗口,点击「进行人机身份验证」,按指令进行验证。
13. 弹出「允许此笔记本访问您的 Google 云端硬盘文件吗?」的窗口,点击「连接到 Google 云端硬盘」。
14. 弹出「登录 - Google 账号」窗口,选择你的谷歌账号,点击「允许」。
15. 回到 Disco Diffusion 的页面你会发现每段代码前面都有个中间有个三角形的圆,外面在转圈圈的就是在运行当前的代码,运行完成后前面会出现一个绿色的小勾,第一次运行需要等待几分钟,稍等片刻你会看到在「4. Diffuse!」的末尾会出现一张充满噪点的图,就表示开始渲染了,图片上方的 Batches 会显示你的渲染总进度,下方显示的是当前这张图的渲染进度,后面有预计的渲染时间,网页最下方会显示运行时间计时。
16. 过几分钟可能还会出现一次「您还在设备面前吗?」的弹窗,点击「进行人机身份验证」,按指令进行验证,之后就可以慢慢渲了。(steps 设置为 250 实际上渲染只到 240,因为默认跳过了 10 个 steps,如果 display_rate 设置为了 5,那么图片下方的进度条每增加 5 个 steps 图片就会刷新一次,在这里右击是可以直接保存当前的图片的,当然按你的设置也会根据进度自动保存图片到你的谷歌云盘)
17. 之后你便可以在 Google Drive(https://drive.google.com)直接查看保存的图片了,在 AI - Disco_Diffusion - images_out 相应的文件夹里,若设置了 intermediate_saves 会多出一个 partials 的子文件夹,里面是过程图。所有的图片都是随着进程实时更新的,每完成一个进度就会自动保存一张,在这里可以把图片下载到本地。Colab Notebooks 这个文件夹里保存的是你的源文件。
进阶教程
除了直接用文字描述的方式,Disco Diffusion 也可以在一张图片的基础上做渲染,你可以选择自己拍摄的照片、涂鸦的画作或是之前渲染的图片作为一个起点,再配合 Prompts 描述变成一个全新的作品。
基础的操作是一致的,我们只需要多一个步骤,就是在 Settings 里写入 init_image。首先我们需要把使用的图片上传到 content 中,这里有两种操作方式。
方式一
01. 点击左侧的第四个「文件」图标展开文件窗口。(如果是新建的文件可能会出现入门教程第 11、12 步的弹窗,确定加验证就可以了)
02. 点击文件窗口上方第一个「上传到会话存储空间」图标,选择你要上传的图片并点击「打开」,图片就会开始上传(你也可以把图片直接拖进文件窗口的空白处)。
03. 上传完成后图片会显示在文件窗口的列表中,找到你要使用的图片并点击文件名后方的三个小圆点,选择「复制路径」。
方式二
01. 进入 Google Drive 登入你的账号,在云端硬盘左侧依次点击 AI - Disco_Diffusion - init_images 进入文件夹。
02. 把图片直接拖进文件窗口的空白处(你也可以在空白处右击选择上传文件)。
03. 打开或新建 DD 文件,按方式一打开左侧文件窗口,在列表中依次展开 drive - MyDrive - AI - Disco_Diffusion - init_images,找到你要使用的图片并点击文件名后方的三个小圆点,选择「复制路径」。
若在文件窗口找不到 drive 文件夹,请点击文件窗口第三个「装载 Google 云端硬盘」图标,并按提示操作,载入你的 Google 云端硬盘,若文件夹还未出现,请点击文件窗口第二个「刷新」图标。
04. 找到 Settings - Init Settings - init_image,将路径粘贴在此处。
05. 设置 init_scale(默认值为 1000,数值越小变化越大);设置 skip_steps(默认值 100,就是将你的图片处理为初始噪点后,直接从 101 步开始使用 Prompts 渲染,建议设置为总步数的一半左右)。
06. 按照入门教程设置其他内容并运行代码即可。
高阶教程
高阶玩法就是各种摆弄参数了,大家可以参考 Disco Diffusion 内的 Tutorial 部分,这里对部分参数做了一些解释,也可以研究一下 Zippy's Disco Diffusion Cheatsheet v0.3(https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/edit) 这个文档。
目前通过 v5.2 的版本我们不仅可以使用 DD 生成 2D 的图像,还可以制作 3D 的内容,包括视频,甚至可以制作 VR 视频。
本地运行
上面提到过 Disco Diffusion 是可以本地运行的,这边有两个教程,供大家参考。
Disco Diffusion AI Guide by Eliso(Win & Mac & Linux)
https://botbox.dev/disco-diffusion-guide
DDv5离线本地版出炉! by @JZ_打个比方(Win)
https://www.bilibili.com/video/BV1VL4y1V7Yv?share_source=copy_web
本地运行可能需要至少 6GB 独显,仅支持 NVIDIA 显卡。
学习资料
Zippy's Disco Diffusion Cheatsheet v0.3
https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/edit
Disco Diffusion Modifiers
https://weirdwonderfulai.art/resources/disco-diffusion-modifiers
Disco Diffusion 70+ Artist Studies
https://weirdwonderfulai.art/resources/disco-diffusion-70-plus-artist-studies
EZ Charts - Diffusion Parameter Studies
https://docs.google.com/document/d/1ORymHm0Te18qKiHnhcdgGp-WSt8ZkLZvow3raiu2DVU/edit
200 CLIP+VQGAN keywords on 4 subjects
https://imgur.com/a/SALxbQm
VQGAN+CLIP Keyword Modifier Comparison
https://creator.nightcafe.studio/vqgan-clip-keyword-modifier-comparison#results
Hitchhiker's Guide To The Latent Space: Community Notebook Document
https://docs.google.com/document/d/1ON4unvrGC2fSEAHMVb4idopPlWmzM0Lx5cxiOXG47k4/edit
使用技巧
关于渲染速度,取决于 GPU,使用免费版的 Google Colab 我们会有机会匹配到 K80 和 T4 两种 GPU,K80 的匹配频率会略高一些,按默认设置使用 K80 GPU 渲染一张图片大概需要一个半小时左右,而使用 T4 GPU 大概只需要 15 分钟左右。
我们可以在这里查看匹配的 GPU,如果你配到了 T4,最好不要轻易关闭程序,如果要改动 Prompts 或其他设置,可以先停止 4. Diffuse! 的运行,点下那个转圈的圆形,停止后修改你要修改的东西,修改过的项目都要再点一下那些项目前面的圆形按钮,重新运行单元格,改过的都运行好以后,在重新运行 4. Diffuse! ,就可以接着渲了,同时建议改了主题都把 batch_name 也改一下,这样渲染的图会保存在新的文件夹里。
关于 Google Colab,他有三个用户分类,免费用户、Pro 用户和 Pro+ 用户,区别如下图。
简单说,就是付费后限制会减少,效率会更高。免费用户每日有使用时长限制,这个限制是一个动态的限制,每天略有不同,可能 2~8 小时不等,跟你账户的使用情况也有关系,当日达到限额后需要从当日首次使用服务开始计算 24 小时后恢复使用。上面也讲到了关于 GPU 的分配,免费用户会被分配到 K80 和 T4 两种 GPU,Pro 用户会分配到 T4 和 P100,Pro+ 用户是 P100 和 V100,速度是越来越快的,免费用户只能同时运行一个项目,付费用户可以支持多开,Pro+ 用户还支持后台执行,大家可以根据自身情况选择方案。
关于上传 init_image,我在进阶教程中给大家提供了两种方式,其中直接在 Google Colab 上传的图片可视为一次性用途,当关闭程序时上传的图片会自动删除,也就是说如果你关闭了程序,下次再打开文件这个图片就没了,如果你还要使用它就需要重新上传。而上传至 Google Drive 则不存在此问题,但是可能会需要你在运行前先载入 Google Drive,也就是先连接到谷歌云盘再开始运行程序。
关于防止断连,当页面长时间没有活动时 Google Colab 有可能会判定服务处于空闲状态,如果你使用的是 Chrome 浏览器,可以在 Chrome 网上应用店搜索 Colab Alive,安装这款扩展程序,它会定时帮你自动打开和关闭资源窗口,使你的页面处于活动状态。
关于 steps,经过一段时间的实验,发现 steps 并不是设置的越高越好,而是需要根据你要的画风来判定,也许一般来讲 250 是完全足够的,你甚至不需要跑到 300,如果你选择的艺术家风格本身就不是那种写实的,本身就不会有很多细节,那你 steps 设置的太高就会起到反作用,会慢慢脱离艺术家的风格,我一度认为 AI 没有识别出那些艺术家,直到我回去看步骤图,才发现也许是细节太多,锐化过头了,中间的朦胧美才是画家原本的风格。所以要根据你要的风格去设置 steps,一般情况可以按默认,如果希望做一个写实的或者很精细的画面,并且你选择的艺术家或描述是符合这个方向的,你可以提高 steps 的值。还有同样的 steps 在不同的 prompts 里呈现的效果是不同的,与你的关键词有关。还是建议通常设定 250-300 足矣,有些画风不到 200 就已经足够了,具体可以自己判断。
关于渲染过程中想临时改动设置或 Prompts 然后重新渲染,如果不想重新建一个文件也不想重新运行整个程序,想直接改,是可以的,但是意味着你之前的设置不会保存在云盘,你之后的设置会覆盖之前的设置,当前渲染中的项目会提前停止,如果这不是问题可以这样操作。
01. 点击「4. Diffuse!」前面转圈的圆形按钮停止运行「4. Diffuse!」。
02. 更改设置或 Prompts。(注意所有更改过的项目都需要点击那个单元前面的圆形按钮单独运行一遍以更新设置)
03. 建议修改 batch_name,修改后重新渲染的文件会保存在新的文件夹里(如果不修改,新的图会存在原来的文件夹内并覆盖旧的图)。建议重新运行 Extra Settings,运行后新的过程图会保存在新文件夹的子文件夹里(如果不运行,新的图会存在原来的文件夹内并覆盖旧的图)。
04. 所有修改过的地方都单独运行过以后,重新点击「4. Diffuse!」前面的圆形按钮,开始转圈表示正常运行。
关于 init_image,我们姑且先把它称为参考图,大致上可以把 init_scale 理解为参考图的模糊程度,数值越大,参考图越清晰,数值越小,参考图越模糊,通过 init_scale 的大小来控制参考图的模糊程度,模糊后的图片会被处理为初始噪点图,skip_steps 是设置跳过步数的,也就是用来定义你希望你的参考图在整个渲染过程中所占的比例,可以简单理解为你希望从多少步开始让 AI 在参考图的基础上使用你的 prompts 进行创作,那么跳过的步数越小,prompts 所占的比重就越大,跳过的步数越多,prompts 所占的比重就越小。
可以简单理解为 init_scale 控制参考图的模糊程度,skip_steps 控制 AI 的创作时间。通过这两项参数的组合,加上参考图的内容,你可以相对自由的控制包括且不限于画面的色调、布局、元素之间的关系等要素。你也可以通过在参考图上呈现主次关系来指导 AI 工作,可简单理解为相同面积内细节高的元素比细节低的元素更具有稳定性,面积大的比面积小的更具有稳定性等等,画面占比小且细节少的元素会被做出较大的调整及变化甚至消失。
关于 width_height,也就是图片尺寸,数值必须是64的倍数,也就是 64、128、192、256、320、384、448、512、576、640、704、768、832、896、960、1024、1088、1152、1216、1280、1344、1408、1472、1536、1600、1664、1728、1792、1856、1920、1984、2048、2112、2176、2240、2304、2368、2432、2496、2560、2624、2688、2752、2816、2880 等,注意图片尺寸越大、steps 越高,需要的显存就越大,如果设置的过大可能会导致 CUDA 报错,提示显存已满,需要把尺寸或 steps 改小再渲染。 如果想得到大尺寸的图片,建议使用人工智能图片放大工具比如 Topaz Gigapixel AI 来进行放大,会在保留细节甚至是增强细节的情况下将图片放大,或者你可以付费升级账户。
关于运行状态,程序在运行过程中有可能会出现假死状态,表现为服务器状态显示忙碌、网页最下方出现红色感叹号,计时停止,显示已完成、5. Create the video 前方出现红色感叹号、网页左下角提示无法保存、进度条消失等等,其实极有可能这时候是处于假死状态,你需要观察预览图是否还在变化,如果可以观察到预览图还在变化更新,说明渲染还在继续运转,一切正常,不需要操作,等到渲染下一张图片时有可能恢复正常,如果没有恢复,只要看到预览图在实时更新,就表示渲染在正常进行,因此我建议将 display_rate 设置为 5 或更低,这样可以更快的看到画面的变化情况。
另外,有的情况预览图也会消失不显示,这时候如果你设置了 intermediate_saves 也就是保存过程图片,可以去云盘查看 partials 文件夹内是否有新进度的图片出现,如果在不显示预览的之后依然有新进度的图片保存在云盘,说明渲染在正常进行。所以也建议大家都设置一下 intermediate_saves,可以设置为5或更高,越高存储进度图的频率越高。
关于报错,如果你完全按照教程操作,正常来讲是不会报错的,如果报错了,首先有可能是网络问题,其次有可能是因为参数设置问题,比如图片尺寸设置的过大,新手建议设置参考默认设置,变化不要太大,有些设置过大会导致需要更大的显存支持,有可能会超过配给你的 GPU 限额,因而导致报错。另外还有可能是 prompt 撰写错误,比如填写位置错误,格式错误等,注意把内容放在教程内所示的位置,并按要求填写,使用英文并不要随意添加符号及数字,如果要使用权重请把要增加权重的内容在第一个描述后加上逗号,并在新的引号内填写新内容及权重。
如果遇到报错无法解决,建议点击 代码执行程序 - 重新启动并运行所有单元格,或点击磁盘后方的小三角点击 管理会话 - 终止会话 - 代码执行程序 - 全部运行,或打开 DD 原始链接重新复制一个文件,重新设置并运行,或尝试重新连接网络后再试。
新手请参考教程设置参数,不要设置与参考值偏差较大的参数,如果是非网络问题导致的报错,个人也找不到原因,建议重新建立文件并重新设置参数后再运行。
以上就是本教程的全部内容了,若有其他疑问,欢迎留言。
评论