关键词:深度学习模型模型多模态


引言

SAM 系列模型引入了图像和视频的提示分割任务,专注于使用点、框或掩码进行提示式视觉分割(Prompt Vision Segmentation,PVS),以每个提示分割单个物体。虽然这些方法取得了突破性进展,但它们并未解决在输入中查找和分割任何出现位置的概念的所有实例的通用任务(例如,视频中所有的“猫”)。

为弥补该研究空白,Meta 推出 SAM3 模型。相较于 SAM2,SAM3 对 PVS 模块进行优化升级,同时为 可提示概念分割(PCS) 任务建立了全新标准。

  • 为了专注于识别原子视觉概念,Meta 将文本限制为简单的名词短语,例如“红苹果”或“条纹猫”。

SAM 3 (Segment Anything Model 3)是 Meta 推出的第三代“分割一切”模型。在 SAM 2 的基础上,SAM 3 的核心突破在于引入了基于概念的提示分割能力。它不再局限于通过点、框等几何提示来分割单个物体,而是能够根据用户提供的概念提示(如名词短语“黄色校车”、图像示例或两者结合),在图像和视频中检测、分割并跟踪所有匹配该概念的物体实例。

注:本文仅关注 SAM3 的图像语义分割部分。

可提示概念分割(PCS)

定义 Promptable 概念分割任务如下:给定一个图像或短视频(≤30秒),检测、分割和跟踪由简短文本短语、图像示例或两者的组合所指定的视觉概念的所有实例。

  • 将概念限制为由简单名词短语(NPs)定义的,名词短语由一个名词和可选的修饰符组成。
  • 名词短语提示(如果提供)对图像/视频的所有帧都是全局的,而图像示例可以作为正或负边界框在单个帧上提供,以迭代地细化目标掩码。

SAM3 模型架构

图1 SAM3 模型架构
图1 SAM3 模型架构

SAM3 架构基于 SAM 系列和 DETR 架构,是一个双编码器-解码器 Transformer 系统。它主要由两部分组成:检测器与跟踪器,二者共用同一视觉编码器。

  • 从文本或视觉提示词中定位目标的基于 DETR 的 检测器
    • 针对开放词汇概念检测的难点,模型增设独立的存在头结构,实现识别与定位任务的解耦。该设计在引入高难度负样本短语开展训练时,效果提升尤为显著。
  • 将检测结果传播到各视频帧的基于记忆的 跟踪器
    • 实现视频场景下不同目标实例的身份区分与持续跟踪。
图2 SAM3 模型详细架构
图2 SAM3 模型详细架构

SAM3 有 ~850M 个参数,~450M 和 ~300M 用于视觉和文本编码器,以及 ~100M 用于检测器和跟踪器组件。

VL 骨干网络

检测器架构

检测器的架构遵循通用的 DETR 架构。

  • 感知编码器(Perception Encoder, PE):编码图像和文本 Prompt;
  • 几何/示例编码器:编码几何/图像示例。

将图像示例标记和文本标记共同称为“Prompt Tokens 提示标记”。融合编码器接受图像编码器的不受条件约束的 embeddings,并通过交叉注意力于提示标记来对其进行条件化。融合后,采用类似 DETR 的解码器,其中学习到的对象查询交叉注意力于融合编码器条件化的图像 embeddings。

Prompt Tokens 存在标记

存在标记:一个学习到的全局标记,用于预测目标概念是否存在于图像/帧中,通过将识别与定位分离来改进检测。

  • 通过引入一个学习得到的全局存在标记来将识别和定位步骤解耦。这个标记仅负责预测符合名词短语(NP)概念的目标是否存在于图像/帧中。每个查询 qiq_{i} 只需要解决定位问题。每个查询的最终得分是其自身得分与存在得分的乘积。

Geometry and Exemplar Encoder

几何与示例编码器主要用于对 PCS 任务中的图像示例(如果存在)进行编码。

  • 此外,它还作为辅助功能用于对图像上的 PVS 任务进行视觉提示编码,该功能主要用于在训练的 2‑3 阶段将 PVS 任务的预训练数据包含在内,以实现更模块化的训练方法。

