AI视频风格转换:Stable Diffusion+EBSynth
这次转换的视频还比较稳定,先给大家看下效果。
书接上文,在上一篇文章中,我们首先使用 TemporalKit 提取了视频的关键帧图片,然后使用 Stable Diffusion 重绘了这些图片,然后又使用 TemporalKit 补全了重绘后的关键帧图片之间的序列帧,并拼合出了视频。
本文我们将使用一个新的工具 EBSynth 来补全重绘后的关键帧图片之间的序列帧,其它步骤还是继续使用原来的方法,不过相关参数上要做些调整,请看我慢慢道来。
之所以要使用 EBSynth 这个工具,是因为很多人介绍的都是这个方法,而不是我上一篇文章提到的方法,所以我也来体验下,做一个对比。
插件的安装这里就不提了,请看前一篇文章。我们从提取关键帧开始。
提取关键帧
为什么要提取关键帧?提取关键帧就是把视频中动作变化比较大的画面转成图片,下一步就是对这些图片进行重绘。如果不提取关键帧,而是把视频的每一帧都重绘,一是工作量大,二是重绘的每张图片可能都有点不一样,画面可能闪烁比较严重。
在SD WebUI的主页签中找到 Temporal-Kit,点击打开。然后接着点击“Pre-Processing”,在视频区域这里上传待处理的视频,这是我从抖音上截取的一段(文章最后会提供这个视频的下载地址)。不要马上点击“运行”,还有一些设置,请继续看下文。
在视频下方可以看到这些设置,这些都是针对提取图片的设置:
Sides:生成的1张图片的边包含几张视频帧。如果是2就代表4个视频帧,也就是 2*2;如果是3就代表9个视频帧,也就是 3*3;最小设置为1,也就是1张图包含1个视频帧。这个要结合后边的 Height Resolution一起设置。
Height Resolution:生成图片的高度的像素值,建议是:视频的高度 * Sides ,比如我这个视频是 1080*720,单个视频帧的高度就是720,但是前边Sides设置的2,所以就是720*2=1440。但是这个公式不是绝对的,你也可以写个720,或者写个2048。这个值需要考虑显卡的性能,如果显卡不太行,不要设置的太高。
frames per keyframe:多少视频帧抽取一个关键帧,关键帧越密动作衔接越流畅,但是可能重绘的变化越多,导致画面闪烁。
EBSynth Model:因为我们后边要使用EBSynth来处理,所以这里勾选上它,生成的文件名会有一定的格式。
fps:视频每秒包含几帧,在电脑上查看视频详情一般可以获取到。
Target Folder:关键帧图片的输出位置,实际会输出到这个目录下创建的一个input文件夹,后续各种处理的中间文件都在这个文件夹下,相当于一个项目目录,所以建议为每个视频的不同处理创建不同的文件夹。注意如果是云端,这里需要是服务器上的目录。
Batch Settings:因为我们这里需要处理整个视频,所以需要把这个Batch Run勾选上。
EBSynth Settings:因为EBSynth可以处理的视频时间比较短,所以要把视频分割成几段来处理。

参数设置完毕之后,点击页面右侧的“运行”。

关键帧图片都被提取后,图像这个区域应该显示提取的首张图片,但是我这里没显示,不知道是不是通信原因,大家注意观察处理进度。
- 如果这里显示了图片,直接点击“图生图”去重绘。
- 如果这里没有显示图片,可以去文件目录中看看,找到第一张下载下来,然后在“图生图”中手动上传。

转换风格
现在进入“图生图”界面。

上次的水彩画出图比较糊,这次我们直接用一个线条简单点的模型:toonyou,这是一个漫画风模型,也不用搭配Lora模型了。可以在文章最后获取下载地址。
这里的贴出来我的提示词,方便复制。
提示词:a man, epic scene, a poster, flat color,
反向提示词:easy_negative,beard

然后是一些参数设置,大家根据实际情况来吧,效果不好就调整下。
注意两点:
- 图片的宽高:一般按照实际设置就好,如果数字太大,建议先调小一点,然后再用超分高清化放大。
- 重绘强度:这里开到了最大。上一篇文章说不要太大,因为重复幅度大,图片相互之间变化可能就大,拼合出来的视频就可能比较闪烁。不过实测发现重绘幅度对 toonyou 这个模型的影响好像比较小,大家可以根据自己的实际情况试试,不必完全一样。
- 生成种子:先设置为-1,直到出了满意的图。

