展开本页目录
开始前准备什么
- 把本题ZIP解压到独立目录,保留原始文件与README中的素材身份。
- 模型步骤需在官方支持的隔离环境、相应权重与硬件中运行;本包不含权重,不承诺Apple本机支持CUDA。
- 本地文件检查使用Python、NumPy/Pillow或Blender;模型运行与素材/格式校验是分开的证据。
- 看清遮挡发生在什么时间
- 先运行single基线,不提前声称模型失败
- 定位首个需要修正的真实帧
- 把补点写入同一个对象ID
- 从修正帧分别向后和反向传播
- 检查修正有没有破坏邻帧
- 保存前后两套结果与点位
1. 看清遮挡发生在什么时间
原片中箱体处于玩具与相机之间;物体短暂不可见后重新出现。查看input-00018.png和input-00035.png,只把可见范围作为验收对象,不要求mask穿过不透明箱子画出隐藏玩具。
2. 先运行single基线,不提前声称模型失败
用同一checkpoint运行single,保存baseline/object-1。官方Notebook展示后续修正机制,但本机没有运行SAM模型;练习中是否跟丢,必须由你实际看到的mask决定。
3. 定位首个需要修正的真实帧
逐帧叠加原图和baseline,记录漏选或包含箱子的确切frame_idx。若首轮已经通过,就如实记录,不人为移动mask来制造“修复前”。
commands.md
bash extract-frames.sh
python run-sam-video.py --frames frames --checkpoint /path/to/sam2.1_hiera_small.pt --mode single --out actual-occlusion-baseline
# 回看结果并编辑prompts.json的refinement,再使用新输出目录
python run-sam-video.py --frames frames --checkpoint /path/to/sam2.1_hiera_small.pt --mode refine --out actual-occlusion-refined4. 把补点写入同一个对象ID
编辑prompts.json.refinement。示例frame_idx=28和点位仅是待调整的人工输入;把正点放可见目标内部,负点放误选的箱体上,labels分别为1和0,保持obj_id=1不变。
5. 从修正帧分别向后和反向传播
refine模式先保留baseline,再向同一state添加修正提示;随后从该帧传播到结尾,并用reverse=True回看前面帧。结果另存refined,不覆盖首轮证据。
6. 检查修正有没有破坏邻帧
比较真实失败帧、前后一帧和重新出现后的片段。补点可能改善一个区域却破坏另一个区域;如果前后结果没有变,也要如实记录,不能仅凭再次输出了文件就称修复。
7. 保存前后两套结果与点位
把失败帧截图、原始点位、修正点位、baseline和refined一起留存。下载包提供原创遮挡输入与脚本;未提供任何伪造的SAM错误或成功mask。
怎样确认已经完成
- 原始输入、人工参考、官方示例和实际模型输出标识分开。
- 保存真实帧号/坐标/对象ID或几何版本,不只凭文件能打开判断质量。
- 模型未运行时保留not-executed,不把参考文件复制更名为成功结果。
常见问题
视频抠像漏一块怎么办,应该在哪一帧补点?
选实际出现错误且目标仍可见的帧。完全被箱子挡住的帧没有可见目标可点;先等重新出现,再确认正确实体。
SAM 2遮挡修正会自动保证整段更好吗?
不会。需要对照修正前后同帧与邻帧,保留未改善和新产生的错误。正负点只是额外提示,不是质量保证。
为什么必须保留baseline?
没有首轮原始结果就无法判断改动发生在哪些帧,也无法区分模型修正、人工改图与文件覆盖。本题将两套序列分目录保存。




