ProPainter
ProPainter 是一款专为视频修复打造的先进开源 AI 工具,由南洋理工大学团队研发并发表于 ICCV 2023。它的核心功能是智能移除视频中不需要的物体(如路人、杂物),或自动补全视频中缺失、损坏的画面区域。与传统方法相比,ProPainter 有效解决了视频修复中常见的画面闪烁、纹理模糊以及时间序列不连贯等难题,能够生成细节丰富且过渡自然的修复结果。
在技术层面,ProPainter 的独特之处在于改进了光流传播机制与 Transformer 架构。通过引入“递归传播”策略,它能更精准地利用视频前后帧的信息来填补当前帧的空白,确保修复内容在动态场景中依然保持稳定和真实。此外,项目近期还优化了显存占用,支持在消费级显卡上进行高效推理,降低了使用门槛。
这款工具非常适合多类人群使用:影视后期设计师可利用它快速清理拍摄素材中的穿帮镜头;研究人员可基于其开源代码探索视频生成前沿技术;开发者能将其集成到多媒体处理工作流中。虽然官方移除了直接去水印的演示以防滥用,但其强大的物体移除能力仍为合法的视频编辑需求提供了极佳的解决方案。无论是专业创作者还是技术爱好者,都能通过 ProPainter 体验到高质量的自动化视频修复能力。
使用场景
某影视后期团队在修复一部珍贵的 90 年代纪录片时,发现原始胶片上存在严重的划痕、灰尘斑点以及因胶带修补留下的遮挡物,急需在不破坏画面连贯性的前提下完成高清修复。
没有 ProPainter 时
- 逐帧修图效率极低:传统方法需人工在 Photoshop 中逐帧涂抹修复,面对每分钟 24 帧的视频,耗时数周且成本高昂。
- 动态背景闪烁严重:简单的静态图像修复算法无法理解时间维度,导致修复区域在视频播放时出现明显的抖动和闪烁,破坏观感。
- 大物体移除痕迹明显:对于画面中较大的遮挡物,现有工具难以从周围帧借用纹理,填补内容往往模糊不清或与背景运动轨迹不匹配。
- 硬件资源消耗过大:部分高精度视频修复模型对显存要求极高,普通工作站无法运行,必须租用昂贵的云端算力。
使用 ProPainter 后
- 自动化批量处理:ProPainter 利用改进的传播机制和 Transformer 架构,能自动分析前后帧信息,一键完成整段视频的瑕疵去除,将数周工作缩短至数小时。
- 时序一致性完美:通过光流引导的特征传播,ProPainter 确保修复区域随镜头运动自然流动,彻底消除了画面闪烁,视觉过渡平滑如原生拍摄。
- 复杂场景智能补全:即使移除画面中心的大面积物体,ProPainter 也能精准参考多帧上下文,生成纹理清晰、结构合理的背景内容,几乎看不出修改痕迹。
- 显存优化友好:得益于内存高效推理特性,ProPainter 能在消费级显卡上流畅运行高分辨率视频修复,大幅降低了团队的硬件门槛。
ProPainter 通过将时空上下文理解深度融入视频修复流程,让高保真、无闪烁的自动化视频清理成为普惠型工作流。
运行环境要求
- 未说明
- 需要 NVIDIA GPU,CUDA >= 9.2
- 显存需求取决于分辨率和帧数:处理 720p (1280x720) 50 帧视频需约 19GB (FP16) 或 28GB (FP32)
- 处理 480p (640x480) 80 帧视频需约 7GB (FP16)
- 支持通过参数调整以降低显存占用
未说明

快速开始
ProPainter:改进视频修复中的传播与Transformer
⭐ 如果ProPainter对您的项目有所帮助,请为本仓库点个赞。谢谢!🤗
:open_book: 如需更多可视化结果,请访问我们的项目页面
更新
- 2023.11.09:集成至 :man_artist: OpenXLab。快来体验在线演示吧!
- 2023.11.09:集成至 :hugs: Hugging Face。快来体验在线演示吧!
- 2023.09.24:我们正式移除了水印去除演示,以防止我们的工作被用于不道德的目的。
- 2023.09.21:新增了内存高效推理功能。请查看我们的GPU内存要求。🚀
- 2023.09.07:我们的代码和模型已公开发布。🐳
- 2023.09.01:本仓库创建。
待办事项
- 制作Colab演示。
-
制作交互式Gradio演示。 -
更新内存高效推理功能。
结果
👨🏻🎨 物体移除
|
|
🎨 视频补全
|
|
|
|
概述

