Sam1#
sam设计的出发点:
可提示分割任务
支持灵活提示,实时交互使用
多样化,大规模的数据源


重头戏:Mask Decoder(怎么把提示 + 图像特征变成掩码)#
设计宗旨:既要能灵活融合提示,又要极快。因此 SAM 采用一个轻量的改造版 Transformer 解码器,并用“动态头”生成掩码。
输入与“输出 token”#
- 输入:图像嵌入(ViT 提供的二维网格)、提示嵌入(点/框/稠密掩码),以及一个学习到的输出 token(类似 ViT 的
[class],用来“承载”本次要生成的掩码)。ar5iv
“双向”交互的 Two-Way Transformer#
每个解码层有四步,关键在双向交叉注意力(two-way)——既让提示看图像,也让图像回看提示:
对提示 tokens 做自注意力(整合提示内部信息);
提示 → 图像:提示作 query,跨注意力读取图像嵌入;
逐点 MLP 更新提示 tokens;
图像 → 提示:图像作 query,跨注意力读取提示,把提示信息写回图像特征。 默认两层这样的解码器(数据引擎的某个版本曾用过 3 层)。注意力里会加位置编码,并把原始提示 token(含位置信息)残差相加以保几何信息。ar5iv
直觉:先让提示“问”图像在哪、长啥样;再让图像特征“带着提示的意图”被改写,这样下游生成掩码时更“对题”。
上采样 + 动态线性分类器(生成掩码)#
两层转置卷积把解码后的图像特征上采样到更细网格;
用一个小 MLP 把输出 token映射成一组动态权重,对上采样后的每个像素特征做点积(可理解为“动态线性分类器”),得到每个位置为前景的概率(logit) → 形成整幅掩码。ar5iv
多掩码与 IoU 置信度(处理歧义)#
一个提示可能对应多个有效目标(比如点击在衣服上,既可能分出衣服,也可能分出人)。SAM 设计为一次输出多张掩码(默认 3 张)来“包容歧义”。训练时对三张分别算损失,只回传最小损失那张(multi-output 最小化技巧)。
同时再加一个小头,预测每张掩码的置信度(估计 IoU)用于排序。多提示时通常歧义减少,模型只输出一张(通过额外的输出 token 设置实现)。ar5iv
训练细节(和 Decoder 直接相关的)#
损失:掩码用 Focal + Dice 的线性组合;IoU 预测头用 MSE,与掩码损失并和。
高效设置:解码器通道维度约 256,注意力 8 头;跨注意力里会把 q/k/v 的维度减半提速;上采样的转置卷积通道(例如 64 → 32)。这些选择让 decoder 计算量远小于大 ViT encoder。ar5iv
数据引擎,这个务必学会

Sam2#
从标题上来看,sam2就是比sam1多一个视频功能,下面我们详细阅读原文
摘要:提出几个关键:更快,更准,加入视频分割,减少交互

仔细看,有一个记忆注意力机制
相关工作:
交互式视频分割:交互式视频对象分割已经成为在用户引导下有效地获得视频(小掩模)中的对象分割的关键任务,所述用户引导通常以涂写、点击或边界框的形式
视频对象分割:
它的方法是PVS

如何实现记忆模块:self attention , cross attention


