无闪视频风格切换新思路

近段时间,视频风格切换应用的热度逐渐上升,包括已经成熟应用的gen,还有Ebsynth等,但是这些视频的切换都有一个通病就是视频会出现闪烁,导致最终的切换效果不佳。最近,有开源项目CoDeF提供了一种新的思路来解决这种闪烁的问题。

从已经的公布的paper来看,主要的思路如下:

根据论文,CoDeF的具体方法可以概括如下:

1、首先是视频的表示,包含Canonical content field和 Temporal deformation field两部分。Canonical content field使用2D哈希表表示视频中的全部静态内容信息。而 Temporal deformation field使用3D哈希表表示从canonical image到每个帧的变形信息。

2、其次是模型的结构,每个字段都使用多分辨率哈希编码,以便能够捕捉高频细节,并且利用两个小的MLP分别实现canonical field和deformation field。

3、然后就是训练过程,训练目标是重构输入视频。通过引入flow-based consistency loss来正则化deformation field的平滑性。 使用annealed hash encoding策略,从低频到高频逐步训练以获得语义合理的canonical image。

4、最后就是视频的处理,在优化canonical image后得到的图像上应用图像算法。然后利用deformation field将效果传播到整个视频从而实现视频任务

所以通过这四步,CoDeF通过内容场和变形场的表示,实现了图像算法到视频任务的无缝迁移。

e0cf0764b25389243fd9401e5b9f4c31.png

具体效果怎么样呢,我们也来一探究竟:

需要注意的是现在代码好像只能在linux系统下跑,所以用WSL就成了很好的选择,至于如何通过WSL安装ubuntu,可以参照WSL | Ubuntu来进行安装。安装好以后,我们进行如下步骤:

首先我们进入git仓库qiuyu96/CoDeF: Official PyTorch implementation of CoDeF: Content Deformation Fields for Temporally Consistent Video Processing (github.com),将代码clone下来,然后安装python环境,大家如果图省事可以使用anaconda来进行安装。

由于CoDeF需要获取图像的mask,所以使用了另外的工具z-x-yang/Segment-and-Track-Anything: An open-source project dedicated to tracking and segmenting any objects in videos, either automatically or interactively. The primary algorithms utilized include the Segment Anything Model (SAM) for key-frame segmentation and Associating Objects with Transformers (AOT) for efficient tracking and propagation purposes. (github.com),同样我们安装好Segment-and-Track-Anything,根据要求安装好环境。启动python app.py

033c2bce8d4f8b8facead25239d48495.png

然后将视频帧导入到image seq,通过click选择需要分割的对象,

cf784ec80dd8bf9f951b0cecec908dcb.png

然后点击

d5ad3c0b992b9ac580c4d934041cdf20.png

这样我们就得到想要的mask

8674d39d157e87e1a26f65513d3d17bd.png

再将mask文件放到CoDeF目录下的all_sequences中,all_sequences/{YOUR_SEQUENCE_NAME}/{YOUR_SEQUENCE_NAME}_masks

然后还需要将视频流转换成光流,需要用到RAFT,所以需要先下载好模型,我们找到RAFT的仓库,clone下来,然后运行./download_models.sh,就可以下载好模型了,最后将下载好的模型放到CoDeF目录下的data_preprocessing/RAFT/models中。然后运行如下指令

cd data_preprocessing/RAFT

./run_raft.sh

完成上述的步骤后,就可以训练自己的数据了。

我们直接运行./scripts/train_multi.sh,注意需要修改脚本中的数据名称,当然如果你嫌麻烦,也可以修改脚本,添加一个变量来获取参数,从而修改数据名称

0a520814d14aa72d5124e646e172b760.png

接下来就可以进行视频重建测试了./scripts/test_multi.sh,注意你训练的模型的名称还需要修改下,或者修改脚本中模型的名称和脚本中的名称保持一致。

最后在进行视频风格转换,这里需要注意的是,你需要一帧已经转换过风格的图像,这个就需要用到SD搭配ControlNet来实现了,可以翻看我之前的图文来完成,将转换后的图像放到数据文件中的base_control文件夹下,没有这个文件夹的可以自己新建一个,这是我使用的水墨画风格。

bcbe848ac890bdb8a99c41984bdae078.png

最后运行./scripts/test_canonical.sh,同样需要修改脚本中的数据名称以及模型名称。

最终效果确实没有闪烁,但是感觉感觉视频有一点飘的感觉。有兴趣的可以自行尝试下哦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值