Skip to content
fishslot edited this page Feb 26, 2023 · 15 revisions

Welcome to the video_loopback_for_webui wiki!

参数介绍

input_directory:待处理图片的目录,也可以是一个视频文件。如果给定的是目录,图片文件将按字典序排列。如果给定的是一个视频文件,将在 output_directory 目录下保存从视频中拆分出的帧。

output_directory:输出图片的目录。参数配置,合成的视频,都会保存在该目录下。

output_frame_rate:一个整数,表示输出视频的帧率。

use_mask:如果勾选该选项,表示要启用 inpainting 功能。注意,启用该选项进行渲染前,应该先切换到 inpainting 页面,不然有些参数没法设置。

mask_directory:只有当勾选 use_mask 后会出现,填入 inpainting 使用的 mask 的目录,或是填入一张图片的路径,或是留空。当填入 mask 目录时,必须保证 input_directory 中的每张图片都在 mask_directory 中存在同名图片。当填入单张图片的路径时,所有处理都会使用该图片作为 mask 。当此处留空时,表示使用原图片的 alpha 通道作为 mask。

mask_threshold:只有当勾选 use_mask 后会出现,用于控制 mask 二值化的阈值。

read_prompt_from_txt:如果勾选该选项,表示将使用 input_directory 中与图片同名的 .txt 文件中的内容作为 prompt 。如果某张图片没有对应的 .txt 文件,将会使用 WebUI 界面中的 prompt 代替。在 .txt 文件中, --neg 之后的内容将作为 negative prompt,如果文件中没有给出 negative prompt ,将使用 WebUI 界面中的 negative prompt 。

max_frames:一个整数,表示要处理的图片数量。将只处理前 max_frames 帧,用于限制视频时长。

extract_nth_frame:一个整数,表示从原视频中每隔 extract_nth_frame 帧,取一帧。设定为 1 表示使用所有帧,设定为 2 表示每隔一帧用一帧,以此类推。

loop_n:一个整数,表示要重复渲染多少次。

superimpose_alpha:一个 0~1 之间的浮点数,表示每次渲染后,原视频的改变量。该值越大,每次渲染带来的改变就越大。

fix_seed:表示是否要使用固定的 seed。如果不勾选,每次生成后 seed 会迭代增加。

fix_subseed:表示是否要使用固定的 subseed。如果不勾选,每次生成后 subseed 会迭代增加。

temporal_superimpose_alpha_list:用逗号分隔的浮点数的序列,表示当前帧要混合多少时间上相邻的帧。浮点数的数量必须是奇数,中央的浮点数表示当前帧的权重,左边的浮点数表示之前的帧的权重,右边的浮点数表示之后的帧的权重。如果要禁用时序混合,此处留空,或者只填一个 1 。

save_every_loop:如果勾选该选项,重复渲染时,每次渲染的结果会分开保存。如果不勾选该选项,仅保存最后一次渲染的结果。

各种 schedule:可以在此输入任意 python 表达式,表达式的返回值用于更新参数。可以使用 math 模块中的所有函数,还有 loop_i 和 image_i 变量。loop_i 表示当前是第几次重复渲染,image_i 表示当前渲染的是第几张图片。需要特别注意的是,当使用 temporal_superimpose_schedule 时,应当保证每次返回的列表长度相同。

batch_size, batch_count:这个也会影响生成,每次生成一批图片后,会先将这批图片全部混合成一张图片,再与当前帧进行混合,这样,每张新生成的图片都会对最终效果有影响,而且每张的影响程度都变小了,这有时可以提升稳定性。如果增大 batch_size 和 batch_count 后出现重影,应当略微调高 denoising 。

在 img2img 模式中,WebUI中的所有参数都会起效,包括:Prompt, Negative prompt, Sampling method, Sampling steps, Width, Height, CFG Scale, Denoising strength, seed, extra, Variation seed, Variation strength 等等。

在 inpainting 模式中,Mask blur, Mask mode, Mask content, Inpaint area, Only masked padding 等参数也都会正常工作。

简易调参tips