每个独立的图像示例都使用位置嵌入、标签嵌入(正向或负向)以及 ROI 池化的视觉特征进行编码,这些特征被连接(组成“Exemplar tokens”)并由一个小型 Transformer 处理。辅助训练的视觉提示(点、框)以类似方式编码,组成“Geometry tokens”。

  • 可能存在“Geometry tokens”和“Exemplar tokens”均不存在的情况(例如仅使用文本提示时)。
  • Geometry tokens 和 Exemplar tokens 通过自注意力机制相互关注,同时也交叉关注图像编码器对应(无条件)帧的 frame-embedding。

融合编码器

文本和几何/示例标记共同构成 prompt tokens(提示标记)。融合编码器接受未条件化的 frame-embedding,并使用一个包含 6 个 transformer 块的堆栈对 prompt tokens 进行条件处理,随后搭配多层感知机(MLP)完成特征映射。融合编码器的输出是条件化的 frame-embedding。

  • transformer 块带有自注意力和交叉注意力(针对 prompt tokens)层,且自注意力层是普通的自注意力操作。

Image and Text Encoders

图像和文本编码器是 Transformer 模型,使用 5.4 亿个图像‑文本对,遵循感知编码器(Perception Encoder, PE)进行对比视觉语言训练。

  • 与 SAM2 类似,视觉编码器使用窗口注意力,并在极少数层(32层中的4层)使用全局注意力,其中 1008×1008 像素的图像被划分为 3×3 个非重叠的 336 像素窗口。
  • 视觉编码器每层都使用 RoPE,并使用窗口化绝对位置嵌入。
  • 文本编码器最大上下文长度为 32。

跟踪器架构

不关注视频处理,略

SAM3 代码仓库

代码仓库地址:https://github.com/facebookresearch/sam3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
sam3/
├── model_builder.py ← 🏗️ 模型构建(统一入口)
├── __init__.py ← 公共 API 导出

├── model/ ← 🧠 核心模型组件
│ ├── sam3_image.py ← 图像检测器 (Sam3Image)
│ ├── sam3_image_processor.py ← 高级图像 API (Sam3Processor)
│ ├── sam3_video_predictor.py ← 带会话管理的视频预测器
│ ├── sam3_tracking_predictor.py ← 基于记忆的跟踪器
│ ├── vl_combiner.py ← 视觉-语言主干网络融合
│ ├── vitdet.py ← ViT-Det 视觉编码器
│ ├── text_encoder_ve.py ← 文本编码器
│ ├── encoder.py ← Transformer 编码器层
│ ├── decoder.py ← 带存在性 Token 的 Transformer 解码器
│ ├── geometry_encoders.py ← 点/框提示词编码
│ ├── maskformer_segmentation.py ← 像素解码器 + 分割头
│ ├── memory.py ← 用于跟踪的掩码记忆编码器
│ ├── multiplex_utils.py ← SAM 3.1 复用控制器
│ └── video_tracking_multiplex.py ← SAM 3.1 复用视频模型

├── sam/ ← 🔧 共享的 SAM 组件
│ ├── transformer.py ← RoPE 注意力机制, 提示词编码器
│ ├── mask_decoder.py ← 轻量级掩码解码器
│ └── prompt_encoder.py ← 稀疏/密集提示词编码

├── agent/ ← 🤖 基于 LLM 的复杂提示词 Agent
│ ├── agent_core.py ← Agent 推理循环
│ ├── client_llm.py ← LLM 客户端接口
│ └── client_sam3.py ← SAM 3 服务客户端

├── eval/ ← 📊 评估工具包
│ ├── cgf1_eval.py ← cgF1 指标评估
│ ├── coco_eval.py ← COCO 风格的 AP 评估
│ └── saco_veval_eval.py ← SA-Co 视频评估

├── train/ ← 🏋️ 训练流水线
│ ├── configs/ ← Hydra 配置文件
│ ├── loss/ ← 损失函数
│ ├── data/ ← 数据集转换与加载器
│ └── train.py ← 训练入口

└── perflib/ ← ⚡ 自定义 CUDA 算子
├── nms.py ← 非极大值抑制
├── iou.py ← IoU 计算
├── fused.py ← 融合的 CUDA 操作
└── compile.py ← torch.compile 工具

References

  1. SAM3: Segment Anything Model 3
  2. SAM3 文档 —— Ultralytics
  3. SAM3 代码仓库理解