SAM 2 模型架构总览#
SAM 2 是 Meta 发布的新一代基础分割模型,统一处理图像和视频任务,通过 prompt 控制(如点、框、mask)进行分割,具备零样本泛化能力和实时性能。
核心组件包括:#
Image Encoder:采用分层设计(如 Hiera),能在不同尺度抽取丰富特征,支持多尺度融合与视频帧的实时处理 LearnOpenCVSupervisely。
Prompt Encoder:类似于 SAM1,用于编码用户的点、框、mask 提示 Supervisely。
Memory 模块(新增):包含 memory encoder、memory bank 和 memory attention,用于视频中的时序记忆管理:存储过去帧和 prompt 信息,帮助跨帧保持对象一致性,即便对象被遮挡或消失也能追踪回来 Ultralytics DocsSupervisely。
Mask Decoder:一个轻量级而强大的 promptable 解码器,本文重点聚焦其如何结合 prompt、memory 和当前帧特征生成掩码。
Mask Decoder:SAM 2 的核心解码器#
解码流程结构(图像 & 视频一致、但视频加入 memory 融合):#
步骤一:Image Embedding + Memory Attention
首先将当前帧通过 image encoder 得到特征图(frame embedding)。
通过 memory attention 模块,融合来自 memory bank 的先前帧特征与 prompt,让当前帧的 embedding 带有时序 context 信息。这种 attention 类似 Transformer 的 cross-attention,用来比对 past memories,有助于处理目标遮挡、重现等挑战 arXivSupervisely。
步骤二:Prompt Cross-Attention
- 融合了 memory 信息的帧 embedding,随后接 prompt encoder 编码结果做 cross-attention,再结合 prompt 信息对目标定位提供引导 arXivSupervisely。
步骤三:Mask 生成
最终利用 decoder 输出生成 segmentation mask。这部分在 SAM1 中用的是轻量 Transformer + 动态 classifier 设计,SAM 2 的思路也是类似,只不过加入了 memory-conditioned embedding。具体生成步骤类似「frame embedding + prompt → decoder → mask logits」。
SAM 2 还支持不在当前帧出现目标的判断(presence head),专门用于视频中判断目标是否存在当前帧 Supervisely。
SAM 2 Mask Decoder 的优势#
推理示例:SAM 2 的 Mask Decoder 工作流#
输入:当前帧图像 + 用户 prompt(点/框/mask)。
编码:Image Encoder → 特征图;Prompt Encoder → 提示 embedding。
融合:memory attention 融合过去帧特征;prompt attention 引导当前帧器官级识别。
解码:Mask Decoder 基于融合 embedding 输出 segmentation mask 和 presence 置信度。
记忆更新:当前帧 mask 加入 memory bank,供下帧使用。
解决方案#
大规模造数据问题(语义分割)#
对于分割来说,人工标注数据集的成本是高昂的,如何基于少量标注,通过一种机制快速获取大量高标注的数据集呢

SAM3#

