# 1 如果说 SAM 1 开启了“指哪打哪”的几何提示分割时代,SAM 2 将这种能力扩展到了视频的时间维度,那么 SAM 3 则是一次质的飞跃——它实现了从“分割任意物体”到“分割任意概念”的跨越。这就是我们今天要讨论的主题:**SAM 3: Segment Anything with Concepts**。 # 2 首先,让我们回顾一下 SAM 系列的演进历程,这有助于我们理解 SAM 3 的定位。 * **SAM 1 (Promptable Visual Segmentation on Images):** 大家看左上角。SAM 1 的核心是处理静态图像。它的提示(Prompt)主要是点、框或者粗略的 Mask。这类提示是**几何性**的,意味着用户必须明确指出目标在图像中的位置。它的任务是把用户指出的那个**特定物体**分割出来。 * **SAM 2 (Promptable Visual Segmentation on Video):** 再看左下角。SAM 2 将这种几何提示扩展到了视频。用户在第一帧给出一个提示,模型需要在后续的时间轴上持续追踪并分割这个物体。虽然引入了时间维度,但本质上,它处理的还是**特定物体**的轨迹。 * **SAM 3 (Promptable Concept Segmentation):** 现在看右边。SAM 3 引入了全新的 **Promptable Concept Segmentation (PCS)** 任务。这里的提示不再局限于几何坐标,而是升级为**概念(Concepts)**。用户可以直接输入文本(如 "a striped cat")或者提供几张示例图(Image Exemplar)。模型的任务变成了:在图像或视频中,自动寻找、识别并分割所有符合这个概念的实例。 所以,SAM 3 并没有抛弃前两者的能力,而是兼容了它们,是一个集大成者。 # 3 要实现 SAM 3 这种“懂概念”的能力,最关键的是一个强大的 Backbone。 我们回顾之前的模型: * **ViT / MAE (SAM 1 的基石):** 因为它不懂文本。SAM1 里用的是一个 MAE 预训练的 ViT 做 image encoder。MAE 的训练任务很单纯:把图像切成很多 patch,随机遮掉大部分 patch,让网络根据剩下的 patch 去重建被遮住的像素。换句话说,这个 ViT 在预训练阶段,一直在练习“你给我半张图,我把另一半补出来”,从来没人要求它去对一个词、一个短语,也没人要求它回答“这里有几只猫”这种语义问题。这种训练方式会让网络特别擅长学到 几何结构和外观模式:哪里是物体的主体,哪里是背景,哪里有边缘、纹理这些东西。所以给 SAM1 一个点或者一个框的时候,它很会做一件事:围绕这个提示,把连在一起的那一坨区域抠出来——这就是为什么它在“点一点出一个 mask”这种交互分割里很强。它的特征空间里没有任何地方被要求去和文本对齐:既没有在预训练里看过文本,又没有在分割数据里配过文本标签,训练目标也完全是“点 → mask”。 * **CLIP:** 但是SAM1实际上是支持text的,做法其实是单独用一个 CLIP 文本编码器把句子编码成几个 token,再和图像特征做 cross-attention。标准的 CLIP的Contrastive pre-training部分,将整张图和整句话进行配对,为了完成这个配对,模型只需要“看懂”图里主要有什么。比如看到毛茸茸的东西、耷拉的耳朵,它就能和“澳洲小狗”这句话连上线.这个过程强迫模型学会了极其强大的语义理解能力,这就是为什么它做分类很厉害。为了方便和文本向量进行数学计算,CLIP 的 Image Encoder 像一台榨汁机,把整张二维的图片“压扁”成了一个一维的向量。在这个“压扁”的过程中,“是什么”(语义信息,如果汁的味道)被完美保留了。但是,“在哪里”(空间信息,如苹果原本在篮子的哪个位置)被混合了、丢弃了。 因此,SAM 3 引入了一个全新的 Backbone,叫做 Perception Encoder (PE) 。这是一个通过海量图文对比学习训练出来的模型,同时解决识别和定位的问题 PE Core 巧妙地融合了两种训练策略,它继承了 CLIP 的 大规模对比学习(Contrastive Pretraining) ,利用海量的图文对进行训练,这赋予了模型强大的开放词汇理解能力,但为了避免像 CLIP 那样丢失空间细节,PE 引入了 遮蔽正则化(Masked Regularization) 。简单来说,就是像 MAE 那样在训练时遮住图片的一部分,强迫模型通过上下文去预测缺失的特征。这种机制迫使模型必须关注局部的、细粒度的空间结构,而不能只看个‘大概’。” # 4 这是 PE 这篇论文最精彩的发现。PE 的论文揭示了一个反直觉的现象,最好的视觉特征,并不在网络的末端,随着网络层数加深,特征会变得越来越抽象和全局化。对于像 目标跟踪(Tracking) 这样依赖精确空间对应的任务,表现最好的特征其实隐藏在网络的 中间层(比如第 30 层左右) 。而到了第 40 层往后,语义变强了,但空间细节却开始丢失。 这是因为深层的 Transformer 会开始产生“全局 Token”,破坏局部的空间对应关系 。因此,SAM 3 的 Backbone 并不是简单拿来就用,而是经过了特殊的 Spatial Alignment,强行把中间层的空间能力“对齐”到输出层 作者做了一个很简单的实验,在每一层的特征上加一个很小的头,分别去做分类任务、语言类任务和空间类任务,看看哪一层最适合哪一件事 最上面那一排 Classification。这里的 ImageNet 分类准确率,在越靠近最后一层的时候越高,最佳层基本在 Backbone 顶部。这说明对于“整张图打一个类别标签”这种任务,我们习惯用的最后一层,全局语义是最强的,这和我们对 CLIP 的印象是一致的。 对比 Classification(第一行)和 Tracking(最后一行) Classification中,曲线一路走高,在最后一层(Layer 50)达到最高点 。这说明网络的深层在不断聚合信息,形成最强的全局语义表示 Tracking (DAVIS)请看最底部的紫色曲线。它的峰值不在最后,而在 Layer 32 左右 。这说明在中间层,模型保留了极佳的空间对应关系。往后的层,网络开始为了迎合对比学习的目标(全局对齐),引入了“全局 Token”或者将特征过度抽象化,从而破坏了像素级的空间细节 对比 Spatial Tasks(空间任务)和 Language Modeling(语言任务) Detection (COCO) & Depth (NYU): 同样看第三行。你会发现它们的最佳性能也出现在 中间层(Layer 39 左右),而不是最后一层 。最后一层的特征对于这些需要精细定位的任务来说,太“抽象”了 PE core 表现其实非常出色,甚至媲美专门做空间任务的模型(如中间列的 DINOv2),但这些能力是(Hidden)的。如果我们只用最后一层的输出,我们会误以为对比学习模型做不了定位,这就是为什么 SAM 3 不直接接在 Backbone 的末尾,而是通过 Alignment Tuning 把这些位于 Layer 30\~40 的黄金特征提取出来,分别送给 Tracker 和 Detector Alignment Tuning实际上做了什么呢,主要是一些Spatial Alignment的内容,包括自我蒸馏,也就是让最后一层去模仿中间语义和空间平衡得最好的层。因为输入的特征图中已经包含了高质量的空间对应关系(Spatial Correspondence)和语义线索,所以后续的Detector 的 Object Query 不需要从零开始去猜测物体在哪里,它只需要在这些高质量特征上进行“解码”即可 # 5 有了 PE 这个强大的基石,我们来看看 SAM 3 的整体架构。这是一个“双分支”设计。 1. **输入:** 图像/视频帧,加上文本概念或几何提示。 2. **Backbone:** 统一经过 Perception Encoder 提取特征。 3. **Detector 分支 (黄色):** 这是 SAM 3 的新核心。它接收文本/示例提示,负责在单帧图像上解决 **"What & Where"** 的问题——即识别概念并定位所有实例。 4. **Tracker 分支 (蓝色):** 继承自 SAM 2。它接收 Detector 发现的对象(初始化为 Masklet),负责在视频时间轴上解决 **"When & Who"** 的问题——即持续追踪这些对象。 5. **Masklet Matcher:** 在两者之间起桥梁作用,负责把新检测到的物体和正在追踪的轨迹进行匹配和管理。 # 6 * **Injecting Concepts (概念注入):** 请看左下角。文本特征和几何/示例特征进入中间的 **Multimodal Decoder**。在这里,模型利用 Cross-Attention 将“概念”注入到图像特征中。这相当于给图像特征戴上了一副“语义滤镜”,只有符合“红苹果”概念的区域会被激活。 * **The Presence Head (存在性判断):** 请看右上角的绿色圆点。这是一个非常巧妙的设计。传统的检测器既要找框又要分类,在开放世界里很容易出错(比如把像猫的石头认成猫)。SAM 3 引入了一个全局的 **Presence Token**,它只负责回答一个问题:**“这张图里到底有没有这个概念?”**。 * 如果它说“无”,那么所有 Object Queries 的定位结果都会被一票否决。这种 **识别与定位的解耦**,极大地降低了误检率。 * **Handling Ambiguity (处理歧义):** 右下角的 Heads 其实采用了 **Mixture of Experts (MoE)** 机制。针对同一个 Query,它会预测多个可能的 Mask(比如“车轮”和“轮胎”),训练时只奖励最好的那个 Expert,从而让模型学会处理歧义。 # 7 虽然 SAM 3 很强,但它只能理解名词短语(Noun Phrases)。如果你问它:“找到那个没被咬过的红苹果”,这种包含复杂逻辑推理的指令,它就无能为力了。 为了解决这个问题,作者提出了 **SAM 3 Agent**。 * **核心思想:** 不强求一个模型做完所有事。把 SAM 3 降级为一个纯粹的、高性能的 **“视觉工具 (Visual Tool)”**,而让更强大的多模态大语言模型(MLLM)充当 **“大脑 (Planner)”**。 * **工作流:** MLLM 分析用户指令 -> 拆解成简单的名词短语 -> 调用 SAM 3 获取所有候选 Mask -> MLLM 观察 Mask 并进行逻辑筛选 -> 输出最终结果。 Loading... # 1 如果说 SAM 1 开启了“指哪打哪”的几何提示分割时代,SAM 2 将这种能力扩展到了视频的时间维度,那么 SAM 3 则是一次质的飞跃——它实现了从“分割任意物体”到“分割任意概念”的跨越。这就是我们今天要讨论的主题:**SAM 3: Segment Anything with Concepts**。 # 2 首先,让我们回顾一下 SAM 系列的演进历程,这有助于我们理解 SAM 3 的定位。 * **SAM 1 (Promptable Visual Segmentation on Images):** 大家看左上角。SAM 1 的核心是处理静态图像。它的提示(Prompt)主要是点、框或者粗略的 Mask。这类提示是**几何性**的,意味着用户必须明确指出目标在图像中的位置。它的任务是把用户指出的那个**特定物体**分割出来。 * **SAM 2 (Promptable Visual Segmentation on Video):** 再看左下角。SAM 2 将这种几何提示扩展到了视频。用户在第一帧给出一个提示,模型需要在后续的时间轴上持续追踪并分割这个物体。虽然引入了时间维度,但本质上,它处理的还是**特定物体**的轨迹。 * **SAM 3 (Promptable Concept Segmentation):** 现在看右边。SAM 3 引入了全新的 **Promptable Concept Segmentation (PCS)** 任务。这里的提示不再局限于几何坐标,而是升级为**概念(Concepts)**。用户可以直接输入文本(如 "a striped cat")或者提供几张示例图(Image Exemplar)。模型的任务变成了:在图像或视频中,自动寻找、识别并分割所有符合这个概念的实例。 所以,SAM 3 并没有抛弃前两者的能力,而是兼容了它们,是一个集大成者。 # 3 要实现 SAM 3 这种“懂概念”的能力,最关键的是一个强大的 Backbone。 我们回顾之前的模型: * **ViT / MAE (SAM 1 的基石):** 因为它不懂文本。SAM1 里用的是一个 MAE 预训练的 ViT 做 image encoder。MAE 的训练任务很单纯:把图像切成很多 patch,随机遮掉大部分 patch,让网络根据剩下的 patch 去重建被遮住的像素。换句话说,这个 ViT 在预训练阶段,一直在练习“你给我半张图,我把另一半补出来”,从来没人要求它去对一个词、一个短语,也没人要求它回答“这里有几只猫”这种语义问题。这种训练方式会让网络特别擅长学到 几何结构和外观模式:哪里是物体的主体,哪里是背景,哪里有边缘、纹理这些东西。所以给 SAM1 一个点或者一个框的时候,它很会做一件事:围绕这个提示,把连在一起的那一坨区域抠出来——这就是为什么它在“点一点出一个 mask”这种交互分割里很强。它的特征空间里没有任何地方被要求去和文本对齐:既没有在预训练里看过文本,又没有在分割数据里配过文本标签,训练目标也完全是“点 → mask”。 * **CLIP:** 但是SAM1实际上是支持text的,做法其实是单独用一个 CLIP 文本编码器把句子编码成几个 token,再和图像特征做 cross-attention。标准的 CLIP的Contrastive pre-training部分,将整张图和整句话进行配对,为了完成这个配对,模型只需要“看懂”图里主要有什么。比如看到毛茸茸的东西、耷拉的耳朵,它就能和“澳洲小狗”这句话连上线.这个过程强迫模型学会了极其强大的语义理解能力,这就是为什么它做分类很厉害。为了方便和文本向量进行数学计算,CLIP 的 Image Encoder 像一台榨汁机,把整张二维的图片“压扁”成了一个一维的向量。在这个“压扁”的过程中,“是什么”(语义信息,如果汁的味道)被完美保留了。但是,“在哪里”(空间信息,如苹果原本在篮子的哪个位置)被混合了、丢弃了。 因此,SAM 3 引入了一个全新的 Backbone,叫做 Perception Encoder (PE) 。这是一个通过海量图文对比学习训练出来的模型,同时解决识别和定位的问题 PE Core 巧妙地融合了两种训练策略,它继承了 CLIP 的 大规模对比学习(Contrastive Pretraining) ,利用海量的图文对进行训练,这赋予了模型强大的开放词汇理解能力,但为了避免像 CLIP 那样丢失空间细节,PE 引入了 遮蔽正则化(Masked Regularization) 。简单来说,就是像 MAE 那样在训练时遮住图片的一部分,强迫模型通过上下文去预测缺失的特征。这种机制迫使模型必须关注局部的、细粒度的空间结构,而不能只看个‘大概’。” # 4 这是 PE 这篇论文最精彩的发现。PE 的论文揭示了一个反直觉的现象,最好的视觉特征,并不在网络的末端,随着网络层数加深,特征会变得越来越抽象和全局化。对于像 目标跟踪(Tracking) 这样依赖精确空间对应的任务,表现最好的特征其实隐藏在网络的 中间层(比如第 30 层左右) 。而到了第 40 层往后,语义变强了,但空间细节却开始丢失。 这是因为深层的 Transformer 会开始产生“全局 Token”,破坏局部的空间对应关系 。因此,SAM 3 的 Backbone 并不是简单拿来就用,而是经过了特殊的 Spatial Alignment,强行把中间层的空间能力“对齐”到输出层 作者做了一个很简单的实验,在每一层的特征上加一个很小的头,分别去做分类任务、语言类任务和空间类任务,看看哪一层最适合哪一件事 最上面那一排 Classification。这里的 ImageNet 分类准确率,在越靠近最后一层的时候越高,最佳层基本在 Backbone 顶部。这说明对于“整张图打一个类别标签”这种任务,我们习惯用的最后一层,全局语义是最强的,这和我们对 CLIP 的印象是一致的。 对比 Classification(第一行)和 Tracking(最后一行) Classification中,曲线一路走高,在最后一层(Layer 50)达到最高点 。这说明网络的深层在不断聚合信息,形成最强的全局语义表示 Tracking (DAVIS)请看最底部的紫色曲线。它的峰值不在最后,而在 Layer 32 左右 。这说明在中间层,模型保留了极佳的空间对应关系。往后的层,网络开始为了迎合对比学习的目标(全局对齐),引入了“全局 Token”或者将特征过度抽象化,从而破坏了像素级的空间细节 对比 Spatial Tasks(空间任务)和 Language Modeling(语言任务) Detection (COCO) & Depth (NYU): 同样看第三行。你会发现它们的最佳性能也出现在 中间层(Layer 39 左右),而不是最后一层 。最后一层的特征对于这些需要精细定位的任务来说,太“抽象”了 PE core 表现其实非常出色,甚至媲美专门做空间任务的模型(如中间列的 DINOv2),但这些能力是(Hidden)的。如果我们只用最后一层的输出,我们会误以为对比学习模型做不了定位,这就是为什么 SAM 3 不直接接在 Backbone 的末尾,而是通过 Alignment Tuning 把这些位于 Layer 30\~40 的黄金特征提取出来,分别送给 Tracker 和 Detector Alignment Tuning实际上做了什么呢,主要是一些Spatial Alignment的内容,包括自我蒸馏,也就是让最后一层去模仿中间语义和空间平衡得最好的层。因为输入的特征图中已经包含了高质量的空间对应关系(Spatial Correspondence)和语义线索,所以后续的Detector 的 Object Query 不需要从零开始去猜测物体在哪里,它只需要在这些高质量特征上进行“解码”即可 # 5 有了 PE 这个强大的基石,我们来看看 SAM 3 的整体架构。这是一个“双分支”设计。 1. **输入:** 图像/视频帧,加上文本概念或几何提示。 2. **Backbone:** 统一经过 Perception Encoder 提取特征。 3. **Detector 分支 (黄色):** 这是 SAM 3 的新核心。它接收文本/示例提示,负责在单帧图像上解决 **"What & Where"** 的问题——即识别概念并定位所有实例。 4. **Tracker 分支 (蓝色):** 继承自 SAM 2。它接收 Detector 发现的对象(初始化为 Masklet),负责在视频时间轴上解决 **"When & Who"** 的问题——即持续追踪这些对象。 5. **Masklet Matcher:** 在两者之间起桥梁作用,负责把新检测到的物体和正在追踪的轨迹进行匹配和管理。 # 6 * **Injecting Concepts (概念注入):** 请看左下角。文本特征和几何/示例特征进入中间的 **Multimodal Decoder**。在这里,模型利用 Cross-Attention 将“概念”注入到图像特征中。这相当于给图像特征戴上了一副“语义滤镜”,只有符合“红苹果”概念的区域会被激活。 * **The Presence Head (存在性判断):** 请看右上角的绿色圆点。这是一个非常巧妙的设计。传统的检测器既要找框又要分类,在开放世界里很容易出错(比如把像猫的石头认成猫)。SAM 3 引入了一个全局的 **Presence Token**,它只负责回答一个问题:**“这张图里到底有没有这个概念?”**。 * 如果它说“无”,那么所有 Object Queries 的定位结果都会被一票否决。这种 **识别与定位的解耦**,极大地降低了误检率。 * **Handling Ambiguity (处理歧义):** 右下角的 Heads 其实采用了 **Mixture of Experts (MoE)** 机制。针对同一个 Query,它会预测多个可能的 Mask(比如“车轮”和“轮胎”),训练时只奖励最好的那个 Expert,从而让模型学会处理歧义。 # 7 虽然 SAM 3 很强,但它只能理解名词短语(Noun Phrases)。如果你问它:“找到那个没被咬过的红苹果”,这种包含复杂逻辑推理的指令,它就无能为力了。 为了解决这个问题,作者提出了 **SAM 3 Agent**。 * **核心思想:** 不强求一个模型做完所有事。把 SAM 3 降级为一个纯粹的、高性能的 **“视觉工具 (Visual Tool)”**,而让更强大的多模态大语言模型(MLLM)充当 **“大脑 (Planner)”**。 * **工作流:** MLLM 分析用户指令 -> 拆解成简单的名词短语 -> 调用 SAM 3 获取所有候选 Mask -> MLLM 观察 Mask 并进行逻辑筛选 -> 输出最终结果。 最后修改:2025 年 11 月 20 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