SAM 3: 基于概念的图像分割
自 8.3.237 版本 (PR #22897) 起,SAM 3 已完全集成到 Ultralytics 软件包中。请使用 pip install -U ultralytics 安装或升级,以体验 SAM 3 的所有功能,包括基于文本的概念分割、图像范例提示和视频跟踪。
SAM 3 (Segment Anything Model 3) 是 Meta 发布的用于 可提示概念分割 (PCS) 的基础模型。SAM 3 在 SAM 2 的基础上,引入了一项全新的基础能力:检测、分割并跟踪文本提示或图像范例中指定的视觉概念的所有实例。与以往每个提示仅分割单个对象的 SAM 版本不同,SAM 3 可以查找并分割图像或视频中出现的每一个概念实例,这与现代 实例分割 中的开放词汇目标保持一致。
Watch: How to Use Meta Segment Anything 3 with Ultralytics | Text-Prompt Segmentation on Images & Videos
SAM 3 现已完全集成到 ultralytics 软件包中,为基于文本提示、图像范例提示和视频跟踪功能的概念分割提供原生支持。
概述
在可提示概念分割任务中,SAM 3 相比现有系统实现了 2 倍的性能提升,同时保持并改进了 SAM 2 的交互式 视觉分割 能力。该模型在开放词汇分割方面表现出色,允许你使用简单的名词短语(例如“黄色校车”、“条纹猫”)或提供目标对象的示例图像来指定概念。这些能力可以很好地补充依赖于简化 预测 和 跟踪 工作流的生产环境流水线。
什么是可提示概念分割 (PCS)?
PCS 任务以 概念提示 作为输入,并返回具有唯一标识的 所有匹配对象实例 的分割掩码。概念提示可以是:
- 文本:简单的名词短语,如“红苹果”或“戴帽子的男人”,类似于 零样本学习
- 图像范例:围绕示例对象(正向或负向)的边界框,用于实现快速泛化
- 组合:同时使用文本和图像范例,以实现精确控制
这与传统的视觉提示(点、框、掩码)不同,传统方式仅分割单个特定对象实例,正如最初的 SAM 系列 所普及的那样。
关键性能指标
| 指标 | SAM 3 表现 |
|---|---|
| LVIS 零样本掩码 AP | 47.0 (此前最好成绩为 38.5,提升了 22%) |
| SA-Co 基准测试 | 比现有系统 好 2 倍 |
| 推理速度 (H200 GPU) | 每张图像 30 毫秒,可检测 100+ 个对象 |
| 视频性能 | 对于约 5 个并发对象接近实时 |
| MOSEv2 VOS 基准测试 | 60.1 J&F (比 SAM 2.1 提升 25.5%,比之前最佳 SOTA 提升 17%) |
| 交互式细化 | 3 个范例提示后提升 +18.6 CGF1 |
| 人类性能差距 | 在 SA-Co/Gold 上达到估计下限的 88% |
有关生产中模型指标和权衡的背景信息,请参阅 模型评估洞察 和 YOLO 性能指标。
架构
SAM 3 由共享感知编码器 (PE) 视觉骨干网络的 检测器 和 跟踪器 组成。这种解耦设计避免了任务冲突,同时实现了图像级检测和视频级跟踪,并具备与 Ultralytics Python 使用方式 和 CLI 使用方式 兼容的接口。
核心组件
-
检测器:用于图像级概念检测的 基于 DETR 的架构
- 用于名词短语提示的文本编码器
- 用于基于图像的提示的范例编码器
- 用于根据提示调节图像特征的融合编码器
- 新颖的 存在头 (presence head),将识别(“是什么”)与定位(“在哪里”)解耦
- 用于生成实例分割掩码的掩码头
-
跟踪器:继承自 SAM 2 的基于内存的视频分割
- 提示编码器、掩码解码器、内存编码器
- 用于在帧间存储对象外观的内存库
- 在多对象设置中,通过 卡尔曼滤波器 等技术辅助进行时间消歧
-
存在令牌:一个学习到的全局令牌,用于预测目标概念是否存在于图像/帧中,通过将识别与定位分离来提高检测效果。
关键创新
- 解耦识别与定位:存在头在全局预测概念的存在,而提议查询仅专注于定位,避免了目标冲突。
- 统一的概念和视觉提示:在单个模型中支持 PCS(概念提示)和 PVS(如 SAM 2 的点击/框等视觉提示)。
- 交互式范例细化:你可以添加正向或负向图像范例来迭代细化结果,模型会泛化到相似对象,而不仅仅是纠正单个实例。
- 时间消歧:使用掩码检测分数和周期性重新提示来处理视频中的遮挡、拥挤场景和跟踪失败,这与 实例分割和跟踪 的最佳实践保持一致。
SA-Co 数据集
SAM 3 是在 Segment Anything with Concepts (SA-Co) 上进行训练的,这是 Meta 迄今为止最大、最多样化的分割数据集,超越了 COCO 和 LVIS 等常见基准。
训练数据
| 数据集组件 | 描述 | 规模 |
|---|---|---|
| SA-Co/HQ | 来自四阶段数据引擎的高质量人工标注图像数据 | 520 万张图像,400 万个唯一名词短语 |
| SA-Co/SYN | 由 AI 在无人参与的情况下标记的合成数据集 | 3800 万个名词短语,14 亿个掩码 |
| SA-Co/EXT | 15 个富含难负样本的外部数据集 | 因来源而异 |
| SA-Co/VIDEO | 带有时间跟踪的视频标注 | 5.25 万个视频,2.48 万个唯一名词短语 |
基准数据
SA-Co 评估基准 包含跨 12.6 万张图像和视频 的 21.4 万个唯一短语,提供的概念比现有基准多 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 标注器:基于 Llama 的模型提出多样化的名词短语,包括难负样本
- AI 验证器:微调后的 多模态 LLM 以近乎人类的性能验证掩码的质量和完整性
- 主动挖掘:将人力集中在 AI 表现不佳的挑战性失败案例上
- 本体驱动:利用基于 Wikidata 的大型本体来实现概念覆盖
安装
SAM 3 可在 Ultralytics 8.3.237 及更高版本 中使用。请使用以下命令安装或升级:
pip install -U ultralytics与其他 Ultralytics 模型不同,SAM 3 权重 (sam3.pt) 不会自动下载。你必须先在 Hugging Face 上的 SAM 3 模型页面 请求模型权重访问权限,批准后,再从该页面下载 sam3.pt。将下载的 sam3.pt 文件放入你的工作目录,或者在加载模型时指定完整路径。
如果在预测过程中遇到上述错误,说明你安装的 clip 包不正确。请运行以下命令安装正确的 clip 包:
pip uninstall clip -y
pip install git+https://github.com/ultralytics/CLIP.git如何使用 SAM 3:概念分割的多功能性
SAM 3 通过不同的预测器接口支持可提示概念分割 (PCS) 和可提示视觉分割 (PVS) 任务:
支持的任务和模型
| 任务类型 | 提示类型 | 输出 |
|---|---|---|
| 概念分割 (PCS) | 文本(名词短语)、图像范例 | 与概念匹配的所有实例 |
| 视觉分割 (PVS) | 点、框、掩码 | 单个对象实例(SAM 2 风格) |
| 交互式细化 | 迭代添加/移除范例或点击 | 精度更高的细化分割 |
概念分割示例
通过文本提示进行分割
使用文本描述查找并分割所有概念实例。文本提示需要使用 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"])通过图像示例进行分割
使用边界框作为视觉提示来查找所有相似实例。这同样需要使用 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]])基于特征的推理以提升效率
提取一次图像特征并将其重用于多次分割查询,以提高效率。
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)视频概念分割
通过边界框跨视频跟踪概念
使用边界框提示检测并跟踪跨视频帧的对象实例。
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 接口行为与 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") 配合视觉提示(点/框/掩码)将仅分割该位置的特定对象,就像 SAM 2 一样。要分割某一概念的所有实例,请按上述方式使用带有文本或示例提示的 SAM3SemanticPredictor。
性能基准测试
图像分割
SAM 3 在多个基准测试中达到了最先进的水平,包括 LVIS 和 COCO for segmentation 等现实世界数据集:
| 基准测试 | 指标 | SAM 3 | 先前最佳 | 提升幅度 |
|---|---|---|---|---|
| LVIS (零样本) | Mask AP | 47.0 | 38.5 | +22.1% |
| SA-Co/Gold | CGF1 | 65.0 | 34.3 (OWLv2) | +89.5% |
| COCO (零样本) | Box AP | 53.5 | 52.2 (T-Rex2) | +2.5% |
| ADE-847 (语义分割) | mIoU | 14.7 | 9.2 (APE-D) | +59.8% |
| PascalConcept-59 | mIoU | 59.4 | 58.5 (APE-D) | +1.5% |
| Cityscapes (语义分割) | mIoU | 65.1 | 44.2 (APE-D) | +47.3% |
探索 Ultralytics datasets 以获取快速实验的数据集选项。
视频分割性能
在 DAVIS 2017 和 YouTube-VOS 等视频基准测试中,SAM 3 相较于 SAM 2 及之前的最先进技术表现出显著提升:
| 基准测试 | 指标 | SAM 3 | SAM 2.1 L | 提升幅度 |
|---|---|---|---|---|
| MOSEv2 | J&F | 60.1 | 47.9 | +25.5% |
| DAVIS 2017 | J&F | 92.0 | 90.7 | +1.4% |
| LVOSv2 | J&F | 88.2 | 79.6 | +10.8% |
| SA-V | J&F | 84.6 | 78.4 | +7.9% |
| YTVOS19 | J&F | 89.6 | 89.3 | +0.3% |
少样本适应
SAM 3 在仅使用少量示例即可适应新领域方面表现出色,这对于 data-centric AI 工作流非常重要:
| 基准测试 | 0-shot AP | 10-shot AP | 先前最佳 (10-shot) |
|---|---|---|---|
| ODinW13 | 59.9 | 71.6 | 67.9 (gDino1.5-Pro) |
| RF100-VL | 14.3 | 35.7 | 33.7 (gDino-T) |
交互式优化有效性
SAM 3 使用示例进行的基于概念的提示比视觉提示收敛得更快:
| 已添加的提示 | CGF1 分数 | 相对于纯文本的增益 | 相对于 PVS 基准的增益 |
|---|---|---|---|
| 仅文本 | 46.4 | 基准 | 基准 |
| +1 个示例 | 57.6 | +11.2 | +6.7 |
| +2 个示例 | 62.2 | +15.8 | +9.7 |
| +3 个示例 | 65.0 | +18.6 | +11.2 |
| +4 个示例 | 65.7 | +19.3 | +11.5(平台期) |
对象计数准确率
SAM 3 通过分割所有实例提供精确计数,这是对象计数中的常见需求:
| 基准测试 | 准确率 | MAE | 对比最佳 MLLM |
|---|---|---|---|
| CountBench | 95.6% | 0.11 | 92.4% (Gemini 2.5) |
| PixMo-Count | 87.3% | 0.22 | 88.8% (Molmo-72B) |
SAM 3 与 SAM 2 及 YOLO 对比
在此,我们将 SAM 3 的能力与 SAM 2 和 YOLO26 模型进行比较:
| 能力 | SAM 3 | SAM 2 | YOLO26n-seg |
|---|---|---|---|
| 概念分割 | ✅ 基于文本/示例的所有实例 | ❌ 不支持 | ❌ 不支持 |
| 视觉分割 | ✅ 单个实例(兼容 SAM 2) | ✅ 单个实例 | ✅ 所有实例 |
| 零样本能力 | ✅ 开放词汇 | ✅ 几何提示 | ❌ 封闭集合 |
| 交互式细化 | ✅ 示例 + 点击 | ✅ 仅点击 | ❌ 不支持 |
| 视频追踪 | ✅ 具有身份的多目标 | ✅ 多目标 | ✅ 多目标 |
| LVIS Mask AP(零样本) | 47.0 | N/A | N/A |
| MOSEv2 J&F | 60.1 | 47.9 | N/A |
| 速度(GPU, ms/im) | 2921 | 857 | 8.4 |
| 模型大小 | 3.45 GB | 162 MB(基础版) | 6.4 MB |
速度基准测试在 NVIDIA RTX PRO 6000 上进行,使用 torch==2.9.1 和 ultralytics==8.4.19。
关键要点:
- SAM 3:最适合开放词汇概念分割,通过文本或示例提示查找概念的所有实例
- SAM 2:最适合使用几何提示对图像和视频进行交互式单目标分割
- YOLO26:最适合实时、高速分割,采用无 NMS 的端到端推理,并可导出为多种格式以部署在 GPU、CPU 和边缘设备上
SAM 与 YOLO 的对比
将 SAM 3、SAM 2、SAM、MobileSAM 和 FastSAM 与 Ultralytics YOLO 分割模型(YOLOv8、YOLO11、YOLO26)在大小、参数和 GPU 推理速度方面进行比较:
| 模型 | 大小 (MB) | 参数 (M) | 速度 (GPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 1306 |
| Meta SAM2-b | 162 | 80.8 | 857 |
| Meta SAM2-t | 78.1 | 38.9 | 668 |
| Meta SAM3 | 3450 | 473.6 | 2921 |
| MobileSAM | 40.7 | 10.1 | 605 |
| FastSAM-s 使用 YOLOv8 骨干网络 | 23.7 | 11.8 | 55.9 |
| Ultralytics YOLOv8n-seg | 6.7 (缩小 515 倍) | 3.4 (减少 139.1 倍) | 17.4 (速度提升 167 倍) |
| Ultralytics YOLO11n-seg | 5.9 (缩小 585 倍) | 2.9 (减少 163.1 倍) | 12.6 (速度提升 231 倍) |
| Ultralytics YOLO26n-seg | 6.4 (缩小 539 倍) | 2.7 (减少 175.2 倍) | 8.4 (速度提升 347 倍) |
此对比展示了 SAM 变体与 YOLO 分割模型之间在模型大小和速度上的巨大差异。虽然 SAM 提供了独特的自动分割能力,但 YOLO 模型,尤其是 YOLOv8n-seg、YOLO11n-seg 和 YOLO26n-seg,在体积上明显更小、速度更快,计算效率也更高。
测试在带有 96GB VRAM 的 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(图像级 Matthews 相关系数):衡量二分类准确性(“概念是否存在?”)
为何采用这些指标?
传统的 AP 指标无法解释校准情况,使得模型在实践中难以使用。通过仅评估置信度高于 0.5 的预测,SAM 3 的指标强制要求良好的校准,并模拟了交互式 predict 和 track 循环中的实际使用模式。
关键消融实验与洞察
存在性检测头的影响
存在感检测头将识别与定位解耦,带来了显著的改进:
| 配置 | CGF1 | IL_MCC | pmF1 |
|---|---|---|---|
| 无存在感检测 | 57.6 | 0.77 | 74.7 |
| 有存在感检测 | 63.3 | 0.82 | 77.1 |
存在感检测头提供了 +5.7 CGF1 的提升 (+9.9%),主要提升了识别能力 (IL_MCC +6.5%)。
困难负样本的影响
| 困难负样本/图像 | CGF1 | IL_MCC | pmF1 |
|---|---|---|---|
| 0 | 31.8 | 0.44 | 70.2 |
| 5 | 44.8 | 0.62 | 71.9 |
| 30 | 49.2 | 0.68 | 72.3 |
困难负样本对于开放词汇识别至关重要,使 IL_MCC 提升了 54.5% (0.44 → 0.68)。
训练数据缩放
| 数据源 | CGF1 | IL_MCC | pmF1 |
|---|---|---|---|
| 仅外部数据 | 30.9 | 0.46 | 66.3 |
| 外部 + 合成数据 | 39.7 | 0.57 | 70.6 |
| 外部 + HQ | 51.8 | 0.71 | 73.2 |
| 全部三种 | 54.3 | 0.74 | 73.5 |
高质量的人工标注比仅使用合成数据或外部数据能带来更大的提升。有关数据质量实践的背景信息,请参阅 数据收集与标注。
应用场景
SAM 3 的概念分割能力实现了新的用例:
- 内容审核:查找媒体库中特定内容类型的所有实例
- 电子商务:在目录图像中分割特定类型的所有产品,支持 自动标注
- 医学影像:识别特定组织类型或异常的所有出现情况
- 自动驾驶系统:按类别追踪交通标志、行人或车辆的所有实例
- 视频分析:计数并追踪所有穿着特定服装或执行特定动作的人员
- 数据集标注:快速标注稀有对象类别的所有实例
- 科学研究:量化并分析符合特定标准的所有样本
SAM 3 Agent:扩展语言推理
SAM 3 可以与多模态大语言模型 (MLLMs) 结合,以处理需要推理的复杂查询,其逻辑类似于 OWLv2 和 T-Rex 等开放词汇系统。
推理任务性能
| 基准测试 | 指标 | SAM 3 Agent (Gemini 2.5 Pro) | 先前最佳 |
|---|---|---|---|
| ReasonSeg (验证集) | gIoU | 76.0 | 65.0 (SoTA) |
| ReasonSeg (测试集) | gIoU | 73.8 | 61.3 (SoTA) |
| OmniLabel (验证集) | AP | 46.7 | 36.5 (REAL) |
| RefCOCO+ | Acc | 91.2 | 89.3 (LISA) |
复杂查询示例
SAM 3 Agent 可以处理需要推理的查询:
- “坐着但手里没有拿着礼品盒的人”
- “离相机最近且没有戴项圈的狗”
- “比人手还大的红色物体”
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}
}常见问题 (FAQ)
SAM 3 是何时发布的?
SAM 3 由 Meta 于 2025 年 11 月 20 日 发布,并已在 8.3.237 版本 (PR #22897) 中完全集成到 Ultralytics 中。目前全面支持 预测模式 和 追踪模式。
SAM 3 是否集成到了 Ultralytics 中?
Yes! SAM 3 is fully integrated into the Ultralytics Python package, including concept segmentation, SAM 2–style visual prompts, and multi-object video tracking. SAM 3 also powers the smart annotation feature on Ultralytics Platform, where you can annotate images with just a few clicks.
什么是可提示概念分割 (PCS)?
PCS 是 SAM 3 中引入的一项新任务,用于分割图像或视频中视觉概念的 所有实例。与针对特定对象实例的传统分割不同,PCS 可以找到类别的每一次出现。例如:
- 文本提示:“黄色校车” → 分割场景中所有的黄色校车
- 图像示例:围绕一只狗的边框 → 分割图像中的所有狗
- 组合:“条纹猫” + 示例边框 → 分割所有符合示例的条纹猫
SAM 3 与 SAM 2 有何不同?
| 特性 | SAM 2 | SAM 3 |
|---|---|---|
| 任务 | 每个提示单个对象 | 概念的所有实例 |
| 提示类型 | 点、框、掩码 | 文本短语、图像示例 |
| 检测能力 | 需要外部检测器 | 内置开放词汇检测器 |
| 识别 | 仅基于几何形状 | 文本和视觉识别 |
| 架构 | 仅追踪器 | 检测器 + 带有存在性检测头的追踪器 |
| 零样本性能 | 不适用(需要视觉提示) | 在 LVIS 上达到 47.0 AP,在 SA-Co 上表现提升 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)
- 14 亿个合成掩码,涵盖 3800 万个名词短语 (SA-Co/SYN)
- 15 个外部数据集,通过难负样本增强 (SA-Co/EXT)
基准测试数据:
- 21.4 万个唯一概念,涵盖 12.6 万张图像/视频
- 概念数量比现有基准多 50 倍(例如,LVIS 仅有约 4000 个概念)
- 在 SA-Co/Gold 上进行三次标注,用于测量人类表现的上限
这种大规模和多样性使得 SAM 3 在开放词汇概念上具备卓越的零样本泛化能力。
SAM 3 在分割任务上与 YOLO26 相比如何?
SAM 3 和 YOLO26 适用于不同的使用场景:
SAM 3 优势:
- 开放词汇:通过文本提示分割任何概念,无需训练
- 零样本:可立即应用于新类别
- 交互式:基于示例的细化可以泛化到相似对象
- 基于概念:自动查找类别的所有实例
- 准确性:在 LVIS 零样本实例分割上达到 47.0 AP
YOLO26 优势:
- 速度:凭借无 NMS 的端到端设计,推理速度提高几个数量级
- 效率:模型体积缩小 539 倍(6.4MB 对比 3.45GB)
- 资源友好:可在边缘设备和移动设备上运行
- 实时性:为生产环境部署进行了优化
推荐:
- 使用 SAM 3 进行灵活的开放词汇分割,当你需要查找文本或示例描述的任何概念实例时
- 使用 YOLO26 进行高速生产部署,前提是类别在预先已知的情况下
- 使用 SAM 2 进行带有几何提示的交互式单目标分割
SAM 3 能处理复杂的语言查询吗?
SAM 3 专为简单的名词短语设计(例如“红色苹果”、“戴帽子的行人”)。对于需要推理的复杂查询,可以将 SAM 3 与 MLLM 结合作为 SAM 3 Agent 使用:
简单查询(原生 SAM 3):
- “黄色校车”
- “条纹猫”
- “戴着红帽子的人”
复杂查询(结合 MLLM 的 SAM 3 Agent):
- “坐着但没有拿着礼盒的人”
- “离相机最近且没有项圈的狗”
- “比人手还大的红色物体”
SAM 3 Agent 通过将 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 在开放词汇概念分割上取得了接近人类水平的强劲表现,差距主要存在于模糊或主观的概念上(例如“小窗户”、“温馨的房间”)。