(这里仅是作者目前的一些经验之谈,并不是必要遵守的原则)

所有的参数设置都与 DreamBooth 的训练质量,以及输入视频的质量高度相关,所以这里没法给出一个通用的标准,只能给出一些大致的思路。

不同的参数配置往往会引起奇妙的化学反应,请尽情测试不同的搭配。

DreamBooth 模型的稳定性非常重要,请务必对训练集进行最严格的挑选,只使用一致性极高的图片(保证角色的服饰、装饰位置、色调等细节完全相同,只有视角和动作不同)。 除了 DreamBooth ,第二重要的是 prompt ,调整好合适的 prompt 比调整其他参数有用得多。比如,如果发现角色偶尔会突然从正对观众变成背对观众,应该先试试在 negative prompt 里加上 from behind, facing away 之类的词,而不是急着调整 superimpose_alpha 。

如果有重影,可以尝试

  1. 调小 superimpose_alpha ,并相应调高 loop_n

  2. 调低 batch_size 和 batch_count

  3. 调低 denoising

  4. 调高 denoising (是的你没看错,不过与调低 denoising 相比,这对模型有一定要求)

  5. 勾选 fix_seed 和 fix_subseed

  6. 在 temporal_superimpose_alpha_list 中提高当前帧的权重,比如将 0.1,0.8,0.1 改为 0.01,0.98,0.01 甚至改为 0.0,1.0,0.0

superimpose_alpha

superimpose_alpha 控制每次渲染后视频的改变量。在绝大多数情况下,当调低 superimpose_alpha 时,应相应调高 loop_n 。

如果 superimpose_alpha 较低而 loop_n 也较低,可能出现重影。可以打开 save_every_loop ,观察每次重复渲染后的效果,以此确定到底 loop_n 设定为多少比较好。

如果特别在乎重影,以 loop_n 为 5 举例,可以设定 superimpose_alpha_schedule 为 0.3 if loop_i<4 else 1 ,这样会在最后一次重复渲染时把 superimpose_alpha 替换为 1,表示完全使用新的帧,不过这往往需要搭配较低的 denoising 使用,或是设定 denoising_schedule ,实现在最后一次渲染时相应降低 denoising 。

较低的 superimpose_alpha 可以增加渲染后视频与原视频的相似度(尤其是边缘的契合度)。较低的 denoising 也有类似的效果。

增大 batch_size 和 batch_count 有时可以降低错误率,不过需要相应提高 denoising 。

视频闪烁严重

可以试试修改 temporal_superimpose_alpha_list ,降低当前帧的权重,比如把 0.01,0.98,0.01 改成 0.1,0.8,0.1 。

一般来说混合前一帧和后一帧就够了(也就是用 3 个浮点数),但是也可以混合更多帧,比如 0.02,0.03,0.8,0.03,0.02 不过这样可能会导致重影,需要慎重测试。

如果降低当前帧的权重后发现伪影,可以改成单边混合,比如 0.1,0.9,0.0 表示只混合之前的一帧,而 0.02,0.05,0.93,0.0,0.0 表示混合之前的两帧。

改 temporal_superimpose_alpha_list 时应当非常小心,不要一次改太多。

并不强制要求temporal_superimpose_alpha_list 中所有权重相加等于 1 ,脚本会自动归一化。

有时,调低 superimpose_alpha 也能缓解闪烁的问题。

关于 schedule

如果某种现象(比如重影)只在视频的其中一段出现,可以使用 schedule 对该部分针对性的使用不同的参数。

schedule 也很适合用于收尾工作,可以设定在最后几次 loop 时使用特殊的参数,以此实现一些特殊效果。

当然,也可以使用 schedule 来渐近的改变参数,比如 设定 denoising_schedule 为 max(0.1, 0.4-0.02*loop_i) 将使得每次 loop 时使用的 denoising 逐渐降低,最低为0.1。

denoising

denoising 的调整思路和原本 img2img 下差不多,不过,在这里可以通过提高 loop_n 的方式来强行使用较低的 denoising ,有时会有奇效。