一、什么是 SAM 3(Segment Anything Model 3)#
SAM 3 是 Meta AI 发布的第三代视觉基础模型(Vision Foundation Model),用于在图像与视频中进行 开放词汇(open-vocabulary)可提示分割。它不仅能检测与分割对象,还能通过文本、示例图像或视觉提示来定位、掩码与跟踪匹配的所有实例。
核心目标可以归结为:
将“交互式视觉分割工具”升级为“语义概念驱动的通用视觉理解引擎”。
二、技术能力与核心功能#
Open-Vocabulary 概念分割(Promptable Concept Segmentation)#
SAM 3 的旗舰能力是 Promptable Concept Segmentation \(PCS\),即通过自然语言短语(如“黄色出租车”)或示例图像来指定一个概念,并自动识别场景中 所有匹配该概念的实例。这与传统的固定类别分割模型(如 COCO 的 80 类)不同,它可以处理任意用户描述的概念类别。
特点:
支持 文本提示(Text Prompts):直接用自然语言描述想要的对象。
支持 示例提示(Exemplar Prompts):给出一个参考样例图像或区域,检测所有相似对象。
支持 视觉提示(Visual Prompts):传统的点、框、遮罩等提示用于精细控制。
统一图像 + 视频检测、分割与跟踪#
SAM 3 能对图像和视频序列做端到端处理:
图像分割:返回所有匹配概念的像素级掩码(masks)。
视频跟踪:一旦实例被识别,它即可跨帧跟踪对象,输出一致的实例 ID。
开放词汇检测:支持广泛语义,而不是固定类表。
架构要素#
根据 Meta 提供的技术细节与论文摘要,SAM 3 的架构包含以下模块:
a. 共享视觉编码器#
一个统一的 backbone(视觉编码器)负责提取图像/视频的基础视觉特征。
b. 检测器(Detector)#
基于 DETR 风格结构,用于根据提示(文本 + 视觉)定位所有符合概念的对象。
引入 Presence Token 机制以提高对相似/細粒度概念的区分能力。
c. 跟踪器(Tracker)#
- 内置记忆机制,可跟踪视频中多个匹配对象的轨迹。
d. 大数据训练引擎#
- 支撑超过 400 万独特概念标签 的大规模训练数据集,用于提升开放词汇泛化能力。
三、与 SAM1 / SAM2 的对比#
总结对比逻辑:
SAM 1:只支持静态图像,通过人工交互(点/框)生成单个实例的掩码。
SAM 2:新增视频跟踪能力,但仍然依赖视觉提示,并且每次通常只分割一个实例。
SAM 3:真正引入自然语言和示例提示,实现 一次性自动分割多个概念实例,并支持图像与视频双模态处理。
四、性能与开放词汇泛化#
独立基准测试显示 SAM 3 在开放词汇目标检测和概念分割任务上显著领先其他模型:如在 SA-Co/Gold 基准上,它的 cgF1 分数远高于现有模型,并在多个视频概念分割指标中表现优异。
此外,据 Meta 的评估,SAM 3 在 SA-Co 基准上可以达到 接近人类水平(约 75-80%) 的表现。
五、实际应用场景#
SAM 3 的技术能力使它适配多种现实应用,包括但不限于:
数据标注与自动标注流水线 快速生成高质量掩码,用于训练下游分割/检测模型。
视频理解与监控分析 利用文本提示跟踪场景中的指定对象,例如“所有红色车”。
机器人感知与自动驾驶 可用于动态环境中开放词汇对象识别与跟踪。
内容编辑与增强现实 基于语义掩码可以进行替换、模糊、特效、背景移除等操作。
医疗与科研场景分割 可根据医生描述的病灶类型进行自动分割,为辅助诊断提供高效工具。
六、局限性与未来拓展方向#
虽然 SAM 3 在开放词汇分割任务上取得了巨大进步,但当前研究也指出如下发展方向:
自然语言指令的丰富理解:单短语提示虽强,但对复杂语义指令仍需结合更强语言模块(例如 SAM3-I 研究方向)。
领域特化表现:在特定领域(如医学图像)尚需域内微调提升精度。
部署资源需求:大规模模型推理对计算资源要求较高,在边缘设备上部署仍是工程挑战。
七、总结要点#
SAM 3 是 Meta 发布的最新一代视觉基础模型,支持开放词汇分割。
核心能力是 Promptable Concept Segmentation:利用文本与示例提示自动识别、分割所有相关实例。
它统一了视觉对象检测、分割、跟踪三个基本视觉任务。
相较先前版本(SAM 1/2),新增开放词汇理解与多实例输出能力,标志着视觉基础模型向更强语义理解迈进。
SAM3核心#
Detection-style Queries(实例查询)

