Install
openclaw skills install mi-visionforge-svorVideo Object Remove with SVOR(stable video object removal).
openclaw skills install mi-visionforge-svor基于 SVOR(stable video object removal) 实现视频目标分割和消除,通过命令行脚本 video_remove.py 执行。
支持最长3s视频的指定目标消除
| 项 | 值 |
|---|---|
| 服务运营商 | 小米Tools团队 |
| 服务域名 | https://mipixgen-pre.ai.mioffice.cn |
| 开源仓库 | https://github.com/xiaomi-research/svor |
| API Key | 环境变量 SVOR_API_KEY(必需,可在开源仓库页面获取) |
| 脚本路径 | scripts/video_remove.py |
python --version # Python 3.x
pip show requests # requests 模块
ffmpeg -version # ffmpeg 用于视频处理
Step 1: 分割 → 获取 VLM 推荐 → 人工分析目标 ID Step 2: 使用目标 ID → mask 转换 → 合并 → 消除
直接指定 classes + targets → 分割 → mask 转换 → 消除
python scripts/video_remove.py --video "path/to/video.mp4" --segment --classes "label:text:remove_prompt"
输出 VLM 推荐的目标 ID 和边界框,据此决定哪些 ID 需要消除。
python scripts/video_remove.py --video "path/to/video.mp4" --skip-segment --targets "label:1,2,3"
python scripts/video_remove.py --video "path/to/video.mp4" --classes "sign:sign:remove the sign" --targets "sign:2,3"
# 第一步:分割两类目标
python scripts/video_remove.py --video "path/to/video.mp4" --segment \
--classes "person:person:remove pedestrians" "car:car:remove cars"
# 第二步:根据 VLM 推荐填写 targets
python scripts/video_remove.py --video "path/to/video.mp4" --skip-segment \
--targets "person:1,3,4" "car:2"
python scripts/video_remove.py --video "path/to/video.mp4" --frame 16 --segment \
--classes "girl:girl in red:remove the girl in red"
python scripts/video_remove.py --video "path/to/video.mp4" --segment \
--classes "obj:cup:remove the cup" --boxes "obj:0.15,0.7,0.3,0.25"
python scripts/video_remove.py --video "path/to/video.mp4" --segment \
--classes "obj:cup:remove the cup" --points "obj:0.25,0.75"
| 参数 | 说明 | 示例 |
|---|---|---|
--video | 输入视频路径(必填) | "D:\video.mp4" |
--classes | 分割类别 label:text:prompt | "person:person:remove people" |
--targets | 目标 ID label:1,2,3 | "person:1,3,4" |
--boxes | 框标注 label:x,y,w,h(归一化 0~1) | "obj:0.15,0.7,0.3,0.25" |
--points | 点标注 label:x,y(归一化 0~1) | "obj:0.25,0.75" |
--frame | 标注帧序号(0-based),默认 0 | --frame 16 |
--segment | 仅分割,打印 VLM 推荐后退出 | |
--skip-segment | 跳过分割,使用缓存 mask | |
--tmp-dir | 临时目录(默认 ./temp/) | "C:\temp" |
SAM3 返回的 suggest_obj 包含 VLM 对目标的分析。不要用正则表达式解析,应人工分析:
object_boxes 的坐标辅助判断位置示例 VLM 输出分析:
VLM: 符合用户指令的有 obj_id 1、3、4(背景行人),需消除;
obj_id 2 是前景人物,不需要消除。
→ --targets "person:1,3,4"
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 常见物体(人、车、动物) | 文本提示 | 简单直接 |
| 文本提示无法识别 | 框标注 | 比点标注更稳定 |
| 需要精确位置 | 点标注 | 定位精确 |
| 指定帧的目标 | --frame + 文本/框 | 定位到特定帧 |
SAM3 接口一次仅能分割一类目标,多类消除需要:
blend=all_mode=lighten 合并所有 maskpoints/bounding_boxes 用归一化坐标(0~1),object_boxes 用绝对像素坐标| 状态码 | 含义 | 处理 |
|---|---|---|
| 400 | 请求参数错误 | 检查参数格式 |
| 401 | 未提供 API Key | 检查 Headers |
| 403 | API Key 无效 | 检查 Key |
| 413 | 请求体过大 | 降低视频分辨率 |
| 429 | 超出速率限制 | 等待后重试 |
| 502 | 上游服务连接失败 | 重试 |
| 504 | 上游服务超时 | 重试或降低分辨率 |
https://mipixgen-pre.ai.mioffice.cn,与开源仓库 xiaomi-research/svor 对应SVOR_API_KEY 仅用于向该服务认证。请勿在共享环境中设置该密钥,也请勿将其粘贴到公共日志或版本控制中