☰
如何 5 步跑通 SAM 3:用一句话分割图像和视频里全部实例的完整指南
2026/11/4 6:15:15 网站建设 项目流程

如何 5 步跑通 SAM 3:用一句话分割图像和视频里全部实例的完整指南

【免费下载链接】sam3The repository provides code for running inference and finetuning with the Meta Segment Anything Model 3 (SAM 3), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/gh_mirrors/sam/sam3

你有没有遇到过这种情况:图里躺着一堆货物,你只想框出"每一个橙子",或者视频里要持续盯住"那位穿红衣的球员"?用旧一代分割模型,你得逐个点击、逐帧修补,换一批视频就得重来一遍。Meta 开源的SAM 3(Segment Anything Model 3)就是为这个场景做的:给它一句短语,它把图中或视频中所有匹配的实例一次性分割并跟踪出来。

SAM 3 是什么:30 秒建立认知 🧭

SAM 3 是一个 848M 参数的统一可提示分割基础模型:输入一张图片或一段视频,再给一个提示——短语、点、框或掩码——它就输出每个匹配实例的掩码、边界框和置信度。仓库里同时提供推理代码、微调代码和示例 notebook,pip install -e .装完就能跑。

几个关键事实:

  • 支持文本提示的穷尽式实例分割:一次调用返回该概念在画面里的全部实例,这是它相对前作 SAM 2 最核心的能力升级
  • 图像、视频两条推理管线共用同一套视觉编码器;视频侧还能做交互式修正(点、框、掩码)
  • 官方 SA-Co 基准含 27 万唯一概念,SAM 3 达到人类标注者 75–80% 的水平
  • 环境门槛明确:Python 3.12+、PyTorch 2.7+、CUDA 12.6+ 的 NVIDIA GPU;检查点需在 Hugging Face 仓库申请访问权限后登录下载
  • 仓库结构:模型与推理代码、图像与视频示例 notebook、训练与评估

SAM 3 模型架构拆解:检测器与跟踪器如何分工 🏗️

先看整体:SAM 3 = 检测器 + 跟踪器,两者共享一个视觉编码器,总参数 848M。

图1:SAM 3 模型架构总览,检测器(DETR 风格)与跟踪器(SAM 2 风格)共享视觉编码器

视觉-语言编码器:一张图 + 一句短语进,两组特征出

图像侧:ViT 骨干把输入图(默认按 1008 边长处理)切成 patch,经注意力层和特征颈部(necks.py里的多尺度特征)输出多尺度特征图;文本侧:BPE 分词器(词表文件打包在 sam3/assets/)把短语编码为 token 序列,上下文上限 32 个 token。两组特征在 Transformer 编码器里做交叉融合。

举例:输入assets/images/groceries.jpg+ 提示 "chili",编码器输出的是"图像每个区域与 chili 语义对齐程度"的联合表征,后面所有模块都消费它。

Presence token:SAM 3 新增的"目标存在性"开关

SAM 3 在解码器里加了一个presence token,专门判断"这个提示描述的物体在画面里到底有没有"。设计动机是区分易混提示——官方例子是 "a player in white" 对 "a player in red"。

举例:画面里没有 chili 时,presence 分数压低,所有 chili 候选的置信度被整体压低,输出空掩码列表而不是乱猜;有 chili 时则放开候选。没有这个机制,模型对"图中根本没有目标"的情况更容易误报。

检测器:DETR 风格,直接产出"所有候选"

检测器是 DETR 架构,同时消费文本提示、几何提示(点/框/掩码)和图像特征,输出带分数的候选目标(box + mask + score)。它负责回答"哪些位置有匹配实例",视频侧还会持续发现新实例。

举例:一段 269 帧的卧室视频(assets/videos/0001/里 0.jpg 就是第 0 帧)+ 提示 "bed",检测器在任意一帧都会给出 bed 的候选框和掩码,并打置信度分。

跟踪器:掩码记忆库 + SAM 2 编解码器逐帧传播

跟踪器继承SAM 2的 transformer 编解码器,维护掩码记忆库(mask memory bank,默认 7 帧窗口:当前 1 帧 + 历史 6 帧),把检测器找到的实例逐帧传播成带对象 ID 的轨迹。

举例:接上面的床的例子,跟踪器从第 0 帧开始逐帧给出 bed 的掩码,输出是一个"帧 → 对象 ID → 掩码"的映射,遮挡后靠记忆恢复。多目标场景下 SAM 3.1 的Object Multiplex把对象按固定容量分组、共享记忆联合处理,128 个对象时在单卡 H100 上比 2025 年 11 月版本提速约 7 倍。

SA-CO 数据集:27 万概念的标注是怎么来的 📦

SA-Co(Segment Anything - COmbined)是 SAM 3 配套的开放词汇分割基准,模型能力基本都由它定义。