下面继续使用ControlNet控图,避免重绘的变化太大,尽量稳定画面。我这里选择的还是Tile模型,大家也可以试下SoftEdge、Canny、Lineart等绘线的模型。

然后就是抽卡了,不断的生成图片,直到你满意。
注意记录下满意图片的生成种子,马上就要用到批量生成中。

将图生图切换到“批量处理”,填写两个目录:
- 输入目录:提取关键帧步骤中输出图片的目录。
- 输出目录:重绘图片的保存目录,固定值output,填上就行了。

把满意图片的生成种子填写到这里,不过一个种子很难稳定输出图片中的各种元素,大家可以自己体会下。

最后就是点击“生成”按钮,等待批处理完成。

在图片输出区域的下方看到这句话,基本就处理完成了。WebUI的进度有时候更新不及时,大家注意看控制台或者shell的输出。

EBSynth处理
预处理
在之前提取视频关键帧时,我们将原视频分割为了几个子视频。预处理就是将每个子视频中的原视频帧和关键帧单独提取出来,并放到相关文件夹中。
在SD WebUI的主页签中找到 Temporal-Kit,然后接着点击“Ebysynth-Process”。这里的操作顺序要注意下,按照图上标的就行。
在“Input Folder”中输入项目目录,然后点击“read_last_settings”,视频和大部分参数都能自动加载出来。
在“output resolution”中输入视频的分辨率,这个不会自动加载。
最后点击按钮“prepare ebsynth”进行处理。

子视频的文件夹就是这个几个:

打开一个子视频文件夹,可以看到这些内容,其中 frames 和 keys 目录中的图片就是本次处理后写入的,下一步我们将使用EBSynth继续处理这些图片。

如果你的SD WebUI运行在云端,需要先下载到本地,因为EBSynth这个工具需要在本地运行。可以使用下边的命令先打包成zip文件(注意替换成自己的项目目录):
zip -q -r dehua2.zip /root/autodl-tmp/webui_outputs/temporal-kit/dehua2
然后再通过平台支持的方式进行下载。
生成序列帧
这一步就需要EBSynth这个软件出马了,官方提供了WIndows和Mac版本,不过我在Mac上运行的时候会直接退出,没有研究什么原因,直接换到Windows环境就好了。
软件下载地址:https://ebsynth.com/ ,点击 Download 按钮,弹出的窗口中点击最下方的“No thanks, just start the download”,网站会自动识别操作系统,下载对应版本的程序文件。

启动EBSynth后,我们只需要以下操作:
把子视频的 frames 目录拖到 Video 输入框;
把子视频的 keys 目录拖到 keyframes 输入框;
这时要处理的图片任务就会在软件下面的部分自动展示出来。

最后点击软件最下面的 “Run All”,开始这个子视频的处理。

这个处理过程比较长,大家耐心等待。每个子视频都需要这样处理。
所有子视频都处理完毕后,就可以进入合成视频的阶段了。
如果你的SD WebUI运行在云端,需要上传上去。可以先在本地打包成zip文件,然后通过云平台提供的方法上传上去,然后解压覆盖到项目目录,参考下边这个命令:
unzip -o /root/autodl-tmp/root.zip -d /
-o 后边是zip文件的目录,-d 后边是要解压到的目录,因为我这个zip文件中第一级目录是root,所以这里用了斜杠,注意替换你的zip文件路径和要解压到的目录。
合成视频
现在又进入激动人心的视频合成环节了,回到 SD WebUI 中的 Temporal-Kit 页面。
这一步操作很简单,点击按钮“recombine ebsynth”,然后等着视频生成就行了。正常情况下,速度很快,因为视频需要的帧图片都处理好了。
之前使用Batch-Warp时,它还需要先生成一堆帧图片,所以当时比较慢;在本文的方法中这个工作交给了EBSynth处理。

