TemporalKit
一个全面的解决方案,通过automatic1111扩展为Stable Diffusion渲染添加时间稳定性
在运行之前,你必须将FFMPEG安装到系统路径中
你可以在这里找到单批次运行的演示:
https://twitter.com/CiaraRowles1/status/1645923461343363072
批量演示在这里:
https://mobile.twitter.com/CiaraRowles1/status/1646458056803250178
Ebsynth教程:
https://twitter.com/CiaraRowles1/status/1648462374125576192
注意:如果使用超过20帧,EBSYNTH将无法注册关键帧。
Ebsynth分割帧教程:
https://www.youtube.com/watch?v=z3YNHiuvxyg&ab_channel=CiaraRowles
你可以获得的示例结果:
扩展中的值如下
变量 | 描述 |
---|---|
FPS | 视频提取和生成的帧率。 |
batch_Size | 这是每个关键帧之间的帧数,例如,如果帧率为30,批次大小为10,则每秒会生成3个关键帧,其余帧会被估算。 |
per side | 这是每个板块帧数的平方根,例如,per side值为2会生成4个板块,3会生成9个板块,4会生成16个板块。 |
Resolution | 每个板块的大小,强烈建议将其设置为per side变量的倍数。 |
batch settings | 仅当你想生成一个板块文件夹时才打开此下拉菜单。 |
Max Frames | 生成板块文件夹时,这会获取上述帧率下你想要的帧数,然后将它们分成(per side * per side * batch size)组的板块。 |
Border Frames | 每个生成的批次板块将包含下一个板块的这么多帧,并在它们之间进行混合。 |
Batch Folder | 如果你正在生成一批板块,只需指定一个空文件夹,点击运行后,它会填充相关的文件夹和文件。你只需要在原始sd的img2img批处理中,将新创建的输入文件夹作为输入,将新创建的输出文件夹作为输出,生成后,回到temporal-kit的Batch-Warp标签页,输入整个文件夹目录并点击读取,它就会设置好一切。 |
Output Resolution | 输出视频任何一边的最大分辨率。 |
常见问题:
问: 我的视频有涂抹痕迹。
答: 使用更高的帧率和/或更低的批次数,关键帧之间的距离越近,产生的伪影就越少。
问: 安装此扩展后无法开启Stable Diffusion。
ModuleNotFoundError: No module named 'tqdm.auto'
答: 因为此插件当前使用的依赖项使用了旧版本的tqdm,所以会出现错误。短期解决方案是手动安装新版本(4.66.1)的tqdm。
pip install tqdm==4.66.1
步骤教程
参考此网页的教学和我自己(cocomine)的经验编写
步骤1:在WebUI上安装扩展
打开扩展
标签 > 从URL安装
> 在扩展的git仓库URL
中粘贴以下链接 > 点击安装
https://github.com/CiaraStrawberry/TemporalKit
步骤2:安装FFMPEG
Ubuntu
sudo apt install ffmpeg
Arch Linux
sudo pacman -S ffmpeg
Windows
从 https://ffmpeg.org/download.html 下载并安装 确保将ffmpeg添加到你的PATH中。 了解更多:https://www.wikihow.com/Install-FFmpeg-on-Windows
步骤4:准备你的视频
在你想要的位置创建一个文件夹。这个文件夹将用于存储需要处理的文件。 准备好你需要使用的视频(在后续教学中称为原始视频),并了解原始视频的格式,如分辨率和帧率。
步骤5:从原始视频中提取帧
- 在顶部打开
Temporal-Kit
标签。 - 打开
Pre-Process
标签。 - 将原始视频拖放到
Input Video
中。 - 将
fps
设置为原始视频的帧率。 - 将
frames per keyframe
设置为每个关键帧之间的帧数。例如,如果原始视频是30fps,你设置为10,那么每秒将生成3个关键帧,其余的将被估算。 - 将
Side
设置为每个板块帧数的平方根。例如,如果你设置为2,将生成4个板块(2x2),3则生成9个板块(3x3),4则生成16个板块(4x4)。 - 将
Height Resolution
设置为每个板块的大小。强烈建议你将其设置为side变量的倍数。
例如,如果你想生成4个板块并将side设置为2,每个板块高512,那么你需要将高度分辨率设置为1024(512x2)。 - 将
Target Folder
设置为你在步骤4中创建的文件夹。 - 打开
Batch Settings
标签。 - 勾选
Batch Run
。 - 打开
EBsynth
标签。 - 勾选
Split Video
完成上述步骤后,你应该在指定的文件夹中看到类似这样的结构(取决于你的视频长度)
在按数字命名的文件夹中,你会看到这样的结构,其中包含分割的视频片段。
如果在下一步的img2img过程中遇到内存不足的问题,请减小
side
或Height Resolution
参数。
第6步:对关键帧进行图像到图像处理
让我们先处理名为0
的文件夹。
转到图像到图像页面。切换到批处理选项卡。设置以下参数:
输入目录:目标目录的名称加上\input
。例如YOUR_FOLDER_PATH_IN_SETP_4\0\input
输出目录:类似地,但加上\output
。例如YOUR_FOLDER_PATH_IN_SETP_4\0\output
输入一个提示词和一个负面提示词,类似于文本到图像。
采样方法: DPM++2M Karras
采样步骤: 20
CFG比例: 7
去噪强度: 0.5(根据需要调整)
以上参数可根据需要进行更改。
ControlNet(可选,如果可用会产生更好的结果)
在ControlNet(单元0)部分,设置:
- 启用:是
- 像素完美:是
- 控制类型:Tile
- 预处理器:tile_resample
- 模型:control_xxxx_tile
点击生成。完成后,您将在批处理输出文件夹中找到图像。
确保以全尺寸打开图像并检查全尺寸的细节。确保它们看起来清晰并具有一致的风格。
如果您想获得高分辨率图像,请将输出图像重新放入图像到图像处理中,调整大小为
1.5-2.0
倍,去噪强度为0.3-0.4
,然后生成。
第7步:准备EbSynth数据
转到Temporal-Kit
页面并切换到Ebsynth-Process
选项卡。
**输入文件夹:**输入您在预处理页面中放入的相同目标文件夹路径。例如YOUR_FOLDER_PATH_IN_SETP_4\0
点击读取上次设置。如果您的输入文件夹正确,视频和设置将被填充。
点击准备ebsynth。完成后,您应该看到keys文件夹中填充了您的风格化关键帧,frames文件夹中填充了您的图像。
请注意,此程序不生成
.ebs
文件。当您的图像导入到程序中时,它们将自动填充。
第8步:使用EbSynth处理
现在打开EbSynth程序。
打开文件资源管理器并导航到第4步中创建的文件夹。您应该看到如下所示的文件夹。我们需要keys文件夹和frames文件夹用于EbSynth。
从文件资源管理器中拖动keys文件夹并将其放入EbSynth中的Keyframes字段。
从文件资源管理器中拖动frames文件夹并将其放入EbSynth中的frames字段。
点击Run All并等待完成。
完成后,您应该看到在目标项目文件夹中生成了一系列out_#####
目录。
请从官方网站下载程序。
https://ebsynth.com/
第9步:生成最终视频
现在回到AUTOMATIC1111(webUI)。您应该仍在Temporal Kit页面和Ebsynth-Process选项卡上。
点击recombine ebsynth,您就完成了!
看看视频多么流畅。通过一些调整,您可能会使它变得更好!
第10步:继续处理其他分割片段
重复第6步到第9步。处理其他文件夹(1,2,3,4,...)
第11步:合并分割视频
使用视频拼接程序合并分段视频
待办事项
- 为板材输出设置基于扩散的上采样
- 使批处理处理功能与图像到图像按钮一起工作
- 添加检查以查看是否添加了输出文件夹
- 修复运行后出现的奇怪关闭错误
- 连接到API
- 支持游戏引擎导出\导入的流图
感谢RAFT提供光流系统。