依赖与安装
克隆仓库
git clone https://github.com/sczhou/ProPainter.git创建Conda环境并安装依赖
# 创建新的Anaconda环境 conda create -n propainter python=3.8 -y conda activate propainter # 安装Python依赖 pip3 install -r requirements.txt- CUDA ≥ 9.2
- PyTorch ≥ 1.7.1
- Torchvision ≥ 0.8.2
requirements.txt中列出的其他必要包
开始使用
准备预训练模型
从Releases V0.1.0下载我们的预训练模型,并将其放置在weights文件夹中。(所有预训练模型也可以在首次推理时自动下载。)
目录结构应如下所示:
weights
|- ProPainter.pth
|- recurrent_flow_completion.pth
|- raft-things.pth
|- i3d_rgb_imagenet.pt(用于评估VFID指标)
|- README.md
🏂 快速测试
我们在inputs文件夹中提供了一些示例。运行以下命令即可尝试:
# 第一个示例(物体移除)
python inference_propainter.py --video inputs/object_removal/bmx-trees --mask inputs/object_removal/bmx-trees_mask
# 第二个示例(视频补全)
python inference_propainter.py --video inputs/video_completion/running_car.mp4 --mask inputs/video_completion/mask_square.png --height 240 --width 432
结果将保存在results文件夹中。如需测试您自己的视频,请准备输入的mp4视频(或分割后的帧)以及逐帧掩码。
若要指定视频处理分辨率或避免内存不足,可以设置--width和--height参数:
# 处理分辨率为576×320的视频;设置--fp16以在推理过程中使用半精度(fp16)。
python inference_propainter.py --video inputs/video_completion/running_car.mp4 --mask inputs/video_completion/mask_square.png --height 320 --width 576 --fp16
💃🏻 交互式演示
我们还提供了物体移除的交互式演示,用户可以选择视频中任何想要移除的对象。您可以在Hugging Face上试用该演示,或在本地运行它(详见GitHub)。
请注意,演示界面和使用方法可能与上方的GIF动画有所不同。有关详细说明,请参阅用户指南。
🚀 内存高效的推理
视频修复通常需要大量的显存。在此,我们提供了多种功能来实现内存高效的推理,从而有效避免“显存不足”(OOM)错误。您可以使用以下选项进一步降低显存占用:
- 通过减少
--neighbor_length参数值(默认为10)来减少局部邻域的数量。 - 通过增加
--ref_stride参数值(默认为10)来减少全局参考帧的数量。 - 设置
--resize_ratio参数(默认为1.0)以调整处理视频的分辨率。 - 通过指定
--width和--height参数来设置更小的视频尺寸。 - 设置
--fp16参数,在推理过程中使用半精度浮点数(FP16)。 - 减少子视频的帧数
--subvideo_length(默认为80),这可以有效地解耦显存消耗与视频长度之间的关系。
下表展示了在FP32和FP16精度下,不同子视频长度所需的显存估算:
| 分辨率 | 50帧 | 80帧 |
|---|---|---|
| 1280 x 720 | 28G / 19G | 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 | DAVIS | |
|---|---|---|---|
| 描述 | 用于训练(3,471个)和评估(508个) | 仅用于评估(90个视频中的50个) | |
| 图像 | [官方链接](下载训练和测试的所有帧) | [官方链接](2017年,480p,训练验证集) | |
| 掩码 | [Google Drive] [百度网盘](用于复现论文结果;由ProPainter论文提供) |
||
训练和测试划分文件位于 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)。
运行以下命令之一进行训练:
# 训练循环流完成网络
python train.py -c configs/train_flowcomp.json
# 训练ProPainter
python train.py -c configs/train_propainter.json
您可以使用相同的命令来恢复您的训练。
为了加快训练速度,您可以使用以下命令为训练数据集预先计算光流:
# 计算训练数据集的光流
python scripts/compute_flow.py --root_path <dataset_root> --save_path <save_flow_root> --height 240 --width 432
评估
运行以下命令之一进行评估:
# 评估流完成模型
python scripts/evaluate_flow_completion.py --dataset <dataset_name> --video_root <video_root> --mask_root <mask_root> --save_results
# 评估ProPainter模型
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}
}
许可证
仅限非商业用途声明
ProPainter仅允许用于非商业目的的使用、复制和分发。代码和模型根据NTU S-Lab许可证1.0授权。再分发和使用必须遵守该许可协议。
如需咨询或获得商业用途许可,请联系周尚辰博士(shangchenzhou@gmail.com)。
使用ProPainter的项目
如果您在项目中开发或使用了ProPainter,请随时告知我。同时,请包含此ProPainter仓库链接、作者信息以及我们的S-Lab许可证(附链接)。
社区贡献的项目/应用
- 流式ProPainter:https://github.com/osmr/propainter
- 更快的ProPainter:https://github.com/halfzm/faster-propainter
- ProPainter WebUI:https://github.com/halfzm/ProPainter-Webui
- ProPainter ComfyUI:https://github.com/daniabib/ComfyUI_ProPainter_Nodes
- Cutie(视频分割):https://github.com/hkchengrex/Cutie
- Cinetransfer(角色迁移):https://virtualfilmstudio.github.io/projects/cinetransfer
- Motionshop(角色迁移):https://aigc3d.github.io/motionshop
PyPI
- propainter:https://pypi.org/project/propainter
- pytorchcv:https://pypi.org/project/pytorchcv
联系方式
如有任何问题,请随时通过 shangchenzhou@gmail.com 与我联系。
致谢
本代码基于E2FGVI和STTN。部分代码来自BasicVSR++。感谢他们的出色工作。
特别感谢Luo Yihang,他为构建和维护ProPainter的Gradio演示做出了重要贡献。
版本历史
v0.1.02023/09/03常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
n8n
n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。
AutoGPT
AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。