SAM 3(Segment Anything Model 3) 是 Meta 发布的用于可提示概念分割 (PCS)的基础模型。在 SAM2的基础上,SAM 3 引入了一项全新的能力:detect、segment 和 track 通过文本提示、图像示例或两者指定的所有实例。与之前每个提示分割单个对象的 SAM 版本不同,SAM 3 可以在图像或视频中找到并 segment 概念的每一次出现,这与现代 实例分割中的开放词汇目标保持一致。
SAM 3 现已完全集成到ultralytics包,提供对概念 segment 的原生支持,支持文本提示、图像示例提示以及视频 track 功能。
概述
SAM 3 在可提示概念分割方面比现有系统实现了2 倍的性能提升,同时保持并改进了 SAM 2 在交互式 视觉分割方面的能力。该模型擅长开放词汇分割,允许用户使用简单的名词短语(例如,“黄色校车”、“条纹猫”)或提供目标对象的示例图像来指定概念。这些功能补充了依赖于简化 预测 和 跟踪工作流的生产就绪管道。
可提示概念分割 (PCS) 是什么?
PCS 任务将一个concept prompt作为输入,并返回所有匹配对象实例的具有唯一标识的 segmentation masks。concept prompt 可以是:
- 文本:简单的名词短语,如“红苹果”或“戴帽子的人”,类似于 零样本学习
- 图像示例:围绕示例对象(正或负)的边界框,用于快速泛化
- 组合:文本和图像示例相结合,实现精确控制
这与传统的视觉提示(点、框、掩码)不同,传统视觉提示仅分割单个特定对象实例,这由最初的SAM系列推广开来。
关键性能指标![]()
架构
SAM 3 由一个共享感知编码器 (PE) 视觉骨干网络的检测器和跟踪器组成。这种解耦设计避免了任务冲突,同时实现了图像级 detect 和视频级 track,并提供与 Ultralytics Python用法和 CLI用法兼容的接口。
核心组件
SA-Co数据集
SAM 3 在Segment Anything with Concepts (SA-Co)上进行训练,这是 Meta 迄今为止最大、最多样化的分割数据集,超越了诸如 COCO和 LVIS 等常见基准。
训练数据![]()
检测器:基于DETR的架构,用于图像级概念检测。
- 用于名词短语提示的文本编码器
- 用于基于图像提示的范例编码器
- 融合编码器,根据提示条件化图像特征
- 新颖的存在头,将识别(“是什么”)与定位(“在哪里”)解耦
- 用于生成实例分割掩码的Mask头
跟踪器:继承自 SAM2的基于内存的视频分割
- 提示编码器、掩码解码器、记忆编码器
- 用于存储跨帧对象外观的内存库
- 在多目标场景中,借助卡尔曼滤波等技术实现时间消歧
存在令牌:一个学习到的全局令牌,用于预测目标概念是否存在于图像/帧中,通过将识别与定位分离来改进检测。
主要创新
- 解耦识别与定位:存在头部全局预测概念存在,而提议查询仅关注定位,从而避免了冲突的目标。
- 统一的概念和视觉提示: 在单个模型中同时支持PCS(概念提示)和PVS(视觉提示,如SAM 2的点击/框)。
- 交互式示例 refinement:用户可以添加正面或负面图像示例以迭代地 refinement 结果,模型会泛化到相似对象,而不仅仅是修正单个实例。
- 时序消歧:利用 masklet 检测分数和周期性重新提示来处理视频中的遮挡、拥挤场景和 track 失败,与实例分割和track最佳实践保持一致。
✅SAM系列+科研学术大礼包无偿获取
✅1v1就.业/技.术.指.导+人工智能六大方向学习路线
✅学.术.论.文.辅.导/Kaggle带队/项.目/专.利.辅.导
这份【2026年最新人工智能六大方向学习路线】
从基础入门→科研写作→项目实战→就业进阶带你从 0 逆袭技术大佬!
精选资料包:【一】 人工智能六大方向学习路线
【二】AI基础/深度学习/机器学习/NLP/Pytorch/CV等AI教程
【三】人工智能电子书合集【OpenCV系列书、西瓜书、花书等】
【四】李飞飞+吴恩达+李宏毅等大神合集
【五】自动驾驶+知识图谱+推荐系统等专题资.料
【六】AI交叉学科顶级论文及科研写作工具模板等
基准数据
TheSA-Co评估基准包含21.4万个独特短语,涵盖12.6万张图像和视频,提供了比现有基准多50倍以上的概念。它包括:
SA-Co/Gold:7个领域,经过三重标注以衡量人类性能极限SA-Co/Silver:10个领域,单次人工标注SA-Co/Bronze和SA-Co/Bio:9个适用于概念分割的现有数据集SA-Co/VEval:包含3个领域(SA-V、YT-Temporal-1B、SmartGlasses)的视频基准
数据引擎创新
SAM 3 的可扩展人机协作数据引擎通过以下方式实现了2 倍的标注吞吐量:
- AI 注释器:基于lama的模型提出各种名词短语,包括硬负例
- AI 验证器:经过微调的多模态LLM以接近人类的性能验证掩码质量和详尽性
- 主动挖掘:将人类精力集中在 AI 难以处理的具有挑战性的失败案例上
- 本体驱动:利用基于Wikidata的大型本体进行概念覆盖
安装
SAM 3 在 Ultralytics8.3.237 版本及更高版本中可用。通过以下方式安装或升级:
pip install -U ultralytics如何使用 SAM 3:概念 segment 中的多功能性
SAM 3 通过不同的预测器接口,同时支持可提示概念分割 (PCS) 和可提示视觉分割 (PVS) 任务:
支持的任务和模型![]()
概念分割示例
使用文本提示进行segment
基于文本的概念分割
使用文本描述查找并 segment 概念的所有实例。文本提示需要SAM3SemanticPredictor界面。
from ultralytics.models.sam import SAM3SemanticPredictor # Initialize predictor with configuration overrides = dict( conf=0.25, task="segment", mode="predict", model="sam3.pt", half=True, # Use FP16 for faster inference save=True, ) predictor = SAM3SemanticPredictor(overrides=overrides) # Set image once for multiple queries predictor.set_image("path/to/image.jpg") # Query with multiple text prompts results = predictor(text=["person", "bus", "glasses"]) # Works with descriptive phrases results = predictor(text=["person with red cloth", "person with blue cloth"]) # Query with a single concept results = predictor(text=["a person"])使用图像范例进行segment
基于图像样本的分割
使用边界框作为视觉提示来查找所有相似实例。这还需要SAM3SemanticPredictor用于基于概念的匹配。
from ultralytics.models.sam import SAM3SemanticPredictor # Initialize predictor overrides = dict(conf=0.25, task="segment", mode="predict", model="sam3.pt", half=True, save=True) predictor = SAM3SemanticPredictor(overrides=overrides) # Set image predictor.set_image("path/to/image.jpg") # Provide bounding box examples to segment similar objects results = predictor(bboxes=[[480.0, 290.0, 590.0, 650.0]]) # Multiple bounding boxes for different concepts results = predictor(bboxes=[[539, 599, 589, 639], [343, 267, 499, 662]])基于特征的推理以提高效率
重用图像特征进行多重查询
提取图像特征一次,并将其重复用于多个segmentation查询,以提高效率。
import cv2 from ultralytics.models.sam import SAM3SemanticPredictor from ultralytics.utils.plotting import Annotator, colors # Initialize predictors overrides = dict(conf=0.50, task="segment", mode="predict", model="sam3.pt", verbose=False) predictor = SAM3SemanticPredictor(overrides=overrides) predictor2 = SAM3SemanticPredictor(overrides=overrides) # Extract features from the first predictor source = "path/to/image.jpg" predictor.set_image(source) src_shape = cv2.imread(source).shape[:2] # Setup second predictor and reuse features predictor2.setup_model() # Perform inference using shared features with text prompt masks, boxes = predictor2.inference_features(predictor.features, src_shape=src_shape, text=["person"]) # Perform inference using shared features with bounding box prompt masks, boxes = predictor2.inference_features(predictor.features, src_shape=src_shape, bboxes=[[439, 437, 524, 709]]) # Visualize results if masks is not None: masks, boxes = masks.cpu().numpy(), boxes.cpu().numpy() im = cv2.imread(source) annotator = Annotator(im, pil=False) annotator.masks(masks, [colors(x, True) for x in range(len(masks))]) cv2.imshow("result", annotator.result()) cv2.waitKey(0)视频概念 segment
使用边界框跨视频跟踪概念
结合视觉提示的视频跟踪
使用边界框提示在视频帧中检测和跟踪目标实例。
from ultralytics.models.sam import SAM3VideoPredictor # Create video predictor overrides = dict(conf=0.25, task="segment", mode="predict", model="sam3.pt", half=True) predictor = SAM3VideoPredictor(overrides=overrides) # Track objects using bounding box prompts results = predictor(source="path/to/video.mp4", bboxes=[[706.5, 442.5, 905.25, 555], [598, 635, 725, 750]], stream=True) # Process and display results for r in results: r.show() # Display frame with segmentation masks使用文本提示跟踪概念
结合语义查询的视频跟踪
跟踪跨视频帧由文本指定的所有概念实例。
from ultralytics.models.sam import SAM3VideoSemanticPredictor # Initialize semantic video predictor overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=640, model="sam3.pt", half=True, save=True) predictor = SAM3VideoSemanticPredictor(overrides=overrides) # Track concepts using text prompts results = predictor(source="path/to/video.mp4", text=["person", "bicycle"], stream=True) # Process results for r in results: r.show() # Display frame with tracked objects # Alternative: Track with bounding box prompts results = predictor( source="path/to/video.mp4", bboxes=[[864, 383, 975, 620], [705, 229, 782, 402]], labels=[1, 1], # Positive labels stream=True, )视觉提示 (SAM 2 兼容性)
SAM 3 完全保持与 SAM 2 视觉提示的向后兼容性,用于单目标分割:
SAM 2 风格视觉提示
基本SAM界面行为与 SAM 2 完全一致,仅分割由视觉提示(点、框或掩码)指示的特定区域。
from ultralytics import SAM model = SAM("sam3.pt") # Single point prompt - segments object at specific location results = model.predict(source="path/to/image.jpg", points=[900, 370], labels=[1]) results[0].show() # Multiple points - segments single object with multiple point hints results = model.predict(source="path/to/image.jpg", points=[[400, 370], [900, 370]], labels=[1, 1]) # Box prompt - segments object within bounding box results = model.predict(source="path/to/image.jpg", bboxes=[100, 150, 300, 400]) results[0].show()视觉提示对比概念分割
使用SAM("sam3.pt")带有视觉提示(点/框/掩码)将进行segment仅特定对象在该位置,就像 SAM 2 一样。进行分割某个概念的所有实例,使用SAM3SemanticPredictor带有文本或示例提示,如上所示。
性能基准
图像分割
SAM 3 在多个基准测试中取得了最先进的结果,包括 LVIS 和 COCO for segmentation 等真实世界数据集:
视频 segment 性能
SAM 3 在 DAVIS 2017 和 YouTube-VOS 等视频基准测试中,相较于 SAM 2 和此前最先进的技术,展现出显著改进:
小样本适应
SAM 3 擅长以最少示例适应新领域,这与 以数据为中心的 AI 工作流密切相关:
交互式细化效果
SAM 3 的基于概念的示例提示比视觉提示收敛速度快得多:
对象计数准确性
SAM 3 通过分割所有实例提供准确的计数,这是 目标计数 中的常见需求:
SAM 3 vs SAM 2 vs YOLO 对比
在此,我们将SAM 与SAM 及YOLO26模型的功能进行比较:
在NVIDIA PRO 6000 上进行的性能测试,使用torch==2.9.1和ultralytics==8.4.19.
要点:
- SAM 3:最适合开放词汇概念分割,通过文本或示例提示查找概念的所有实例
- SAM 2:最适合在图像和视频中使用几何提示进行交互式单目标分割
- YOLO26:最适合实时、高速分割任务,支持NMS端到端推理,可导出多种格式,适用于GPU、CPU和边缘设备部署
SAM 与 YOLO 的比较
将SAM 、SAM 、SAM、MobileSAM 和FastSAM Ultralytics YOLO 模型(YOLOv8、YOLO11、YOLO26)在模型大小、参数数量和GPU 进行对比:
本次比较展示了SAM变体和YOLO分割模型在模型尺寸和速度上的显著差异。尽管SAM提供了独特的自动分割能力,但YOLO模型,特别是YOLOv8n-seg、YOLO11n-seg和YOLO26n-seg,则显著更小、更快且计算效率更高。
测试在配备 96GB 显存的 NVIDIA RTX PRO 6000 上运行,使用torch==2.9.1和ultralytics==8.4.19。要重现此测试:
from ultralytics import ASSETS, SAM, YOLO, FastSAM # Profile SAM3, SAM2-t, SAM2-b, SAM-b, MobileSAM for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt", "sam3.pt"]: model = SAM(file) model.info() model(ASSETS) # Profile FastSAM-s model = FastSAM("FastSAM-s.pt") model.info() model(ASSETS) # Profile YOLO models for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]: model = YOLO(file_name) model.info() model(ASSETS)评估指标
SAM 3 引入了专为 PCS 任务设计的新指标,补充了诸如 F1 分数、精确度 和 召回率 等熟悉度量。
分类门控F1 (CGF1)
结合定位和分类的主要指标是:
CGF1 = 100 × pmF1 × IL_MCC
其中:
- pmF1(正向宏F1):衡量正样本上的定位质量
- IL_MCC(图像级马修斯相关系数):衡量二元分类准确性(“概念是否存在?”)
为什么选择这些指标?
传统的 AP 指标不考虑校准,使得模型在实践中难以使用。通过仅评估置信度高于 0.5 的预测,SAM 3 的指标强制执行良好的校准,并模拟交互式 predict 和 track 循环中的实际使用模式。
关键消融实验和见解
存在头的影响
存在头将识别与定位解耦,提供了显著改进:
存在头提供了+5.7 CGF1 的提升(+9.9%),主要提高了识别能力 (IL_MCC +6.5%)。
难例负样本的影响
难负样本对于开放词汇识别至关重要,将 IL_MCC 提高了54.5%(0.44 → 0.68)。
训练数据扩展
高质量人工标注相比单独使用合成数据或外部数据,能带来显著提升
应用
SAM 3 的概念分割能力开辟了新的应用场景:
- 内容审核:在媒体库中查找所有特定内容类型的实例
- 电子商务:在目录图像中分割特定类型的所有产品,支持自动标注。
- 医学成像:识别特定组织类型或异常的所有出现
- 自主系统:按类别 track 交通标志、行人或车辆的所有实例
- 视频分析:计数并 track 所有穿着特定服装或执行动作的人
- 数据集标注:快速标注稀有目标类别的所有实例
- 科学研究:量化并分析所有符合特定标准的样本
SAM 3 代理:扩展语言推理
SAM 3 可以与多模态大型语言模型 (MLLM) 结合,以处理需要推理的复杂查询,其理念类似于 OWLv2 和 T-Rex 等开放词汇系统。
在推理任务上的性能![]()
复杂查询示例
SAM 3 代理可以处理需要推理的查询:
- “坐着但没有拿着礼品盒的人”
- “离相机最近的没有戴项圈的狗”
- “比人的手大的红色物体”
MLLM 向 SAM 3 提出简单的名词短语查询,分析返回的掩码,并迭代直到满意。
局限性
尽管 SAM 3 代表了一项重大进步,但它也存在某些局限性:
- 短语复杂度:最适合简单的名词短语;长的指代表达或复杂的推理可能需要 MLLM 集成。
- 歧义处理:某些概念本质上仍然模棱两可(例如,“小窗户”、“舒适的房间”)
- 计算要求:比 YOLO等专用检测模型更大、更慢
- 词汇范围:专注于原子视觉概念;在没有 MLLM 协助的情况下,组合推理能力有限。
- 稀有概念:在训练数据中未充分表示的极其稀有或细粒度概念上,性能可能会下降。
引用
@inproceedings{sam3_2025, title = {SAM 3: Segment Anything with Concepts}, author = {Anonymous authors}, booktitle = {Submitted to ICLR 2026}, year = {2025}, url = {https://openreview.net/forum?id=r35clVtGzw}, note = {Paper ID: 4183, under double-blind review} }常见问题
SAM 3 是何时发布的?
SAM 3 由 Meta 于2025 年 11 月 20 日发布,并自版本 8.3.237(PR #22897) 起已完全集成到 Ultralytics 中。现已全面支持 预测模式和 track 模式。
SAM 3 是否已集成到 Ultralytics 中?
没错!SAM 已完全集成到Ultralytics Python ,涵盖概念分割、SAM 视觉提示以及多目标视频跟踪功能。SAM 还为Ultralytics 智能标注功能提供支持,您只需点击几下即可对图像进行标注。
可提示概念分割 (PCS) 是什么?
PCS 是 SAM 3 中引入的一项新任务,它用于 segment 图像或视频中视觉概念的所有实例。与针对特定对象实例的传统 segment 不同,PCS 能够找到某个类别的所有出现。例如:
- 文本提示:“黄色校车” → 分割场景中所有黄色校车
- 图像示例:框选一只狗 → segment图像中所有狗
- 组合:“条纹猫” + 示例框 → segment 所有与示例匹配的条纹猫
SAM 3与SAM 2有何不同?![]()
SAM 3 保持与 SAM 2 视觉提示的向后兼容性,同时增加了基于概念的功能。
SAM 3使用哪些数据集进行训练?
SAM 3 在Segment Anything with Concepts (SA-Co)数据集上进行训练:
训练数据:
- 520 万张图像,包含400 万个独特的名词短语(SA-Co/HQ) - 高质量人工标注
- 5.25 万个视频,包含2.48 万个独特的名词短语(SA-Co/VIDEO)
- 1.4B 合成遮罩遍及38M 名词短语(SA-Co/SYN)
- 15 个外部数据集使用难分辨的负样本进行了丰富 (SA-Co/EXT)
基准数据:
- 214K 独特概念遍及126K 图像/视频
- 比现有基准多 50 倍的概念(例如,LVIS 有约 4K 个概念)
- 对 SA-Co/Gold 进行三重标注,以衡量人类性能边界
这种大规模和多样性使得 SAM 3 能够实现跨越开放词汇概念的卓越零样本泛化能力。
在分割任务中,SAM 与 YOLO26 相比表现如何?
SAM 和 YOLO26 适用于不同的应用场景:
SAM 3 优势:
- 开放词汇:通过文本提示分割任何概念,无需训练
- 零样本:立即适用于新类别
- 交互式:基于示例的 refinement 泛化到相似对象
- 基于概念:自动查找某个类别的所有实例
- 精度:LVIS 零样本实例分割的 47.0 AP
YOLO26 的优势:
- 速度:采用NMS端到端设计,推理速度提升数个数量级
- 效率:模型体积缩小了539倍(6.4MB 对比 3.45GB)
- 资源友好型:可在边缘设备和移动设备上运行
- 实时:针对生产部署进行了优化
推荐:
- 使用SAM 3进行灵活的开放词汇segmentation,您需要找到由文本或示例描述的概念的所有实例
- 在已知类别的高速生产部署场景中,请使用YOLO26
- 使用SAM 2进行交互式单目标segmentation,并结合几何提示
SAM 3能处理复杂的语言查询吗?
SAM 3 专为简单名词短语设计(例如,“红苹果”,“戴帽子的人”)。对于需要推理的复杂查询,将 SAM 3 与 MLLM 结合作为SAM 3 Agent:
简单查询 (原生SAM 3):
- “黄色校车”
- “条纹猫”
- “戴着红帽子的人”
复杂查询(带MLLM的SAM 3 Agent):
- “坐着但没有拿着礼品盒的人”
- “离相机最近的没有项圈的狗”
- “比人的手大的红色物体”
SAM 3 代理通过将 SAM 3 的分割与 MLLM 推理能力相结合,在 ReasonSeg 验证中实现了76.0 GIoU(而之前的最佳成绩为 65.0,提高了 16.9%)。
SAM 3 与人类表现相比,准确度如何?
在 SA-Co/Gold 基准测试中,采用三重人工标注:
- 人工下限:74.2 CGF1(最保守的标注者)
- SAM 3 性能:65.0 CGF1
- 成就:估计人类下限的88%
- 人类上限:81.4 CGF1(最宽松的标注者)
SAM 3 在开放词汇概念分割方面取得了接近人类水平的强大性能,差距主要体现在模糊或主观概念(例如,“小窗户”、“舒适的房间”)上。