欢迎光临散文网 会员登陆 & 注册

Ebsynh及Ebsynth_utility深入理解(上)

2023-07-17 16:09 作者:绝望的肥肉花  | 我要投稿


工具要用好,首先你要理解工具是什么东西,怎么工作的。

我很反对连说明书都不看就乱搞的人,说明书看不懂是能力不足,用不好是技术有限,理解有误也情有可原,而完全不看说明书就是个笑话。我作为一个工人叔叔,觉得这是不可原谅的低级错误。

废话不多数,先说一下我对Ebsynh的理解,它是把视频拆解成图片,计算图片和图片之间的差异,挑出动态变化最大的作为关键帧,然后修改关键帧后,再补帧回去合成视频。

而Ebsynth_utility中也清晰列举了步骤。

接下来我们看看这些步骤中的细节和可优化空间

1. 将原始视频转换为帧序列。

生成一个蒙版图像。

为什么要生成蒙版,把人物或者物品分割出来?

 

因为画面要稳定,如果你用过SD的MOV2MOV插件你就会发现,每一帧都重新画,在controlnet约束还不够智能的情况下,合成的画面闪烁严重。

 

在插件设置中,可以见到蒙版方式有三种:

透明背景,clip分割,透明背景和clip分割

 

1>   透明背景默认情况下抠出人物,阈值设定是对抠像的精准度设置,如果只抠人,我建议用透明背景。

抠图三种模式

--ckpt[CCKT](可选):使用其他检查点文件。默认值使用复合数据集进行训练,如果不可用,将自动下载。请参考InSPyReNet的Model Zoo,了解可用的预先培训的检查点。

(SD中未开放?)

 

--fast(可选):快速模式。如果指定,它将使用低分辨率输入和用LR比例训练的模型。可能会降低性能,但会减少推理时间和gpu内存使用量。

(使用快速模式(它会更快,但蒙版质量会较低)。)

--jit(可选):Torchscript模式。如果指定,它将使用pytorch内置的torchscript JIT编译器跟踪模型。可能会导致初始化延迟,但会减少推理时间和gpu内存使用。

(使用实时产出模式)

2>Clip物品分割,有时候我们要抠的不是人,而是物品,那就用这个,我做过clip抠人和透明背景的对比,clip 抠人0.5的效果是最好的,但是依旧赶不上透明背景,设置clip蒙版阈值0和1是两个极端, 全部抠和完全不抠,所以我建议设置0.5,当然具体大家可以做试试看。

3>透明背景和clip分割 就是二者结合了,我很少用这个,大家可以实验一下。

2

Ebsynth 提取关键帧

 

为什么要提取关键帧?

还是因为闪烁问题,实际上我们大部分时候都不需要每一帧重绘,而画面和画面之间也有很多相似和重复,因此提取关键帧,后面再补一些调整,这样看起来更加流程和自然。

而画面差异最大的帧,就是关键帧,一秒钟内大幅度的动作图像就是关键帧。

如果关键帧太多,会有什么问题,SD重绘画面数量增加,闪烁也增加,画面稳定度下降。

但是关键帧太少,会有什么问题?会缺失动作,因为Ebsynth是补帧,如果关键帧太少,补帧没补上,就会漏画面,感觉不自然。举个例子,拍手动作刚抬起,第二画面就双手在一起,这同样不可接受。

因此在这个项目中,我们就可以见到三个可调选项:

 

最小关键帧间隔:如果画面变化多,多久截取一帧关键帧?这个数值越小,动态中的关键帧越多,动作细节丢失越少,但是闪烁可能严重

最大关键帧帧间隔:如果画面长时间保持一致或者静止,多长时间再截取一帧作为关键帧/

 

关键帧间隔差异阈值:差异多少才计算为关键帧,数值越大,关键帧越少

这个值越小,关键帧的间隔就越小,如果设置为0,关键帧的间隔将与[最小关键帧间隔]的值相同。

 

也就是说如果设置为0,那就不计算关键帧之间的差异了,直接按照最小关键帧间隔截取帧

 

设置最后一帧为关键帧,这个选项务必勾选。

 

3

将关键帧进行图生图

 

你想修改关键帧到什么程度,到什么地步?

如果你全程按照提示操作是这样的

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1. 前往 图生图 选项卡

2. 在脚本框里选择 [ebsynth utility]

3. Fill in the "Project directory" field with [E:\STAICVIDEO5]

4. Select in the "Mask Mode(Override img2img Mask mode)" field with [Normal]

5. I recommend to fill in the "Width" field with [512]

6. I recommend to fill in the "Height" field with [1088]

7. 建议将“重绘幅度”设置为小于0.35

(当使用 ControlNet 进行配合时,你可以尝试设置更大的值(甚至1.0都可以)。)

8. 填写图生图其他的设置。不需要设置图像和蒙版。

9. 拖拽任意图片到图生图主窗口。这样做能有效避免错误,但不会影响图生图的结果。

10. 生成

(Images are output to [E:\STAICVIDEO5\img2img_key])

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

细节来了,

 

1>   注意推荐填写的宽高,这里是512和1088,可是我原视频只有480和1014啊,我需要按照推荐的填写吗?

其实是不需要的,你完全可以填写原视频的宽高,作为生成的成品关键帧数,后面那一步调整分辨率的动作完全可以不做,直接建立个img2img_upscale_key文件夹把生存关键帧图片放进去就可以了。

但是如果分辨率过小,SD生图的细节可能丢失,这一点要注意。

 

2>   还有,如果你用了controlnet,那么请在ebsynth unility插件里面把权重设为1,太高了,容易出鬼图,太低了控制会很差,当然如果你只想做点特效,也想节约时间,机器性能也差,那就将重绘幅度设置为小于0.35吧,这样画面闪烁会很低,但改变也很少。

 

3>   接下这点要格外注意:

 

关于推荐步骤里面的描述:拖拽任意图片到图生图主窗口。这样做能有效避免错误,但不会影响图生图的结果。

 

这一点描述是有问题,你在图生图主窗口的缩放模式,和control net的缩放模式,请务必一致。而且和建议的拖拽任意图片不同,我的建议是必须原视频的任意图片,如果你拿了一个尺寸不一样的其他图片,蒙版会出现漂移,人物对不准蒙版的情况。

如果视频尺寸过大,同样可能出蒙版漂移的问题,如果是这样,建议先修改视频分辨率和尺寸

 

4>   关键帧风格化或者重大转变 ,如果希望转换幅度比较大,那建议不要添加精确的边界或者线稿controlnet,仅仅用depth_zoe和openpost去控制大概。

用shuffle洗牌模型可以让你作品控制力更强,变更更多,上传图片添加你想要的元素,当然也要配合种子和提示词来做调整。如果你的设备还好,所有controlnet都建议使用完美像素模式,如果用了controlnet,那么重回幅度就可以设置很大,如果重绘低于0.75这个数值,画面变化不会很大。

(请注意,仅仅使用到shuffle模型时需要使用上传特定图片,其余controlnet留空,会自动填充图片)

 

有问题欢迎大家指正说明

Ebsynh及Ebsynth_utility深入理解(上)的评论 (共 条)

分享到微博请遵守国家法律