好,这里我彻底换一种“工程直觉优先、数学最少”的方式来讲,而且只讲一件事:
Detection-style Instance Queries 到底是什么? 它在代码和模型里“具体干了什么”?
你可以把下面的解释直接讲给一个做过 YOLO / Mask R-CNN,但没碰过 Transformer 的工程师,对方是能听懂的。
一句话先给结论(非常重要)#
Detection-style Instance Query = 一组“可学习的空槽位”, 每个槽位都在图像里“试着找一个完整的对象/实例”。
它不是类别,不是 anchor,也不是像素。
它更像是:
“我假设图里有 N 个东西,每个 Query 负责去找一个。”
先把“错误直觉”全部清掉#
很多人第一次听 Query,会误解成下面这些(都不对):
❌ Query = 一个类别
❌ Query = 一个 anchor box
❌ Query = 一块图像 patch
❌ Query = 文本 embedding
正确的是:
Query 本身一开始什么都不是 它只是一个可学习的向量。
用一个极通俗的比喻#
把模型想成“多个人同时在图里找东西”#
图像特征 = 一整张复杂的现场
Query = 100 个“检查员”
每个检查员的任务:
“我看看这张图,有没有一个完整的东西值得我负责?”
Query 在代码里的真实形态(非常具体)#
# 假设有 100 个 instance queries
num_queries = 100
d_model = 256
# 可学习参数
instance_queries = nn.Embedding(num_queries, d_model)这就是全部。
shape =
(100, 256)不对应任何图像位置
不绑定任何类别
Query 是怎么“看图像”的?#
靠的是这一步(核心)👇
Cross-Attention(Query 看 Image)#
Query 作为 Q
Image feature 作为 K, V直觉版:
Query 会问图像每一个位置: “你像不像我正在找的那个‘整体结构’?”
用一句白话解释 Cross-Attention#
对每个 Query:
“我扫一遍整张图, 把和我最匹配的像素特征收集起来, 然后更新我自己。”
一轮下来发生了什么?#
初始时(完全随机)#
Query #17:乱看
Query #42:乱看
训练若干轮后#
模型学会了:
⚠️ 但它们从未被明确告知这是“裂缝”或“人”
那“Detection-style”是什么意思?#
这是和传统分割的本质区别。
传统分割#
每个像素:你是什么类别?Detection-style Query#
每个 Query:你能不能负责一个实例?👉 这是 “从像素问类别” → “从实例问像素”
为什么它和 Detection 很像?#
你熟悉的检测流程:
Query 怎么知道“我该负责哪个 GT 实例”?#
这一步非常关键👇
Hungarian Matching(训练时)#
模型做的是:
“预测的 100 个 Query 和 GT 的 M 个实例 一一配对,最优匹配。”
匹配依据通常包括:
mask IoU
box IoU(如果有)
mask loss
结果:#
Query #7 ↔ GT #2
Query #23 ↔ GT #1
剩下的 Query → 背景(no-object)
这一步为什么对泛化很重要?#
因为:
Query 从未被绑定成“某一类” 它只学会: “只要结构和条件对,我就负责你。”
Query 最终是怎么变成 mask 的?#
流程极简版:
Query feature
↓
和 dense image feature 做点积
↓
得到一个 mask直觉解释:
Query 学会了一个“模板”, 模板和图像中每个像素算相似度, 相似的地方亮,不相似的地方暗。
那文本 / Concept 是怎么进来的?#
非常关键的一句:
文本不是“告诉 Query 是什么类别”, 而是“调 Query 的关注方向”。
Query 仍然是实例槽
文本只是改变“什么算匹配”
一个极其直观的总结图(文字版)#
[Query 1] ----\
[Query 2] -----\ 看整张图
[Query 3] ------> Image Feature Map
[Query 4] -----/ 谁像我?
[Query 5] ----/最后:
有的 Query 找到了实例
有的 Query 什么都没找到
用一句“能写进论文的通俗解释”#
Detection-style instance queries are learnable slots that independently search the entire image for coherent object-level regions via cross-attention, rather than assigning class labels to individual pixels.
和你研究的直接连接(非常关键)#
你做工业裂缝、缺陷,其实天然适合 Query:
裂缝 ≠ 固定类别
裂缝 = 一段“结构连续区域”
Query 正是“结构优先”的机制
如果你愿意,下一步我可以:#
用你贴的 TransformerEncoderLayer 代码逐行对 Query 流程做“工程级解读”
对比 YOLO anchor / DETR query / SAM prompt 的本质差异
给你一个“工业裂缝 Query 分割”的最小可实现框架
你想从 代码级 还是 和你论文工作结合 的角度继续?

