CoDeF:用于时间一致性视频处理的内容变形场
Hao Ouyang*、Qiuyu Wang*、Yuxi Xiao*、Qingyan Bai、Juntao Zhang、Kecheng Zheng、Xiaowei Zhou、 Qifeng Chen†、Yujun Shen† (*同等贡献,†通讯作者)
CVPR 2024 亮点论文
项目主页 | 论文 | 高分辨率转换演示 | Colab
环境要求
代码库在以下环境中测试通过:
- Ubuntu 20.04
- Python 3.10
- PyTorch 2.0.0
- PyTorch Lightning 2.0.2
- 1块NVIDIA GPU (RTX A6000),CUDA版本11.7。(其他GPU也适用,10GB显存足以运行我们的代码。)
要使用视频可视化工具,请通过以下命令安装ffmpeg
:
sudo apt-get install ffmpeg
对于其他Python库,请使用以下命令安装:
pip install -r requirements.txt
我们的代码还依赖于tiny-cuda-nn。 有关PyTorch扩展的安装说明,请参阅此仓库。
数据
提供的数据
我们在这里提供了一些视频供快速测试。请下载并解压数据,将它们放在根目录中。更多视频可以从这里下载。
自定义数据
我们使用SAM-Track对视频序列进行分割。获得掩码文件后,将它们放在all_sequences/{YOUR_SEQUENCE_NAME}/{YOUR_SEQUENCE_NAME}_masks
文件夹中。然后执行以下命令:
cd data_preprocessing
python preproc_mask.py
我们使用RAFT提取视频序列的光流。首先,请按照这里的说明下载他们的预训练模型。下载后,将模型放在data_preprocessing/RAFT/models
文件夹中。之后,您可以执行以下命令:
cd data_preprocessing/RAFT
./run_raft.sh
请记得相应地更新data_preprocessing/preproc_mask.py
和data_preprocessing/RAFT/run_raft.sh
中的序列名称和根目录。
获得文件后,请按以下方式组织您的数据:
CoDeF
│
└─── all_sequences
│
└─── NAME1
└─ NAME1
└─ NAME1_masks_0 (可选)
└─ NAME1_masks_1 (可选)
└─ NAME1_flow (可选)
└─ NAME1_flow_confidence (可选)
│
└─── NAME2
└─ NAME2
└─ NAME2_masks_0 (可选)
└─ NAME2_masks_1 (可选)
└─ NAME2_flow (可选)
└─ NAME2_flow_confidence (可选)
│
└─── ...
预训练检查点
您可以通过以下链接下载在提供的视频上预训练的检查点:
序列名称 | 配置 | 下载 | OpenXLab |
---|---|---|---|
beauty_0 | configs/beauty_0/base.yaml | Google 云端硬盘链接 | |
beauty_1 | configs/beauty_1/base.yaml | Google 云端硬盘链接 | |
white_smoke | configs/white_smoke/base.yaml | Google 云端硬盘链接 | |
lemon_hit | configs/lemon_hit/base.yaml | Google 云端硬盘链接 | |
scene_0 | configs/scene_0/base.yaml | Google 云端硬盘链接 |
并按如下方式组织文件
CoDeF
│
└─── ckpts/all_sequences
│
└─── 名称1
│
└─── 实验名称 (base)
│
└─── 名称1.ckpt
│
└─── 名称2
│
└─── 实验名称 (base)
│
└─── 名称2.ckpt
|
└─── ...
训练新模型
./scripts/train_multi.sh
其中
GPU
: 决定在哪个 GPU 上训练;NAME
: 视频序列的名称;EXP_NAME
: 实验名称;ROOT_DIRECTORY
: 输入视频序列的目录;MODEL_SAVE_PATH
: 保存检查点的路径;LOG_SAVE_PATH
: 保存日志的路径;MASK_DIRECTORY
: 预处理后的掩码目录(可选);FLOW_DIRECTORY
: 预处理后的光流目录(可选);
请查看 configs/
中的配置文件,您可以随时添加自己的模型配置。
测试重建
./scripts/test_multi.sh
运行脚本后,重建的视频可以在 results/all_sequences/{NAME}/{EXP_NAME}
中找到,以及标准图像。
测试视频转换
通过此步骤获得标准图像后,使用您喜欢的文本提示通过 ControlNet 进行转换。
一旦您获得了转换后的标准图像,将其放置在 all_sequences/${NAME}/${EXP_NAME}_control
中(即 scripts/test_canonical.sh
中的 CANONICAL_DIR
)。
然后运行
./scripts/test_canonical.sh
转换后的结果可以在 results/all_sequences/{NAME}/{EXP_NAME}_transformed
中看到。
注意:配置文件中的 canonical_wh
选项应谨慎设置,通常比 img_wh
稍大一些,因为它决定了标准图像的视野。
BibTeX
@article{ouyang2023codef,
title={CoDeF: Content Deformation Fields for Temporally Consistent Video Processing},
author={Hao Ouyang and Qiuyu Wang and Yuxi Xiao and Qingyan Bai and Juntao Zhang and Kecheng Zheng and Xiaowei Zhou and Qifeng Chen and Yujun Shen},
journal={arXiv preprint arXiv:2308.07926},
year={2023}
}