资源下载
本文介绍的相关模型、插件和素材,大家可以按照文中提到的方法自行下载安装,也可以通过使用我准备好的,方法是关注公/众/号:萤火遛AI(yinghuo6ai),回复:视频风格转换,即可获取下载地址。
AI视频风格转换:Stable Diffusion+EBSynth的更多相关文章
- AI 绘画咒语入门 - Stable Diffusion Prompt 语法指南 【成为初级魔导士吧!】
要用好 Stable Diffusion,最最重要的就是掌握 Prompt(提示词).由于提示词对于生成图的影响甚大,所以被称为魔法,用得好惊天动地,用不好魂飞魄散 . 因此本篇整理下提示词的语法(魔 ...
- AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇
目录 界面参数 采样器 文生图(txt2img) 图生图(img2img) 模型下载 界面参数 在使用 Stable Diffusion 开源 AI 绘画之前,需要了解一下绘画的界面和一些参数的意义 ...
- 媒体应用视频超分AI神器!360P视频一键转换HD
作为多媒体应用的开发者,你是否想为媒体播放器快速开发创新AI功能?例如: 在播放低画质视频过程中对其进行逐帧超分 让满屏飘飞的弹幕自动绕过画面的主体人物 HMS Core 6.0.0开放的多媒体管线服 ...
- 基于Docker安装的Stable Diffusion使用CPU进行AI绘画
基于Docker安装的Stable Diffusion使用CPU进行AI绘画 由于博主的电脑是为了敲代码考虑买的,所以专门买的高U低显,i9配核显,用Stable Diffusion进行AI绘画的话倒 ...
- 最新版本 Stable Diffusion 开源AI绘画工具之部署篇
目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇
目录 汉化预览 下载汉化插件一 下载汉化插件二 下载汉化插件三 开启汉化 汉化预览 在上一篇文章中,我们安装好了 Stable Diffusion 开源 AI 绘画工具 但是整个页面都是英文版的,对于 ...
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week4 特殊应用:人力脸识别和神经风格转换
一.什么是人脸识别 老实说这一节中的人脸识别技术的演示的确很牛bi,但是演技好尴尬,233333 啥是人脸识别就不用介绍了,下面笔记会介绍如何实现人脸识别. 二.One-shot(一次)学习 假设我们 ...
- Stable Diffusion魔法入门
写在前面 本文为资料整合,没有原创内容,方便自己查找和学习, 花费了一晚上把sd安装好,又花了大半天了解sd周边的知识,终于体会到为啥这些生成式AI被称为魔法了,魔法使用前要吟唱类比到AI上不就是那些 ...
- Stable Diffusion 关键词tag语法教程
提示词 Prompt Prompt 是输入到文生图模型的文字,不同的 Prompt 对于生成的图像质量有较大的影响 支持的语言Stable Diffusion, NovelAI等模型支持的输入语言为英 ...
随机推荐
- C++ Primer 5th 阅读笔记:前言
机器效率和编程效率 Its focus, and that of its programming community, has widened from looking mostly at machi ...
- Java 20 新功能介绍
➜ bin pwd /Users/darcy/develop/jdk-20.0.1.jdk/Contents/Home/bin ➜ bin ./java -version openjdk versio ...
- 2020-10-07:redis存在线程安全的问题吗?为什么?
福哥答案2020-10-07:#福大大架构师每日一题# Redis6.0的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行.所以我们不需要去考虑控制 key.lua.事务, ...
- 2021-07-09:股票问题6。给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付
2021-07-09:股票问题6.给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用.你可以无限次地完成交易,但是你每笔交易都需要付 ...
- Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.
问题描述 新建表或者修改表varchar字段长度的时候,出现这个错误 Row size too large. The maximum row size for the used table type, ...
- computed与watch监听同一对象的场景
今日项目需要一个详细的权限配置,如:路由权限,页面tabs权限,操作权限:而路由权限大都知道就不赘述,而操作权限这就涉及页面中每个按钮了,这里使用VUEX进行管理 1.配置store store 中 ...
- 用BP软件 批量注册用户
第五步:查看管理员后台----用户界面, 有没有批量添加进用户
- R 语言中 X11 相关的一些问题
参考 Anaconda 官方文档<Using R language with Anaconda>安装 R-4.0.2: conda create -n r-4.0.2 r-essentia ...
- Android Studio 引入kotlin 协程
首先保证创建了kotlin项目,然后,两个步骤: 1. 加入dependency,在 build.gradle(:app)中,加入 implementation 'org.jetbrains.kotl ...
- k8s~RKE的方式升级Rancher集群
kubectl安装 在主机或者远程访问的笔记本上安装kubectl命令行工具 rancher-cluster.yml(RKE配置文件) 通过RKE创建kubernetes集群,需要预先设置ranche ...
