⭐ 如果 ProPainter 对你的项目有帮助,请帮助为这个存储库加注星标。谢谢!🤗
📖 如需更多视觉效果,请查看我们的项目页面
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
克隆存储库
git clone https://github.com/sczhou/ProPainter.git
创建 Conda 环境并安装依赖项
conda env create -f environment.yaml
conda activate propainter
将我们的预训练模型从版本 V0.1.0 下载到文件夹。(所有预训练模型也可以在第一次推理期间自动下载。
weights
目录结构将排列为:
weights |- ProPainter.pth |- recurrent_flow_completion.pth |- raft-things.pth |- i3d_rgb_imagenet.pt (for evaluating VFID metric) |- README.md
我们在输入
文件夹中提供了一些示例。运行以下命令进行试用:
# The first example (object removal)
python inference_propainter.py --video inputs/object_removal/bmx-trees --mask inputs/object_removal/bmx-trees_mask
# The second example (watermark removal)
python inference_propainter.py --video inputs/watermark_removal/running_car.mp4 --mask inputs/watermark_removal/mask.png
结果将保存在文件夹中。要测试你自己的视频,请准备输入(或)和。
results
mp4 video
split frames
frame-wise mask(s)
如果要指定要处理的视频分辨率或避免内存不足,可以设置 和 的视频大小:
--width
--height
# process a 576x320 video; set --fp16 to use fp16 (half precision) during inference.
python inference_propainter.py --video inputs/watermark_removal/running_car.mp4 --mask inputs/watermark_removal/mask.png --height 320 --width 576 --fp16
视频修复通常需要大量的 GPU 内存。在这里,我们提供了各种功能来促进内存高效推理,从而有效避免内存不足 (OOM) 错误。你可以使用以下选项进一步减少内存使用量:
--neighbor_length
--ref_stride
--resize_ratio
--width
--height
--fp16
--subvideo_lentgh
Blow 以 fp32/fp16 精度显示不同子视频长度的估计 GPU 内存需求:
分辨率 | 50帧 | 80帧 |
---|---|---|
约1280 x 720 | 28克 / 19克 | OOM / 25G |
约720 x 480 | 11G / 7G | 13G / 8G |
约640 x 480 | 10G / 6G | 12G / 7G |
约320 x 240 | 3G / 2G | 4G / 3G |
数据 | YouTube-VOS | 戴维斯 |
---|---|---|
描述 | 用于培训(3,471)和评估(508) | 用于评估(50/90) |
图像 | [官方链接](下载训练并测试所有帧) | [官方链接](2017年,480p,TrainVal) |
面具 | [谷歌云端硬盘][百度盘](用于复制论文结果;在E2FGVI论文中提供) |
中提供了训练和测试拆分文件。对于每个数据集,应放置到 。将所有视频帧调整为训练大小。将下载的掩码文件解压缩到 。
datasets/<dataset_name>
JPEGImages
datasets/<dataset_name>
432x240
datasets
目录结构将排列为:(注:请仔细检查)
datasets
datasets |- davis |- JPEGImages_432_240 |- <video_name> |- 00000.jpg |- 00001.jpg |- test_masks |- <video_name> |- 00000.png |- 00001.png |- train.json |- test.json |- youtube-vos |- JPEGImages_432_240 |- <video_name> |- 00000.jpg |- 00001.jpg |- test_masks |- <video_name> |- 00000.png |- 00001.png |- train.json |- test.json
我们的培训配置以 train_flowcomp.json
(用于循环流完成网络)和 train_propainter.json
(用于 ProPainter)提供。
运行以下命令之一进行训练:
# For training Recurrent Flow Completion Network
python train.py -c configs/train_flowcomp.json
# For training ProPainter
python train.py -c configs/train_propainter.json
你可以运行相同的命令来恢复训练。
为了加快训练过程,你可以使用以下命令预先计算训练数据集的光流:
# Compute optical flow for training dataset
python scripts/compute_flow.py --root_path <dataset_root> --save_path <save_flow_root> --height 240 --width 432
运行以下命令之一进行评估:
# For evaluating flow completion model
python scripts/evaluate_flow_completion.py --dataset <dataset_name> --video_root <video_root> --mask_root <mask_root> --save_results
# For evaluating ProPainter model
python scripts/evaluate_propainter.py --dataset <dataset_name> --video_root <video_root> --mask_root <mask_root> --save_results
分数和结果也将保存在文件夹中。请进一步评估时间翘曲误差。
results_eval
--save_results
如果你发现我们的回购对你的研究有用,请考虑引用我们的论文:
@inproceedings{zhou2023propainter,
title={{ProPainter}: Improving Propagation and Transformer for Video Inpainting},
author={Zhou, Shangchen and Li, Chongyi and Chan, Kelvin C.K and Loy, Chen Change},
booktitle={Proceedings of IEEE International Conference on Computer Vision (ICCV)},
year={2023}
}
该项目根据NTU S-Lab许可证1.0获得许可。再分发和使用应遵循此许可证。
如果你有任何疑问,请随时与我联系。
shangchenzhou@gmail.com
此代码基于 E2FGVI 和 STTN。一些代码来自 BasicVSR++。感谢他们的出色作品。