Skip to content

Latest commit

 

History

History
294 lines (243 loc) · 10.9 KB

README_zh-CN.md

File metadata and controls

294 lines (243 loc) · 10.9 KB

E2FGVI (CVPR 2022)-简体中文

PWC PWC

Python 3.7 pytorch 1.6.0

English | 简体中文

本项目包含了以下论文的官方实现:

Towards An End-to-End Framework for Flow-Guided Video Inpainting
Zhen Li#, Cheng-Ze Lu#, Jianhua Qin, Chun-Le Guo*, Ming-Ming Cheng
IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2022

[论文] [Demo Video (Youtube)] [演示视频 (B站)] [项目主页 (待定)] [海报 (待定)]

Colab实例:Open In Colab

⭐ 最新进展

  • 2022.05.15: 可适配任意分辨率的E2FGVI-HQ已发布.该模型仅需要在 432x240 的分辨率下进行训练, 即可适配更高分辨率下的推理任务.并且, 该模型比原先模型能够取得更好的PSNR/SSIM指标. :link: 下载链接: [Google Drive] [Baidu Disk] 🎥 演示视频: [Youtube] [B站]

  • 2022.04.06: 代码公开发布.

演示视频

teaser

更多示例 (点击查看详情):

Coco
Tennis
Space
Motocross

概述

overall_structure

🚀 特性:

  • 更好的性能: 本文提出的E2FGVI模型相较于现有工作在所有量化指标上取得了显著提升.
  • 更快的速度: 本文的方法在一张Titan XP GPU上, 处理分辨率为 432 × 240 的视频大约需要0.12秒/帧, 大约是前有的基于光流的方法的15倍.除此以外, 本文的方法相较于之前最优的方法具有最低的FLOPs计算量.

正在进行中的工作

  • 更新项目主页
  • Hugging Face 演示
  • 更高效的推理过程

安装

  1. 克隆仓库

    git clone https://github.com/MCG-NKU/E2FGVI.git
  2. 创建Conda环境并且安装依赖

    conda env create -f environment.yml
    conda activate e2fgvi
    • Python >= 3.7
    • PyTorch >= 1.5
    • CUDA >= 9.2
    • mmcv-full (following the pipeline to install)

    若无法使用environment.yml安装依赖, 请参照此处.

快速入门

准备预训练模型

首先请下载预训练模型

模型 🔗 下载链接 支持任意分辨率 ? PSNR / SSIM / VFID (DAVIS)
E2FGVI [谷歌网盘] [百度网盘] 33.01 / 0.9721 / 0.116
E2FGVI-HQ [谷歌网盘] [百度网盘] 33.06 / 0.9722 / 0.117

然后, 解压文件并且将模型放入release_model文件夹下.

文件夹目录结构如下:

release_model
   |- E2FGVI-CVPR22.pth
   |- E2FGVI-HQ-CVPR22.pth
   |- i3d_rgb_imagenet.pt (for evaluating VFID metric)
   |- README.md

测试

我们提供了两个测试示例

使用如下命令运行:

# 第一个示例 (使用视频帧)
python test.py --model e2fgvi (or e2fgvi_hq) --video examples/tennis --mask examples/tennis_mask  --ckpt release_model/E2FGVI-CVPR22.pth (or release_model/E2FGVI-HQ-CVPR22.pth)
# 第二个示例 (使用mp4格式的视频)
python test.py --model e2fgvi (or e2fgvi_hq) --video examples/schoolgirls.mp4 --mask examples/schoolgirls_mask  --ckpt release_model/E2FGVI-CVPR22.pth (or release_model/E2FGVI-HQ-CVPR22.pth)

视频补全的结果会被保存在results路径下.若果想要测试更多样例, 请准备mp4视频(或视频帧)以及每一帧的mask.

注意: E2FGVI会将输入视频放缩到固定的分辨率(432x240), 然而E2FGVI-HQ不会改变输入视频的分辨率.如果需要自定义输出的分辨率, 请设置--set_size参数以及设置输出分辨率的--width--height值.

例:

# 使用该命令输入720p视频
python test.py --model e2fgvi_hq --video <video_path> --mask <mask_path>  --ckpt release_model/E2FGVI-HQ-CVPR22.pth --set_size --width 1280 --height 720

准备训练与验证集

数据集 YouTube-VOS DAVIS
详情 训练: 3,471, 验证: 508 验证: 50 (共90)
Images [官方链接] (下载全部训练测试集) [官方链接] (2017, 480p, TrainVal)
Masks [谷歌网盘] [百度网盘] (复现论文结果)

训练与测试集分割文件位于 datasets/<dataset_name>.

对于每一个数据集, 需要将 JPEGImages 放入 datasets/<dataset_name>目录下.

然后, 运行 sh datasets/zip_dir.sh (注意: 请编辑对应的目录路径) 来压缩位于datasets/<dataset_name>/JPEGImages的每一个视频.

将下载的mask解压缩至 datasets.

datasets目录结构如下: (注意: 请仔细核验)

datasets
   |- davis
      |- JPEGImages
         |- <video_name>.zip
         |- <video_name>.zip
      |- test_masks
         |- <video_name>
            |- 00000.png
            |- 00001.png   
      |- train.json
      |- test.json
   |- youtube-vos
      |- JPEGImages
         |- <video_id>.zip
         |- <video_id>.zip
      |- test_masks
         |- <video_id>
            |- 00000.png
            |- 00001.png
      |- train.json
      |- test.json   
   |- zip_file.sh

Evaluation

运行如下的一个命令进行验证:

 # 验证E2FGVI模型
 python evaluate.py --model e2fgvi --dataset <dataset_name> --data_root datasets/ --ckpt release_model/E2FGVI-CVPR22.pth
 # 验证E2FGVI-HQ模型
 python evaluate.py --model e2fgvi_hq --dataset <dataset_name> --data_root datasets/ --ckpt release_model/E2FGVI-HQ-CVPR22.pth

若你验证 E2FGVI 模型, 那么将会得到论文中的验证结果. E2FGVI-HQ 的验证结果请参考 [此处].

验证结果将被保存在 results/<model_name>_<dataset_name> 目录下.

若需验证temporal warping error, 请添加 --save_results 参数.

训练

Our training configures are provided in train_e2fgvi.json (for E2FGVI) and train_e2fgvi_hq.json (for E2FGVI-HQ).

本文的训练配置如 train_e2fgvi.json (对于 E2FGVI) 与 train_e2fgvi_hq.json (对于 E2FGVI-HQ) 所示.

运行如下的一条命令进行训练:

 # 训练 E2FGVI
 python train.py -c configs/train_e2fgvi.json
 # 训练 E2FGVI-HQ
 python train.py -c configs/train_e2fgvi_hq.json

如果需要恢复训练, 请运行相同的指令.

训练损失能够使用如下命令可视化:

tensorboard --logdir release_model                                                   

请使用上述步骤来验证训练的模型.

结果

定量结果

quantitative_results

引用

若我们的仓库对你的研究内容有帮助, 请参考如下 bibtex 引用本文:

@inproceedings{liCvpr22vInpainting,
   title={Towards An End-to-End Framework for Flow-Guided Video Inpainting},
   author={Li, Zhen and Lu, Cheng-Ze and Qin, Jianhua and Guo, Chun-Le and Cheng, Ming-Ming},
   booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
   year={2022}
}

联系方式

若有任何疑问, 请通过zhenli1031ATgmail.comczlu919AToutlook.com联系.

致谢

该仓库由 Zhen LiCheng-Ze Lu 维护.

代码基于 STTN, FuseFormer, Focal-Transformer, 与 MMEditing.