图2:SA-CO 数据集示例,图像与名词短语配对标注,红字短语表示该图中无匹配实例(负样本)

  • 规模:基准含 27 万唯一概念,比已有同类基准多 50 倍以上;训练侧的数据引擎自动标注了 400 万+ 概念,构成目前最大的开放词汇分割数据集之一
  • 三个评测集:SA-Co/Gold(图像,7 个领域共 10.9 万"图像-短语"对、14.2 万个掩码,每对由 3 名标注员独立标注);SA-Co/Silver(图像,模型辅助标注扩大覆盖);SA-Co/VEval(视频,覆盖 SA-V、YT-Temporal-1B、SmartGlasses 三个域)
  • 官方指标 cgF1:同时惩罚"漏检"和"误检"——把不该有的实例标出来一样扣分,这对"穷尽式分割"特别关键

可核查的成绩:SA-Co/Gold 分割任务 SAM 3 平均 cgF1 54.1,人类标注者为 72.8,即达到人类水平约 75%。

SAM 3 与 SAM 2、OWLv2 的核心区别 🆚

一句话概括:SAM 2 给一个提示、跟一个实例;SAM 3 给一个短语、穷尽所有实例,还要顺手把它们在视频里全部跟踪住。

维度SAM 2OWLv2 / DINO-X(开放词汇检测器)SAM 3
提示形式点、框(视觉提示)短语短语、点、框、掩码
输出粒度被提示的那个实例检测框,需另接 SAM 类模型补掩码全部匹配实例的掩码 + 框 + 分数
视频跟踪单实例跟踪无(配合跟踪器才可用)检测 + 多实例跟踪一体化
存在性判断无有检测分数内置 presence token
参数量约 400M视版本而定848M
对应代码跟踪器架构被 SAM 3 继承需额外集成推理 + 训练 一体

SAM 3 还向下兼容 SAM 1/2 的任务形态:仓库提供sam1_task_predictor.py/sam2风格预测器,交互式点选分割也能直接跑。

图3:SAM 3.1 的 Object Multiplex 把多个对象分组进固定容量的"桶",共享记忆联合处理,是多目标提速的关键

从零到分割出第一个掩码:SAM 3 环境配置与运行最短路径 ⚡

最短路径四步:建环境 → 装依赖 → 申请检查点权限 → 跑 notebook。

# 1. 环境(Python 3.12 / PyTorch 2.7+ / CUDA 12.6+ 的 NVIDIA GPU) conda create -n sam3 python=3.12 -y && conda activate sam3 pip install torch==2.10.0 torchvision --index-url https://download.pytorch.org/whl/cu128 # 2. 安装仓库(clone 地址:https://gitcode.com/gh_mirrors/sam/sam3) cd sam3 && pip install -e ".[notebooks]" # 3. 检查点托管在 Hugging Face(facebook/sam3),先在仓库页申请访问,再登录: hf auth login # 4. 跑第一个图像分割示例 jupyter notebook examples/sam3_image_predictor_example.ipynb

装完之后,图像分割的最小调用链是三步:

from PIL import Image from sam3.model_builder import build_sam3_image_model from sam3.model.sam3_image_processor import Sam3Processor model = build_sam3_image_model() # 自动从 HF 拉检查点 processor = Sam3Processor(model) state = processor.set_image(Image.open("assets/images/truck.jpg")) out = processor.set_text_prompt(state=state, prompt="truck") masks, boxes, scores = out["masks"], out["boxes"], out["scores"]

视频侧换成build_sam3_video_predictor(),输入可以是 MP4 或 JPEG 帧目录,先start_session再发add_prompt(支持text和frame_index),之后还能追加points做交互式修正;多目标视频任务则用build_sam3_multiplex_video_predictor(Object Multiplex)。

示例 notebook 目录里的入口按需求选:

  • sam3_image_predictor_example.ipynb:图像文本/框提示
  • sam3_video_predictor_example.ipynb:视频文本提示 + 点修正
  • sam3.1_video_predictor_example.ipynb:SAM 3.1 Object Multiplex 多目标跟踪
  • sam3_image_batched_inference.ipynb:批量图像推理
  • sam3_agent.ipynb:复杂短语的 Agent 分割

最后补一个进阶入口:提示词越复杂(比如"左后方正在系鞋带的人"),SAM 3 本体越容易失手。仓库的 Agent 模块 让一个多模态 LLM 循环调用segment_phrase、select_masks_and_return等工具来拆解复杂指称,系统提示词就放在 system_prompts 目录 里,可直接对照它的工具设计。

跑通上面的 notebook 后,可以打开examples/sam3_video_predictor_example.ipynb把同一段话提示放进视频里看跟踪效果;想评估自己的模型,用 scripts/eval/gold 里的一行python scripts/eval/standalone_cgf1.py就能算出 SA-Co/Gold 的 cgF1。

【免费下载链接】sam3The repository provides code for running inference and finetuning with the Meta Segment Anything Model 3 (SAM 3), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/gh_mirrors/sam/sam3

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询