整理 | Disco Diffusion 参数效果大全(下)
Hi, 我是海辛,是一名影视导演,上面放的短片画面是完全通过 AI Disco Diffusion 生成的。为了更好地学习如何提升 AI 画面的质量,最近看了许多总结得很好的英文文档,在取得了原作者授权同意的情况,本文由周末和海辛共同翻译。
本文将涉及以下参数,善用 ctrl/cmd + F 进行搜索:
1. output image size
2. clamp_grad, clamp_max
3. eta
4. cutn_schedule
5. range_scale
Disco Diffusion 参数效果大全(上)查找更多参数。
1. output image size 输出图片大小
width_height: 默认生成图片宽高比为 [1280, 768] 可以设置方形、宽屏、窄屏图片。但数值需要是 64 的倍数,由于 Clip 模型设置的要求,至少需要 512px. 如果输入的数值不是 64 的倍数,DD 会自动修改该值为某个 64 倍数的值。
[512, 768] 是一个中等大小图像不错的起始值,[1024, 768] 可以被认为对于 DD 来说是比较大的生成图像,有可能会出现爆显存的错误。越大的像素会显著增加爆显存的概率,所以从较小的图片开始更为明智。如果最终你需要一个较高像素的图片,一个更通用的流程是,先用 DD 生成中等大小的图像,再用另外一个扩大像素类型的 AI 来生成像素更高的图像。
另外一个有趣的现象,长宽比低的设置(如 512 x 1024) 更适合生成视觉上更高的物体;长宽比高的设置(如 1024 x 768)则更适合生成景观图。
不同 output image size 值的实验 [1]
输入的参考图大小会保持在 1280 x 768.
模型选用: ViTB32, ViTB16, RN50 (DD 默认值)
原始参考图 1280x768
12.5% (160, 96):
25% size (320,192):
37.5% size (480,288):
50% size (640,384):
75% size (960,576):
100% size (1280,768):
125% size (1600,960):
137.5% size (1760,1056):
测试者笔记:
我们可以从中得出什么结论吗?🤔 可能可以看出一点,我个人感觉越低的像素会出现越抽象的结果;较低的像素有油画/印象派的质感。
2. clamp_grad, clamp_max
clamp_grad (默认打开): clamp_grad 的功用是作为内部限制器以避免 DD 训练出极端结果。如果 clamp_grad=True 与 clamp_grad=False 两种设定下训练出来的图像有非常大的变化,这大概率意味着你的 clip_guidance_scale参数设置的太高,可以适当调低。
clamp_max: (默认为0.05,可以设置为0-0.30之间的浮点数): 这是设置 clamp_grad 程度的参数,默认值为 0.05,以保证更为平滑、柔和的色彩。随着设定值的增加(0.15-0.30),模型将倾向于提供更具差异性和明亮的色彩。
不同 clamp_max 值的实验 [2]
训练步数为 250,clamp_max = 0.03, 0.035, 0.04, 0.045, 0.05 的效果对比:
不同训练步数下,不同 Clamp_max 值的实验
step = 250, 500, 1000; clamp_max = 0.03, 0.04, 0.05 的交叉效果对比
3. eta
eta: (默认值为0.5,可以设置为0-1.0之间的浮点数) eta (希腊字母 η)是 diffusion model 的模型参数,会在每一步中添加随机噪声。eta=0 意味着不引入噪声,eta 越大,噪声越高。类似大多数 DD 的参数,eta 可以设置为负值,这可能会带来难以预料的输出图像。
模型可以视为超平面中的一个点,在训练中寻找最优的位置,如果模型陷入了某个“局部最优”的区域无法逃脱,加入随机噪声可以帮助模型获得新的“位置”,以继续优化,但这也意味着需要更多的训练步数。如果设置eta=0, 那么只需50-75步训练你就可以获得较为成型的输出图。当eta=1.0时,最好设置更多的训练步数,一般而言>250步:因为在每一步的训练中,模型会添加更多的噪声,因此需要更多的训练步数以获得收敛的结果。
不同 eta 值的对比实验 [3]
steps=250, clamp_max=0.05, eta= 0.0, 0.2, 0.4, 0.6, 0.8, 1.0
eta 为负值的对比实验:
steps=250, clamp_max=0.05, eta= -1.0, -0.08, -0.06, -0.04, 0.02
固定步数,不同 eta 及 clamp_max 的交叉对比实验:
steps = 250, eta = -1.0 - 1.0 vs clamp_max = 0.01 - 0.09
cutn_scheduling 的默认值在大多数图片的训练中都会产生很好的效果,调节 cut schedule 时需十分谨慎。
下面涉及的参数将会决定 CLIP 的 cuts 安排,换言之,CLIP 用以衡量模型效果的样本。在 DD 中,有两类 cuts: overview cuts, 以图片整体作为样本来评估与 prompt的匹配度; inner cuts, 图片的一些局部样本,有助于对图片细节进行训练。inner cuts 的大小可以通过 cut_ic_pow 参数来设置。
Cut schedule 决定了在每一阶段所选取的 cut 类型。默认设置是在早期使用 overview cut,之后通过 inner cut 来训练细节。事实上默认设置在大多数情况下已经足够,但你可以通过调整参数来处理整体与局部的呈现效果。
cuts 的总数是决定内存使用量的决定性参数之一,需要谨慎地选取。在实际使用中,cuts会根据具体情况进行划分,但在设置的时候,cutn_schedule 必须是基于1000个单元进行划分的。同时,cutn_schedule也会根据总步数进行分配,因此当使用skip_steps / frames_skip_steps,你也会跳过一部分cuts。
cut_ic_pow (1.0 | 0.5-100): 决定inner cuts大小的参数。设置为较高的值会导致每个cut的size更小,因而会有更精细的细节训练,但如果设置了太多的细小inner cuts,训练出的图像可能失去整体的一致性,产生破碎的,“镶嵌画”式的结果。相应的,设置为较小的值,inner cut的size会变大,在维持图像的整体性时,也会保证一些细节的训练。
cut_icgray_p: 一部分 cuts 可以去除色彩被设置为“灰度”模式。这一设置会改进边界和锐度的呈现,尤其是在最初的训练步数中,有助于构图的界定。cut_icgray_p会作用在 overview / inner cut 之上。
不同 Cut_overview 及 cut_innercut 的交叉对比实验 [4]
不同 Cut_ic_pow 及 cutn_batches 的交叉对比实验
不同 Cut_ic_pow 及 cut_innercut 的交叉对比实验
range_scale: 调节画面对比度,默认为 150,可调节范围 0~1000. 越低的 range_scale 会增强画面的对比度、减少颜色种类,生成像海报的图片。越高的 range_scale 会降低对比度,增加颜色种类,生成更"平"的图片。
不同 range_scale 及 CGS 的交叉对比实验 [5]
以上就是 Disco Diffusion 参数效果大全(下)的内容,因为存在着一些整理和筛选,希望此文只是抛砖引玉,大家可以 Reference 的部分找到每部分对应的链接,并直接阅读英文原文。DD 的参数实验,目前网络的更新速度很快,所以可能不久又会有新的。我也有在做关于 Disco Diffusion 的参数实验笔记,希望能给你的 DD 之旅提供帮助。
另外,我们有一个关于女性 AI 艺术家的共学小组,如果你是对 AI 感兴趣的女性艺术家,欢迎通过后台留言的方式告诉我你的微信号,在不忙的时候我会加你并且拉你进群。
[2] https://twitter.com/KyrickYoung/status/1500199679467925505?s=20&t=jwNBocA4ZTy9bF9rrYBsmg
[3] https://twitter.com/KyrickYoung/status/1500302322282418187?s=20&t=RXMx505dK7a_nz1N1I-0JA
[4] https://twitter.com/KyrickYoung/status/1502119135446245386?s=20&t=RXMx505dK7a_nz1N1I-0JA
[5] https://discord.com/channels/944025072648216586/949776749456138320/968022827955523624