展开本页目录
开始前准备什么
- 把本题ZIP解压到独立目录,保留原始文件与README中的素材身份。
- 模型步骤需在官方支持的隔离环境、相应权重与硬件中运行;本包不含权重,不承诺Apple本机支持CUDA。
- 本地文件检查使用Python、NumPy/Pillow或Blender;模型运行与素材/格式校验是分开的证据。
- 先看原片,再固定帧率与点位
- 准备视频预测器与已下载的官方小模型
- 抽成从零开始的数字JPEG序列
- 在首帧为目标添加一个正点
- 传播并逐帧保存模型返回的mask
- 对齐首、中、末帧再做合成
- 保存真实结果与未通过的帧号
1. 先看原片,再固定帧率与点位
打开 input.mp4,确认只有一只纹理玩具横向移动。输入是 Blender 实际渲染的36帧、12fps练习片,不是SAM输出;先播放首尾,再用 input-manifest.json 记录宽高、时长与来源。
2. 准备视频预测器与已下载的官方小模型
按官方安装要求准备隔离环境;配置文件和checkpoint必须同为SAM 2.1对应规格。本题脚本默认sam2.1_hiera_s.yaml,checkpoint要由你显式提供本地文件,不自动下载权重。
3. 抽成从零开始的数字JPEG序列
运行 extract-frames.sh,frames/00000.jpg 对应原视频第0帧。官方视频示例使用数字帧名排序;不用文件修改时间排序,不把036当成第36秒。先数清36个JPEG,再开始推理。
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-sam-single4. 在首帧为目标添加一个正点
打开 point-prompts.png,人工确认标点在玩具主体内部,再检查prompts.json中的像素坐标。脚本将其以obj_id=1传给add_new_points_or_box。点到背景时先修坐标,不把空蒙版当成“自动识别成功”。
5. 传播并逐帧保存模型返回的mask
run-sam-video.py将logits>0转为0/255 PNG,并保留模型返回的frame_idx与object_id。实际结果写入全新actual-sam-output/baseline/object-1,不覆盖原片,也不会把原始几何参考复制成模型输出。
6. 对齐首、中、末帧再做合成
检查00000、00018、00035的目标位置、脚部和天线;确认每张mask与640×360原帧一致。数量正确只说明文件齐全,边缘、漏选和背景污染仍需叠加回原片逐段看。
7. 保存真实结果与未通过的帧号
运行verify.py检查练习包,再把你实际的模型版本、运行设备和失败帧填入review.csv。runtime.json初始为not-executed;只有自己完成推理后,才另存实际运行记录。
怎样确认已经完成
- 原始输入、人工参考、官方示例和实际模型输出标识分开。
- 保存真实帧号/坐标/对象ID或几何版本,不只凭文件能打开判断质量。
- 模型未运行时保留not-executed,不把参考文件复制更名为成功结果。
常见问题
SAM 2视频抠像后会直接生成透明MP4吗?
本题得到逐帧PNG蒙版;普通H.264 MP4不保留alpha。先把mask用于合成或导出支持透明通道的序列,不把黑底MP4说成透明视频。
不用绿幕抠出主体,首帧点一次就够了吗?
点一次只完成首轮传播,遮挡、细线或出画都可能失败。先检查实际帧,再到遮挡补点教程追加修正,不能承诺所有视频自动抠干净。
frames里为什么必须是数字JPEG?
教程按官方视频Notebook使用数字帧目录,并在运行前按整数帧号排序。先固定抽帧规则,避免字典序把10放在2之前。




