基于 SVOR(stable video object removal) 实现视频目标分割和消除,通过命令行脚本 video_remove.py 执行。
支持最长3s视频的指定目标消除
项值服务运营商小米Tools团队服务域名https://mipixgen-pre.ai.mioffice.cn开源仓库https://github.com/xiaomi-research/svorAPI Key环境变量 SVOR_API_KEY(必需,可在开源仓库页面获取)脚本路径scripts/video_remove.py
bash
python --version # Python 3.x
pip show requests # requests 模块
ffmpeg -version # ffmpeg 用于视频处理
Step 1: 分割 → 获取 VLM 推荐 → 人工分析目标 ID Step 2: 使用目标 ID → mask 转换 → 合并 → 消除
直接指定 classes + targets → 分割 → mask 转换 → 消除
bash
python scripts/video_remove.py --video "path/to/video.mp4" --segment --classes "label:text:remove_prompt"
输出 VLM 推荐的目标 ID 和边界框,据此决定哪些 ID 需要消除。
bash
python scripts/video_remove.py --video "path/to/video.mp4" --skip-segment --targets "label:1,2,3"
bash
python scripts/video_remove.py --video "path/to/video.mp4" --classes "sign:sign:remove the sign" --targets "sign:2,3"
bash
# 第一步:分割两类目标
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"
bash
python scripts/video_remove.py --video "path/to/video.mp4" --frame 16 --segment \
--classes "girl:girl in red:remove the girl in red"
bash
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"
bash
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(归一化 01)1)"obj:0.15,0.7,0.3,0.25"``--points点标注 label:x,y(归一化 0"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 输出分析:
text
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检查 Headers403API Key 无效检查 Key413请求体过大降低视频分辨率429超出速率限制等待后重试502上游服务连接失败重试504上游服务超时重试或降低分辨率
https://mipixgen-pre.ai.mioffice.cn,与开源仓库 xiaomi-research/svor 对应SVOR_API_KEY 仅用于向该服务认证。请勿在共享环境中设置该密钥,也请勿将其粘贴到公共日志或版本控制中