10 KiB
Executable File
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
SVOR (Stable Video Object Removal)
论文 From Ideal to Real: Stable Video Object Removal under Imperfect Conditions 的官方 PyTorch 实现
⭐ 如果 SVOR 对您的项目有帮助,请为本仓库点 Star。谢谢!🤗
动态
-
May. 15th, 2026: 🔥 欢迎查看我们的视频移除评估基准 PROVE —— 一个用于全面评估视频物体移除质量的基准! -
Apr. 16th, 2026: 🏆 基于 SVOR 的方案在 Physics-aware Video Instance Removal Challenge, CVPR 2026 中获得第一名。🎉 -
Apr. 10th, 2026: Video Removal Skill 现已在 ClawHub 上线!由 SVOR(内部更新版本)和 MiMo-V2-Omni, 驱动,只需文本提示即可从视频中移除物体 —— 无需掩码。专业提示:搭配 MiMo-V2-Pro 可获得最佳体验!🎉 -
Apr. 10th, 2026: Github 仓库与项目主页 现已上线。🎉 -
Mar. 10th, 2026: 我们已在 Arxiv. 发布论文。
更新
- 发布推理代码与预训练模型
- 发布 Skill,请使用此 SVOR_API_KEY:
sk-mipixgen-test - 发布 Github 仓库与项目主页
- 发布论文
概述
在存在阴影、剧烈运动和缺陷掩码等真实世界不完美因素时,从视频中移除物体仍然很困难。现有的基于扩散模型(diffusion-based)的视频修复(video inpainting)方法在这些挑战下往往难以保持时间稳定性和视觉一致性。我们提出 Stable Video Object Removal (SVOR),一个稳健的框架,通过三项关键设计实现无阴影、无闪烁且对掩码缺陷具有容忍性的移除效果:(1) Mask Union for Stable Erasure (MUSE),一种在时序掩码下采样过程中应用的窗口化并集策略,用于保留每个窗口内观测到的全部目标区域,从而有效应对剧烈运动并减少漏除;(2) Denoising-Aware Segmentation (DA-Seg),在解耦侧分支上配备轻量级分割头,结合 {Denoising-Aware AdaLN } 并以掩码退化进行训练,在不干扰内容生成的前提下提供内部扩散感知定位先验;(3) 课程式两阶段训练(Curriculum Two-Stage Training):其中阶段 I 在非配对的真实背景视频上结合在线随机掩码进行自监督预训练,以学习逼真的背景与时序先验;阶段 II 在合成配对数据上使用掩码退化与副作用加权损失进行微调,在联合移除物体及其相关阴影/反射的同时提升跨域鲁棒性。大量实验表明,SVOR 在多个数据集和退化掩码基准上取得了新的最先进(state-of-the-art)结果,推动视频物体移除从理想设置走向真实世界应用。
结果
更多可视化结果,请前往我们的 项目主页
常规掩码
| 掩码输入 | 结果 |
|---|---|
|
|
|
|
|
|
|
|
缺陷掩码
| 掩码输入 | 结果 |
|---|---|
|
|
|
|
|
|
|
|
依赖与安装
代码已在 Python 3.10 环境下测试。
-
克隆仓库
git clone https://github.com/xiaomi-research/SVOR.git -
创建 Conda 环境并安装依赖
# create new anaconda env conda create -n svor python=3.10 -y conda activate svor # install pytorch pip install torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0 # install other python dependencies pip install -r requirements.txt -
[可选] 安装 flash-attn,请参考 flash-attention
pip install packaging ninja psutil pip install flash-attn==2.7.4.post1 --no-build-isolation
[可选] 使用 Docker 运行
docker build -f Dockerfile.ds -t SVOR:latest .
docker run --gpus all -it --rm -v /path/to/videos:/data -v /path/to/models:/root/models SVOR:latest
预训练权重
下载预训练权重并放置到 models/:
- 下载 Wan-AI/Wan2.1-VACE-1.3B
- 从 HigherHu/SVOR 下载我们训练的两个 LoRA
models/ 中的文件如下:
models/
├── put models here.txt
├── remove_model_stage1.safetensors
├── remove_model_stage2.safetensors
└── Wan2.1-VACE-1.3B/
快速测试
运行以下脚本,结果将保存到 samples/SVOR/:
python predict_SVOR.py \
--input_video samples/input/bmx-bumps_raw.mp4 \
--input_mask_video samples/input/bmx-bumps_mask.mp4
Usage:
python predict_SVOR.py [options]
Some key options:
--input_video Path to input video
--input_mask_video Path to mask video
--num_inference_steps Inference steps (default: 20)
--save_dir Output directory
--sample_size Frame size: height,width (default: 720,1280)
注意:
-
默认情况下,运行推理大约需要 33GB GPU 显存。
-
若要在显存为 24GB 的 GPU(例如 RTX 3090、RTX 4090)上运行推理,可将
--gpu_memory_mode设置为model_cpu_offload。 -
若要进一步降低 GPU 显存占用,可将
--sample_size设置为480,832或更小的值。
交互式 Demo
-
安装 SAM2,并下载预训练权重 sam2.1_hiera_large.pt 到
models/ -
启动 gradio demo
python -m demo.gradio_app确保输出以下信息:
... [Info] SAM2 Predictor initialized successfully ... [Info] Removal model Predictor initialized successfully Running on local URL: http://0.0.0.0:7861 -
Usage 1. 上传视频,并在「1. Upload and Preprocess」标签页中点击「Process video」按钮 2. 切换到「2. Annotate and Propagate」标签页,点击以分割对象 3. 使用「Add annotation」和「Propagate masks」完成分割 4. 在「Display object list」中查看对象 ID,并切换到「3. Remove Objects」标签页 5. 点击「Preview video」预览输入视频和遮罩视频 6. 点击「Start removal」运行 SVOR 算法
ComfyUI 支持
感谢 @Foxerity,,SVOR 现已作为 ComfyUI 节点提供:ComfyUI-SVOR
RORD-50 数据集
RORD-50 数据集可从 HigherHu/RORD-50 下载
致谢
本工作受益于以下开源项目:
引用
若您认为本仓库对您的研究有帮助,欢迎引用我们的论文:
@article{hu2026svor,
title={From Ideal to Real: Stable Video Object Removal under Imperfect Conditions},
author={Hu, Jiagao and Chen, Yuxuan and Li, Fuhao and Wang, Zepeng and Wang, Fei and Zhou, Daiguo and Luan, Jian},
journal={arXiv preprint arXiv:2603.09283},
year={2026}
}
















