【PyTorch项目实战】SAM3:概念分割 + 3D重建(模型 + 人体)

SAM 3: Segment Anything with Concepts

  • SAM版本对比
  • 一、论文详解
    • 1、背景与动机
    • 2、任务扩展:从PVS走向PCS
      • [(1)引入【可提示概念分割】(Promptable Concept Segmentation,PCS):文本提示(名词短语 NPs) + 图像示例(正/负)](#(1)引入【可提示概念分割】(Promptable Concept Segmentation,PCS):文本提示(名词短语 NPs) + 图像示例(正/负))
    • [3、模型架构:共享【感知编码器】 + 解耦【检测器×跟踪器】](#3、模型架构:共享【感知编码器】 + 解耦【检测器×跟踪器】)
      • [(1)感知编码器PE(new in SAM3):构建统一语义基座](#(1)感知编码器PE(new in SAM3):构建统一语义基座)
      • [(2)检测器Detector(new in SAM3):负责概念识别(是什么)](#(2)检测器Detector(new in SAM3):负责概念识别(是什么))
        • [(2.1)提示条件化编码机制(Prompt-Conditioned Encoding)](#(2.1)提示条件化编码机制(Prompt-Conditioned Encoding))
        • [(2.2)图像示例(image examples):单实例提示 → 多概念提示](#(2.2)图像示例(image examples):单实例提示 → 多概念提示)
        • [(2.3)引入存在标记(Presence Token):实现识别与定位解耦](#(2.3)引入存在标记(Presence Token):实现识别与定位解耦)
        • (2.4)DETR增强机制
      • [(3)跟踪器Tracker(from SAM2):维持时序一致性与实例ID](#(3)跟踪器Tracker(from SAM2):维持时序一致性与实例ID)
    • 4、数据引擎:新增【概念标签】约400万条正负例
      • (1)数据引擎组件
      • [(2)数据引擎工作流程 ------ 人机协同 + AI辅助](#(2)数据引擎工作流程 —— 人机协同 + AI辅助)
      • [(3)提出【SA-Co概念分割基准】用于评估模型性能 ------ 是现有基准的50倍+](#(3)提出【SA-Co概念分割基准】用于评估模型性能 —— 是现有基准的50倍+)
  • 二、3D应用扩展
    • [1、【SAM 3D Objects】通用物体 3D 重建](#1、【SAM 3D Objects】通用物体 3D 重建)
    • [2、【SAM 3D Body】人体 3D 姿态与网格重建](#2、【SAM 3D Body】人体 3D 姿态与网格重建)
  • 三、项目实战

SAM版本对比

Sam3 是 Meta 最新一代的通用图像分割模型,相比 SAM/SAM2,在推理速度、交互体验与大规模场景泛化上都有显著提升。

功能 SAM SAM2 SAM3
自动掩码生成 ✓(更好) ✓(最强)
单点/框选交互 ✓(快) ✓(接近实时)
视频跟踪 × ✓(更稳)
3D-aware × ×
训练数据规模 SA-1B SA-1B 扩展版 SA-1B + 新视觉数据
推理速度 更快

一、论文详解


发布即产品!SAM 3D横空出世:Meta再次颠覆3D视觉,单图即可实现高精度三维重建

项目 内容
名称 Segment Anything Model 3(SAM 3)
模型简介 面向开放词汇提示的统一图像与视频分割系统,通过 提示式概念分割(PCS) 接收短名词短语、示例图像或组合,为所有匹配实例生成分割掩码及唯一标识。
发布背景 由 Meta 研究团队于 2025 年 11 月推出,继承 SAM 系列,支持开放词汇分割与图像/视频统一处理。
模型类型 统一视觉理解模型(支持检测、实例分割、语义分割、视频分割/跟踪)
核心创新 1. 提示式概念分割(PCS)任务与 SA-Co 基准:提出开放词汇概念分割任务,并建立标准化评测基准。 2. 解耦识别、定位与跟踪架构:共享主干网络,独立检测器与视频跟踪器,引入存在头机制,提高检测与分割精度。 3. 多模态提示融合 :统一支持文本、示例图像、点/框/掩码提示。 4. 实例级分割与身份跟踪:保持视频中实例身份连续。 5. 交互式精修机制 :用户可快速提示修正掩码结果。 6. 可扩展训练数据:新增约 400 万条概念标签(含负样本),覆盖图像与视频场景,提升开放词汇概念理解。
主要能力 - 图像分割 :基于任意提示生成高质量掩码。 - 视频实例追踪 :保持实例身份连续,长视频漂移小。 - 开放词汇概念识别 :识别并分割大量概念。 - 交互式分割精修:通过点、框或掩码快速微调结果。
性能与速度 - 图像分割精度 :相较 SAM2,在自然场景 PCS 任务中 mIoU 或 AP 提升约 2 倍(需具体指标可补充)。 - 视频跟踪精度 :实例身份保持稳定,长视频中漂移小。 - 推理速度 :在标准 GPU(如 A100)上,单张图像推理延迟 < 200 ms(1024×1024 分辨率)。
典型应用 图像/视频标注、复杂场景分割、多目标实例跟踪、示例驱动概念提取、半自动数据标注流程。
局限性 1. 专业/医疗图像迁移 :原模型在自然场景训练,直接用于医学影像或显微图像精度下降,需要微调或结合专业特征。 2. 遮挡与细粒度结构 :极小、遮挡或复杂纹理对象分割精度低于专用模型。 3. 高分辨率计算开销 :全分辨率图像处理需要大显存,限制边缘或低资源设备部署。 4. 极端概念或长尾样本:开箱性能有限,需定制训练或微调。

数据集通常呈现头部-尾部分布:

  • 头部(Head):少数高频类别,样本数量多,比如猫、狗、汽车等常见物体。
  • 尾部(Tail / 长尾):大量低频类别,样本很少,比如稀有动物、特殊工业零件、罕见医学病变。

在分割或识别任务中,模型通常在头部类别表现良好,但 对长尾类别识别能力弱,因为训练数据不足,模型难以学习到稳定特征。处理方法包括:

  • 数据增强:增加长尾类别样本数量或生成合成样本。
  • 少样本学习 / 零样本学习:通过迁移学习或提示式学习增强模型对长尾概念的识别。
  • 重采样或加权损失:在训练时增加长尾类别样本权重,防止被头部类别主导。

1、背景与动机

在视觉系统中,实现 "发现并分割任意物体" 的能力是多模态人工智能的重要基础,支撑机器人、内容生成、增强现实、数据标注与科学计算等关键应用。

  • SAM系列(Kirillov et al., 2023;Ravi et al., 2024)通过提出可提示视觉分割(Promptable Visual Segmentation, PVS),首次将点、框或掩码提示 融入图像与视频分割。但前代方法仍局限于 "分割单个目标"无法解决基于概念在输入中发现并分割全部实例的通用任务,例如在视频中识别所有"猫"。

2、任务扩展:从PVS走向PCS

SAM 3在可提示视觉分割(Promptable Visual Segmentation,PVS)基础上,对任务形式进行了进一步抽象与扩展,提出可提示概念分割(Promptable Concept Segmentation, PCS)。该任务用于在图像或视频中检测、分割并追踪所有符合指定概念的对象实例,以实现对开放世界视觉概念的系统化处理。

(左)SAM 3较SAM 2,在点击式可提示分割功能上有所改进;

(右)SAM 3引入了可提示概念分割功能,用户可通过简短名词短语、图像示例(正面或负面)或两者的组合来分割指定视觉概念的所有实例。

(1)引入【可提示概念分割】(Promptable Concept Segmentation,PCS):文本提示(名词短语 NPs) + 图像示例(正/负)

任务定义:给定一张图像或一段短视频(≤30秒),模型需在全场景中识别出与指定概念一致的全部对象实例,并生成实例掩码与语义掩码;对于视频任务,还需保持目标身份在跨帧过程中的一致性。

  • 输入形式:
    • 文本提示(名词短语 NPs):简短文本由核心名词与可选修饰语构成(如"红苹果""条纹猫")。名词短语提示(若提供)对图像/视频的所有帧具有全局性
    • 图像示例(正例/负例):用户可在单帧中提供正例或负例边界框,作为局部约束引导掩码迭代优化(如图3)。图像示例对模型具有补充性,特别适用于稀有概念或模型初识别失败的情形。
  • 输出形式:
    • 对所有匹配概念的对象实例输出实例掩码 + 语义掩码
    • 对视频序列保持目标身份一致性
  • 注意事项:
    • SAM 3专注于原子视觉概念 识别,因此文本指令限制为简单名词短语,不涉及长文本或复杂推理。然而,SAM 3可以与多模态大模型(MLLM)组合,用于解析更复杂语义或跨句结构。
    • 模型保持完全交互式,允许用户通过增量提示修正歧义并逐步引导模型输出。
      (左)初始提示;(右)可选的交互式增强提示
(1.1)引入提示一致性约束PCC

PCS任务要求模型在开放词汇条件下对任意视觉概念进行实例级分割。为避免概念漂移(concept drift)和语义歧义,SAM 3在模型体系中引入提示一致性约束(Prompt Consistency Constraint,PCC),保证所有提示在语义一级上对齐至同一概念空间。

  • 1. 约束目标
    • 所有提示(文本名词短语 + 图像正负示例)在"概念类别"上保持一致,使模型在不同输入模态间形成稳定的概念映射
      • 文本提示(NPs) → 提供概念的全局语义锚点
      • 图像示例提示 → 在局部区域对概念边界与定义进行实例化细化
      • 两者必须指向同一"原子概念"
    • 若两类提示存在语义不一致(如文本指向"鱼",示例强调"红色条纹鱼"),模型行为将变得不可定义。因此,当示例对概念区分产生新的语义约束时,需要同步更新文本提示,使其与示例保持一致。
  • 2. 约束带来的效果
    • 消除跨模态定义差异(semantic mismatch)
    • 提升掩码稳定性和跨帧一致性
    • 避免示例优化导致的概念收缩(concept shrinkage)或意外泛化(undesired generalization)
  • 3. 约束在交互式流程中的作用
    • 当模型未能识别长尾实例,或概念在场景中出现频次极低时,图像示例提示具有显著补充价值。此时,提示一致性约束确保示例不会引发概念漂移,而是引导模型对既定概念进行分辨力增强。
(1.2)构建模糊性建模体系

PCS相比PVS具备更高的开放度,其词汇空间允许任何可视名词短语,因此天然包含高维度、不规则的语义模糊性。SAM 3从 "数据→模型→评估" 构建一个完整的模糊性消解系统。

  • 模糊性来源:
    • 词义多义性:如"鼠标",可能指动物或电脑设备 ------ 模型需要在视觉层面区分同形异义概念。
    • 无法具象化的主观语义:如"大、舒适、漂亮" ------ 这些词语缺乏稳定的视觉边界。
    • 上下文依赖概念:如"品牌标识""入口" ------ 实例的定义取决于场景功能而非外观形态。
    • 对象范围不明确:如"镜子"是否包含镜框、支架?"桌子"是否包含抽屉或装饰物?
    • 视觉质量导致的不确定性:遮挡、模糊、运动拖影使边界变得不确定。
    • 实例集合模糊:如"堆叠物品"、"人群",应视为多个对象还是单一整体?
  • 三层模糊性消解框架:
    • ① 数据端:多层级语义控制与一致性增强 ------ 将开放词汇带来的语义模糊最小化,使模型训练过程具备稳定的语义基础。
      • a.三位专家一致性标注:每个概念实例由三位独立专家标注。采用一致性投票与冲突解析措施,确保视觉定义趋于收敛。
      • b. 精细化标注协议:对容易产生分歧的类别提供明确规范,如:透明与半透明物体的边界定义、复杂结构的主次区分("树干 vs 树冠 vs 整棵树")、人与随身物品的范围划分。
      • c. AI辅助一致性检查:使用微调过的多模态大模型对数据标签进行自动一致性验证,实现数据闭环优化。
    • ② 模型端:模糊性建模架构 ------ SAM 3 是从"结构"层面对开放世界模糊性进行处理,而非仅依赖数据。核心模块包括:
      • a. Ambiguity Modeling Module(模糊性建模模块):在概念特征空间中显式建模:概念间的语义重叠区域、概念边界的不确定性区域、低置信度区域的概率分布。通过在训练时注入"不确定性表示(uncertainty embedding)",模型能够对模糊边界做出概率化决策,而非强制单一语义。
      • b. Presence Token(存在标记):解耦"是否存在该对象"与"该对象的几何边界":文本理解层 → 判断概念是否存在、几何预测层 → 对存在的实例进行定位和分割。此结构避免了由于局部几何误差导致的概念识别失败。
      • c. Soft-mask Boundary Modeling:在边界模糊区域引入软标签,使预测保持稳定,不因轻微遮挡或噪声造成抖动。
      • d. 多模态提示融合策略:将文本短语与示例(正例/负例)在统一的概念潜空间中对齐,使示例对概念的细化具有可控影响。
    • ③ 评估端:引入与人类判断一致的评价策略 ------ PCS的评估相比传统分割任务更接近"语义判断",因此SAM 3在评估体系中引入多个符合人类判断机制的策略。
      • a. 合理解释集(Acceptable Set):对于语义模糊的概念,允许多个可接受标注被判定为正确,而非单一答案。
      • b. 边界容忍区(Tolerance Band):对边界模糊区域采用柔性度量方法,如:小面积误差不计入、小范围几何漂移不作为错误
      • c. 视频中的跨帧容忍:在跟踪任务中对轻微漂移引入时间维度的容忍度,模拟人类对连续场景的理解。

3、模型架构:共享【感知编码器】 + 解耦【检测器×跟踪器】

SAM3在整体设计上实现了检测器(Detector)跟踪器(Tracker)完全解耦,但二者共享统一的感知编码器PE(Perception Encoder)。这种设计将概念识别实例身份保持彻底分离,使模型在开放世界场景中保持稳定的空间与时间一致性,同时避免不同子任务间的互相干扰。

核心创新与设计亮点:

  • 共享统一PE:作为视觉--语言对齐的高维语义基座,实现跨帧、跨模态特征一致性。

  • 检测器增强:引入存在标记(Presence Token),实现识别与定位解耦;支持多种提示形式(文本、几何、图像示例)进行开放词汇检测。

  • 图像示例提示升级:从单实例提示扩展为多概念正/负示例,用于开放世界语义消歧。

  • 跟踪器继承并优化SAM2机制:维持跨帧实例ID稳定性,采用双重时间消歧、记忆校正与提示交互,实现视频级一致性。

  • 分阶段训练策略:"检测先行 → 冻结PE → 跟踪训练",保证语义识别与时序跟踪互不干扰。

  • (1)感知编码器PE:统一语义基座

    • PE负责从图像、文本提示、示例掩码等多模态输入中构建一致的表示空间,确保检测器与跟踪器对视觉--语言语义的理解保持对齐。
    • 其本质作用是为所有模块提供共享、可跨帧对齐的高维特征表示,使开放词汇条件下的分割成为可能。
  • (2)检测器:负责语义识别(是什么)

    • 根据文本提示、几何提示、示例掩码等输入执行开放词汇检测;
    • 输出候选掩码,但不包含实例身份(ID);
    • 重点在于概念理解与掩码质量,不介入时序稳定。
  • (3)跟踪器:负责身份保持(是否为同一实例)

    • 利用PE特征执行跨帧匹配与掩码传播;
    • 通过记忆库、时间一致性与检测校正实现ID稳定;
    • 不负责识别概念,只维持同一对象在视频中的身份连续。
python 复制代码
输入图像/文本/示例  ──> PE ──> 高维统一特征 ──> 检测器 (概念识别)
                                              └─> 跟踪器 (实例ID维持)

PE 是 检测器和跟踪器共享的语义基座,确保两者语义对齐;
分阶段训练中,PE 在冻结后供跟踪器使用,保证识别与跟踪任务互不干扰。

(1)感知编码器PE(new in SAM3):构建统一语义基座

目标:构建一个跨模态、跨帧统一对齐的高维语义表示空间,使图像、文本提示以及示例掩码能够在同一特征坐标系下对齐,保障检测器和跟踪器共享一致的语义基础。

一句话总结:感知编码器(Perception Encoder,PE)是整个 SAM3 的视觉--语言对齐核心,支撑开放世界概念识别与跨帧实例跟踪。
核心目标:

  • 多模态对齐:整合图像、文本提示与图像示例特征,实现统一语义空间表示;
  • 跨帧一致性:保证视频序列中视觉特征在时间维度上稳定,支持跟踪器实现实例ID连续;
  • 开放词汇兼容性:在未见概念或长尾概念条件下,仍能保持概念识别的准确性;
  • 子模块共享:为检测器与跟踪器提供可重复使用、可扩展的高维特征,避免重复计算。
  • 可扩展示例提示:与图像示例结合,实现概念级消歧、正负示例交互和迭代改进。

输入输出:

  • 输入
    • 图像:RGB或多通道图像张量;
    • 文本提示:自然语言描述(概念、类别或属性);
    • 图像示例/掩码:局部实例正/负示例,提供视觉概念边界。
  • 输出
    • 高维嵌入特征
      • 跨模态统一表示:图像、文本和示例映射到同一语义空间;
      • 跨帧对齐:用于跟踪器记忆编码与掩码传播;
      • 检测器友好:可直接输入 DETR 解码器进行开放词汇识别;
      • 可扩展性:支持新的提示类型或多概念场景。

PE核心结构与模块:

  • 视觉编码器(Vision Encoder)
    • Transformer 或卷积 + Transformer 混合结构;
    • 提取图像高维语义特征,保持空间分辨率;
    • 支持多尺度特征表示,以适应不同大小目标;
    • 具备局部感知和全局上下文整合能力。
  • 文本编码器(Text Encoder)
    • 将自然语言提示映射为语义嵌入;
    • 支持长尾、稀有概念语义理解;
    • 通过跨模态注意力机制与视觉特征对齐,实现提示语义与图像内容的匹配。
  • 示例编码器(Example Encoder)
    • 提取图像示例或掩码区域的视觉特征;
    • 融入位置编码及正/负标签信息;
    • 输出示例提示向量,与文本提示拼接形成统一提示标记;
    • 支持概念级消歧及交互式迭代优化。
  • 跨模态融合层(Cross-Modal Fusion)
    • 将视觉、文本和示例特征投影到统一语义空间;
    • 支持与检测器对象查询和跟踪器记忆编码器共享输入;
    • 强化语义对齐与提示条件化能力。
  • 时间与空间一致性增强模块(Time-Space Consistency)
    • 融入时间编码,保证视频序列特征稳定;
    • 可选的空间金字塔或多尺度注意力模块,用于尺度鲁棒性和局部--全局信息融合。

(2)检测器Detector(new in SAM3):负责概念识别(是什么)

目标:在开放词汇条件下进行语义识别,输出高质量候选掩码,但不包含实例ID。

检测器承担语义识别与掩码生成任务,不参与实例ID维护。其继承DETR(Deformable Transformer)范式(Carion et al., 2020),但针对开放词汇、多提示融合与语义歧义解决进行了结构升级。

(2.1)提示条件化编码机制(Prompt-Conditioned Encoding)

目标:将各种提示信息与图像特征融合,使 DETR 解码器能够理解具体提示内容,实现跨模态语义锚定,为开放词汇检测提供稳固的概念表示。

提示形式:

  • 文本提示:自然语言描述概念、类别或属性
  • 几何提示:点或框,提供空间定位信息
  • 图像示例:正/负示例区域,用于定义概念边界并支持语义消歧

处理流程:

  • 文本提示和图像示例分别由 PE示例编码器 独立编码,生成语义向量;
  • 所有提示向量被统一转换为 提示标记(prompt tokens);
  • 提示标记在 融合编码器(Cross-Modal Fusion) 中与图像特征进行 交叉注意力交互;
  • 融合后的特征输入 类 DETR 解码器,结合可学习对象查询完成跨注意力匹配,生成候选掩码。

核心效果:该机制确保"提示 → 视觉内容"之间的统一语义锚定,为开放词汇检测提供稳固的概念表示。

模块 核心功能 输入 输出 作用范围
PE(Perception Encoder) 构建统一语义基座,提供跨模态、跨帧的高维视觉--语言表示 图像、文本提示、图像示例/掩码 高维嵌入特征(视觉+文本+示例) 整个模型共享,检测器与跟踪器都使用;跨帧对齐与概念表示基础
提示条件化编码(Prompt-Conditioned Encoding) 将提示信息与图像特征融合,使 DETR 解码器能够理解具体的提示内容 PE输出的图像特征 + 文本提示 + 几何提示(点/框) + 图像示例提示向量 融合后的提示条件特征 检测器内部机制,用于候选掩码生成;属于"提示到视觉内容"的跨模态匹配过程
(2.2)图像示例(image examples):单实例提示 → 多概念提示

目标:将图像示例区域视为一种视觉化的概念提示,由一个局部框一个二值标签(正/负)构成。与SAM2仅针对单个实例的PVS提示不同,SAM3中的图像示例用于定义概念边界,并检索所有属于该概念的实例。

  • 特征构建流程:
    • ROI池化提取示例区域视觉特征;
    • 融入位置编码与正/负标签嵌入;
    • 经小型Transformer处理后,生成示例提示向量;
    • 最终与文本提示拼接,形成统一的提示标记,输入检测器进行跨模态匹配。
  • 核心价值
    • 正例示例:定义视觉原型:提供目标概念的视觉原型,使模型明确"应该长什么样"。 ------ 用于解决语义歧义(如形状相似的不同物体)。
    • 负例示例:限制概念边界:告诉模型"哪些相似对象不属于目标概念"。------ 直接减少假阳性。
    • 迭代交互:持续精化概念:用户可根据当前检测结果追加正示例或负示例,实现逐步修正。 ------ 支持交互式细化目标掩码。
      一句话总结 :图像示例提示是SAM3开放世界语义消歧的核心机制,将模型从"识别单个目标"升级为"学习一个概念",并通过正负例交互不断精化该概念的检测边界。
(2.3)引入存在标记(Presence Token):实现识别与定位解耦

开放词汇条件下,提示指定的概念可能在图像中完全不存在。如果将"是否存在"与"对象位置"绑定在同一对象查询中,查询会被迫关注全局上下文,从而降低定位精度,并容易在处理否定短语、抽象名词或稀有概念时产生假阳性。

  • ① 在整张图中,判断用户提示的概念(如"猫"或"椅子")有没有出现在图像中;
  • ② 对象查询仅负责空间定位:若其存在,应在何处;
  • 最终得分 = 局部定位得分 × 全局存在得分,从而实现识别与定位的解耦。

该机制显著减少否定短语、抽象名词、稀有概念导致的错误激活。

(2.4)DETR增强机制

为适应开放世界条件,SAM3在检测器中引入多项强化模块:

  • 双监督训练(DAC-DETR,Hu等,2023):提升匹配稳定性;
  • Align损失(Cai等,2024):促使提示嵌入与视觉目标嵌入对齐;
  • Box-Region-Positional Bias(Lin等,2023):强化空间聚焦能力;
  • MaskFormer式掩码头(Cheng等,2021)改进版:生成高质量区域掩码;
  • 像素级二分类分割头:辅助提示一致性约束,降低跨提示语义漂移。

(3)跟踪器Tracker(from SAM2):维持时序一致性与实例ID

目标:继承SAM2的视频分割架构,负责保持视频中对象身份ID连续,与检测器形成互补。

  • ① 跟踪流程(单帧传播 × 检测匹配)

    给定一个视频序列t与一个提示P,跟踪器按以下流程工作:

    • t=1(初始化):检测器输出首帧的所有相关掩码 {M₁},作为跟踪的起点。
    • t>1(时序更新)
      每帧执行三步:
      • 传播(Propagation) :跟踪器根据上一帧掩码 Mₜ₋₁执行 SAM2 风格的单帧掩码传播,生成预测掩码 M̂ₜ
      • 检测(Detection) :检测器在当前帧输出新的潜在实例 Oₜ
      • 匹配与融合(Association)
        • 通过 IoU 基准函数将 M̂ₜ 与 Oₜ 关联,形成最终掩码集合 Mₜ
        • 未匹配的新检测实例将初始化为新的 "小掩码" 轨迹。

    结果:即便存在遮挡、移动或视角剧烈变化,跟踪器仍能维持实例ID的连续性。

  • ② 跟踪器训练策略(检测与跟踪彻底解耦)

    SAM3采用分阶段训练,确保语义识别与时空跟踪互不干扰:

    1. 感知编码器(PE)预训练
    2. 检测器预训练
    3. 检测器微调
    4. 冻结共享的PE,再使用SAM2流程训练跟踪器(包括提示编码器、掩码解码器、记忆编码器、记忆库)
      关键组件简介:
      • 掩码解码器:是编码器隐藏状态与输出token之间的双向转换器。为处理歧义,为每帧中每个被追踪对象预测三个输出掩码及其置信度,并选择置信度最高的输出作为当前帧的预测掩码。
      • 记忆编码器:是一种Transform结构,其在当前帧的视觉特征上具有自注意力机制,并将视觉特征与记忆库中的空间记忆特征进行交叉注意力。
      • 记忆库:使用过去帧和条件帧(对象首次检测或用户提示的帧)的特征对对象的外观进行编码。

    该策略确保检测器专注语义识别,跟踪器专注时空一致性,避免两个任务互相干扰。

  • ③ 模糊与遮挡处理(双重时间消歧机制)

    在遮挡、拥挤或传播误差累积的场景中,跟踪器可能产生歧义预测。SAM3通过两类时间约束稳定轨迹:

    • 时间一致性评分,抑制低置信度轨迹:对每条轨迹计算掩码检测分数,即统计其在时间窗口内与检测器结果持续匹配的稳定性。低分轨迹将被抑制,避免短暂噪声或误匹配进入最终结果。
    • 检测矫正机制,高置信度更新结果:周期性使用高置信度检测掩码Oₜ替换传播结果M̂ₜ,重置跟踪器状态,防止记忆库漂移,确保外观参考始终保持更新和可信。
  • ④ 基于视觉提示的实例细化(保留SAM2的交互能力)

    在生成初始掩码或小掩码后,支持通过正负点击以细化实例边界:

    • 用户点击经提示编码器编码;
    • 编码提示输入掩码解码器,输出调整后的改进掩膜;
    • 改进掩膜将在整个视频中重新传播,实现全局一致的细化效果。
  • ⑤ (推理过程)歧义处理:多候选掩码输出

总结一句话:跟踪器通过 "掩码传播---检测匹配---记忆校正" 构建稳健的时序一致性,是SAM3实现从单帧检测向多帧理解扩展的核心基础;解耦训练策略则确保语义识别与身份维持互不干扰,实现整体系统的稳定与可靠。

4、数据引擎:新增【概念标签】约400万条正负例

为了支持SAM 3在开放概念分割(PCS)上的性能提升,我们构建了一个大规模人机协同数据引擎,实现多模态、多领域、高质量的训练数据生成。我们在数据引擎设计上实现三大创新:

  • 媒体策展:拓展传统同质化网络资源,覆盖更多视觉媒体域,确保概念多样性与场景广度。
  • 标签策展:利用本体论和多模态大模型生成名词短语(NP)及困难否定标签,提高标签覆盖与标注难度。
  • 标签验证:微调多模态大模型为"AI验证器",实现掩码质量与覆盖范围的双重审核;人工标注集中修正高难度错误案例,实现人机双重质量控制。

(1)数据引擎组件

媒体输入(如:图像或视频)先通过整理后的本体论(Ontology)从海量数据池中筛选。AI模型生成描述视觉概念的名词短语(NPs),并由SAM 3等模型为每个NP生成候选实例掩码。掩码随后经过两步验证:

  • 掩码验证阶段(Mask Verification,MV):标注者根据掩码质量及其与NP的相关性进行接受或拒绝。
  • 穷尽性验证阶段(Exhaustivity Verification,EV):标注者检查输入数据中是否覆盖该NP的所有实例。
    • 未通过EV的媒体-NP配对进入人工修正阶段,标注者可使用浏览器工具对掩码进行添加、删除或编辑,或对难以分离的小型物体使用"群组掩码"。缺乏依据或存在歧义的短语可以被拒绝,从而保证掩码质量与标注完整性。

(2)数据引擎工作流程 ------ 人机协同 + AI辅助

SAM 3的数据引擎通过人机协同 + AI辅助迭代生成大规模高质量标注数据,分为四个阶段:

  • 阶段一:人工验证
    • 随机抽取图像及NP候选,使用SAM 2生成初始掩码提案,并结合开放词汇检测器提示;
    • 人工完成掩码验证(MV)和穷尽性验证(EV);
    • 收集430万图像-NP配对作为初始SA-Co/HQ数据集,为SAM 3训练提供基础。
  • 阶段二:人工 + AI验证
    • 利用阶段一结果微调AI验证器(如Llama 3.2),自动执行MV和EV任务,人工集中处理最具挑战案例;
    • SAM 3迭代训练6次,AI验证器迭代优化,阶段二新增1.22亿图像及NP配对,大幅提升数据规模与标注效率。
  • 阶段三:规模扩展与领域拓展
    • 挖掘复杂样本,覆盖15个新视觉-文本领域;
    • 利用图像alt-text及Wikidata本体扩展概念至长尾细粒度;
    • SAM 3训练7次,AI验证器训练3次,新增1950万图像及NP配对。
  • 阶段四:视频标注
    • 扩展至视频领域,通过SAM 3生成时空掩码(masklets),去重冗余掩码后形成SA-Co/video;
    • 优先标注拥挤或跟踪失败片段,集中人工处理高风险标注;
    • 最终收集5.25万段视频、46.7万张高质量时空掩码。

(3)提出【SA-Co概念分割基准】用于评估模型性能 ------ 是现有基准的50倍+

最终数据集包括:

  • 真实数据:400万独特短语、5200万高质量掩码
  • 合成数据:3800万短语、14亿合成掩码

此外,构建了概念任意分割基准 SA-Co,覆盖12万图像与1700视频,共20.7万个独特概念,规模是现有基准的50倍以上。

概念分割基准,用于评估模型在开放词汇分割任务中的性能。

Segment Anything with Concepts (SA-Co) Dataset:示例视频(上)与图像(下),包含标注短语及实例掩码/ID。

  • 训练数据

    SA-Co为PCS任务构建了大规模图像与视频训练集,包括三个图像子集:

    • SA-Co/HQ:数据引擎第1-4阶段收集的高质量图像,标注520万张图像、400万个独特自然点(NPs);
    • SA-Co/SYN:通过数据引擎第3阶段自主生成的合成图像数据,无需人工标注;
    • SA-Co/EXT:整合15个外部实例掩码数据集,通过本体管道补充硬样本负样本。

    此外,SA-Co/video包含5.25万段视频、2.48万条独特自然点,总计13.4万对视频-NP配对,平均每段视频84.1帧,帧率6 fps。 详细统计及概念分布参见§E.1。

  • 基准测试集(Benchmark)

    • 规模: 12.1万张图像/视频,20.7万条独特短语,300万+负样本对。
    • 分组:
      • Gold:七个领域,每组图像-NP由三位标注者完成;
      • Silver:十个领域,每组图像-NP由一位标注者完成;
      • Bronze/Bio:基于九个现有数据集,掩码由现成标注或SAM 2生成;
      • VEval:视频评测,三领域,每组视频-NP由一位标注者完成。示例标注见图6,详细统计表见表28。
  • 评估指标

    • 定位:正样本微F1(pmF1),针对至少包含一个真实掩码的媒体-NP对;
    • 分类:图像级马修斯相关系数(IL_MCC),衡量二元预测("物体是否存在");
    • 综合指标:分类门控F1(cgF1)= 100 × pmF1 × IL_MCC,仅考虑置信度>0.5的预测,确保实际应用可用性。
  • 歧义处理

    • 在SA-Co/Gold中,每个NP收集三份标注;
    • 通过与所有真实值比对选择最佳分数评估预测准确率,减少歧义影响。

二、3D应用扩展

SAM3 系列通过统一的核心技术与多维应用场景,覆盖从二维开放词汇分割到三维物体与人体重建的全流程视觉理解。三篇论文的关系如下:

层级 模块/论文 核心内容 输入 输出 依赖关系
基础 SAM 概念提示 开放词汇分割与概念消歧 图像 + 文本/几何/图像示例 候选掩码 PE + 检测器 + 跟踪器
应用 SAM 3D Objects 通用物体 3D 重建 图像 + 2D掩码 3D 网格/姿态 基于 SAM 概念提示掩码
应用 SAM 3D Body 人体 3D 姿态和网格 图像 + 2D掩码/关键点 3D 人体网格 基于 SAM 概念提示掩码 + 交互式提示

总结关系:

  • SAM 概念提示是 SAM3 的核心技术,提供开放词汇分割能力和概念消歧机制,是所有应用模块的基础。
  • SAM 3D Objects和SAM 3D Body均基于概念提示生成的二维掩码,进行三维推理和特化建模。
  • 三维模块本质上是概念提示的延伸,将二维视觉理解提升至三维空间,为物体与人体分析提供可交互、高精度的三维表示。

1、【SAM 3D Objects】通用物体 3D 重建

核心目标:从单张或多张图片生成物体的高精度 3D 重建与空间姿态估计,支持虚拟场景中物体的精细形状、纹理和布局理解。

  • 输入:图像(RGB 或多通道)、SAM3 概念提示生成的 2D 分割掩码

  • 输出:高精度 3D 网格模型、纹理映射与姿态信息

  • 核心架构

    • 2D 到 3D 投影模块:将 SAM3 检测器输出的二维掩码作为空间约束;提取物体轮廓、边界和局部特征,用于 3D 重建
    • 网格解码器:基于 Transformer 或图卷积网络 (GCN)、支持多视角融合或单视角预测
    • 姿态估计模块:输出物体空间姿态(旋转、平移)、可与场景几何关系耦合,支持虚拟场景摆放
    • 纹理重建模块:利用图像特征映射纹理到生成网格、保持高分辨率细节
  • 核心亮点

    • 稳健重建:支持遮挡、复杂背景和视角变化
    • 姿态预测:输出空间位姿,实现场景级布局
    • 开放应用:虚拟现实、数字孪生、机器人感知
  • 与 SAM3 的关系

    • 完全依赖 SAM 概念提示 提供的高质量 2D 掩码
    • 将二维语义理解扩展至三维空间,实现从视觉识别到物体重建的无缝衔接

2、【SAM 3D Body】人体 3D 姿态与网格重建

核心目标:从单张图片或视频帧中恢复人体精确的三维姿态和形态,支持复杂场景和交互式控制。

  • 输入
    • 图像(RGB / 高分辨率多输入)
    • SAM3 概念提示生成的 2D 人体掩码
    • 可选提示:2D 关键点、分割掩码(Promptable 输入)
  • 输出
    • 3D 人体网格(MHR 格式)
    • 骨骼结构与软组织形态分离
    • 可编辑的姿态和局部网格细节
  • 核心架构
    • PE 特征输入
      • 利用 SAM3 Perception Encoder 提取跨模态、高维特征
      • 提供人体局部与全局语义基础
    • 提示条件化解码
      • 将用户提示(掩码/关键点)与图像特征融合
      • 实现可交互的三维预测
    • MHR 网格解码器
      • Meta Momentum Human Rig 分离骨骼与软组织
      • 支持高分辨率网格生成与姿态控制
    • 多步细化训练
      • 大规模数据(约 800 万图像)+ 提示引导
      • 多步迭代优化姿态和网格细节
    • 姿态与网格融合
      • 融合局部与全局人体特征
      • 输出可直接应用于动画、虚拟试衣或运动分析
  • 核心亮点
    • Promptable 设计:通过分割掩码或关键点可动态控制预测
    • 高精度捕捉:细致保留人体各部位特征
    • 交互式控制:用户可逐步修正或细化姿态与形态
    • 可解释性增强:骨骼和软组织分离,便于后续应用
  • 与 SAM3 的关系
    • 基于 SAM3 概念提示与 PE 特征提供的 2D 语义基础
    • 属于三维重建的特殊子类(人体特化版本)
    • 将二维分割能力扩展至三维人体分析,实现精准姿态恢复与网格重建

三、项目实战

【PyTorch项目实战】SAM(Segment Anything Model)

1、环境配置

与SAM github官网教程一致:https://github.com/facebookresearch/sam3

python 复制代码
# 创建专用的 conda 环境
conda create -n sam3 python=3.12 -y
conda activate sam3

# 安装支持 CUDA 的 PyTorch
pip install torch==2.7.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
# 安装支持 CPU 的 PyTorch(清华园镜像安装)
pip install torch==2.7.0 torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple 
########################################################
# 克隆并安装SAM3
cd D:/  # 切换到存放目录
git clone https://github.com/facebookresearch/sam3.git
cd sam3  # 切换当项目路径
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装示例所需的额外依赖:for example notebooks or development
pip install -e ".[notebooks]" -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -e ".[train,dev]"

pip install iopath triton

2、模型下载(目前SAM3是受限访问,默认不对任何人开放)

需要注意的 访问控制 / Gated Repo 问题:SAM 3 的 checkpoint 仓库目前是受限访问(gated repo),默认不对所有人开放。若未获得授权,则会出现 HTTP 403 / 权限拒绝。

因此,下载流程一般为:

  • 登录 Hugging Face 账号。
  • 在页面 facebook/sam3 上点击 Request Access,提交申请。
  • 等待官方批准(通常数小时到数天不等)。
  • 批准后,通过 transformers、sam3 库或命令行客户端下载模型权重。

SAM 3本地部署教程:支持文本提示分割,400万概念、30毫秒响应
模型下载:这里推荐转到魔塔社区官网下载模型文件:sam3 · 模型库

3、图像分割

(1)函数详解

函数 / 方法 所属组件 主要用途 关键参数 返回值 / 说明
build_sam3_image_model(checkpoint=None) 模型构建 构建 SAM3 图像分割模型,可选择加载 checkpoint checkpoint:字符串,可选,模型权重路径 返回已构建的 SAM3 图像模型
Sam3Processor(model) Sam3Processor 构建分割处理器,将模型封装为高阶接口 model:SAM3 模型对象 返回处理器实例,用于后续图像分割
processor.set_image(image, device=None) Sam3Processor 设置输入图像,初始化推理状态 image:PIL.Image 或 ndarray device:可选,cuda/cpu 返回推理状态 state,用于后续提示输入
processor.set_text_prompt(state, prompt, device=None) Sam3Processor 文本提示分割 state:推理状态 prompt:字符串,文本描述对象 device:可选 更新后的推理状态,可用于 processor.forward(state) 获取 mask
processor.add_geometric_prompt(state, points=None, boxes=None, masks=None, device=None) Sam3Processor 几何提示分割(点、框、掩码) state:推理状态 points:前景/背景点列表 boxes:边界框列表 masks:初始掩码列表 device:可选 更新后的推理状态
processor.set_image_prompt(state, prompt, device=None) Sam3Processor 图像示例提示分割 state:推理状态 prompt:PIL.Image,示例图像 device:可选 更新后的推理状态
processor.forward(state) Sam3Processor 执行实际分割推理 state:推理状态 返回 dict,包含 masks(掩码列表)、boxes(边界框列表)、scores(置信度)
processor.forward_multi_prompt(state, text=None, image=None, points=None, boxes=None, masks=None, device=None) Sam3Processor 多模态联合提示分割(文本+示例图+几何提示) state:推理状态 text:文本提示 image:图像示例 points/boxes/masks:几何提示 device:可选 返回与 forward 类似的分割结果字典
processor.forward_auto(state) Sam3Processor(部分实现可能自定义) 全自动/全景分割(无提示) state:推理状态 返回全自动分割结果字典(masks、boxes、scores)

(2)分割方式:概念分割(文本+示例) + 点/框/掩码 + 全景分割

  • SAM3 官方并未提供像 SAM1 的自动分割器AutomaticMaskGenerator那样的全自动全景分割 API。
  • SAM3 的核心定位是提示式概念分割(PCS),强调通过提示分割,包括:文本、示例图像、点/框/mask、视频中的持续跟踪。但 SAM3 的模型结构本身具备所有实例分割 (instance segmentation + semantic segmentation → panoptic)能力,只是官方没有提供直接的"Auto Segment Everything"接口。
python 复制代码
import torch
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

from sam3.model_builder import build_sam3_image_model
from sam3.model.sam3_image_processor import Sam3Processor


def sam3_universal_segmentation(
    image_path,
    text_prompt=None,
    example_image_path=None,
    checkpoint=None,
    visualize=True,
):
    """
    SAM3通用分割函数:
      - 文本提示分割
      - 图像示例分割
      - 全自动全景分割(无提示时自动启用)

    参数:
      image_path           - 待处理图像
      text_prompt          - 文本提示(可选)
      example_image_path   - 示例图像提示(可选)
      checkpoint           - SAM3模型权重(可选)
      visualize            - 是否进行可视化

    返回:
      masks, boxes, scores
    """

    # ------------------
    # 自动选择设备
    # ------------------
    device = "cuda" if torch.cuda.is_available() else "cpu"
    print(f"[Device] {device}")

    # ------------------
    # 构建或加载模型
    # ------------------
    try:
        if checkpoint:
            model = build_sam3_image_model(checkpoint=checkpoint)
            print(f"[Model] Loaded checkpoint: {checkpoint}")
        else:
            raise ValueError
    except Exception:
        model = build_sam3_image_model()
        print("[Model] Loaded default SAM3")

    model.to(device)
    processor = Sam3Processor(model)

    # ------------------
    # 读取图像
    # ------------------
    image = Image.open(image_path).convert("RGB")
    state = processor.set_image(image, device=device)

    # 如果没有文本提示和示例图像提示
    if (text_prompt is None) and (example_image_path is None):
        print("[Mode] No prompt provided. Running full automatic panoptic segmentation...")
        output = processor.forward(state)  # 直接 forward 即可
    else:
        # 文本提示
        if text_prompt:
            state = processor.set_text_prompt(state=state, prompt=text_prompt, device=device)
            print(f"[Prompt] Text prompt applied: {text_prompt}")

        # 示例图像提示
        if example_image_path:
            example_img = Image.open(example_image_path).convert("RGB")
            state = processor.set_image_prompt(state=state, prompt=example_img, device=device)
            print(f"[Prompt] Image example applied: {example_image_path}")

        output = processor.forward(state)

    # ------------------
    # 推理
    # ------------------
    output = processor.forward(state)

    masks = output["masks"]
    boxes = output["boxes"]
    scores = output["scores"]
    print(f"[Result] {len(masks)} objects detected.")

    # ------------------
    # 可视化
    # ------------------
    if visualize:
        plt.figure(figsize=(10, 10))
        plt.imshow(image)
        ax = plt.gca()
        plt.axis("off")

        for mask, box in zip(masks, boxes):
            m = mask.cpu().numpy()
            color = np.random.rand(3)
            h, w = m.shape
            overlay = np.zeros((h, w, 3))
            for i in range(3):
                overlay[:, :, i] = color[i]
            ax.imshow(np.dstack((overlay, m * 0.6)))

            x0, y0, x1, y1 = box
            rect = plt.Rectangle((x0, y0), x1 - x0, y1 - y0, fill=False, edgecolor="red", linewidth=2)
            ax.add_patch(rect)

        plt.show()

    return masks, boxes, scores


"""
函数将按照以下优先级自动执行:
    1. 若提供文本提示 → 文本提示分割
    2. 若提供图像示例 → 图像示例提示分割
    3. 若两者都提供 → 联合提示分割(精度最高)
    4. 若无任何提示 → 进入全自动全景分割模式
"""
if __name__ == "__main__":
    image_path = "path/to/your/image.jpg"
    text_prompt = "A cat sitting on a sofa"
    example_image_path = None  # "path/to/your/example_image.jpg"
    checkpoint = None  # "path/to/your/sam3_checkpoint.pth"

    sam3_universal_segmentation(
        image_path=image_path,
        text_prompt=text_prompt,
        example_image_path=example_image_path,
        checkpoint=checkpoint,
        visualize=True,
    )

4、视频分割

(1)函数详解

函数 / 方法 所属组件 主要用途 关键参数 返回值 / 说明
build_sam3_video_predictor(checkpoint=None) 模型构建 构建 SAM3 视频分割预测器,可加载 checkpoint checkpoint:可选,权重路径 返回视频预测器对象
video_predictor.handle_request(request) 视频预测器 执行视频分割任务(包含开始会话、添加提示、推理等) request:字典,包括操作类型和参数,例如: type: `"start_session" "add_prompt" "forward"<br>resource_path: 视频路径或帧目录<br>frame_index: 帧索引<br>text/image/points/boxes/masks`: 提示信息 返回字典,包含每帧的 masksboxesscores 及实例 ID
video_predictor.start_session(video_path) 视频预测器 初始化视频会话 video_path:MP4 文件路径或 JPEG 文件夹 返回 session_id
video_predictor.add_prompt(session_id, frame_index, text=None, image=None, points=None, boxes=None, masks=None) 视频预测器 在指定帧添加提示(文本/图像/几何) 同上 更新会话状态,返回当前帧分割结果
video_predictor.forward(session_id, frame_index=None) 视频预测器 推理指定帧或整个视频 session_id:会话 ID frame_index:可选,单帧索引,不指定则推理整个视频 返回分割结果字典,包含 masksboxesscoresinstance_ids
video_predictor.forward_auto(session_id) 视频预测器 全自动视频分割(无提示) session_id:会话 ID 返回全自动分割结果字典,包含每帧 mask、box、score 和 instance ID

(2)分割方式:概念分割(文本+示例) + 点/框/掩码 + 全景分割

python 复制代码
import torch
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import cv2
from sam3.model_builder import build_sam3_video_predictor

# ===========================
# 可视化函数
# ===========================
def draw_mask(mask, ax, color=None, alpha=0.6):
    """在 matplotlib 上叠加 mask"""
    if isinstance(mask, torch.Tensor):
        mask = mask.cpu().numpy()
    if color is None:
        color = np.random.rand(3)
    h, w = mask.shape
    mask_img = np.zeros((h, w, 3))
    for i in range(3):
        mask_img[:, :, i] = color[i]
    ax.imshow(np.dstack((mask_img, mask * alpha)))

def draw_box(box, ax, color="red", lw=2):
    """在 matplotlib 上绘制边界框"""
    x0, y0, x1, y1 = box
    w, h = x1 - x0, y1 - y0
    ax.add_patch(plt.Rectangle((x0, y0), w, h, fill=False, edgecolor=color, linewidth=lw))

def visualize_frame(frame_image, masks, boxes):
    """整合 mask 和 box 可视化"""
    plt.figure(figsize=(10, 10))
    plt.imshow(frame_image)
    ax = plt.gca()
    plt.axis("off")
    for mask, box in zip(masks, boxes):
        draw_mask(mask, ax)
        draw_box(box, ax)
    plt.show()

# ===========================
# 视频分割函数
# ===========================
def sam3_video_segment(
    video_path,
    text_prompt=None,
    image_prompt=None,
    points_prompt=None,
    boxes_prompt=None,
    masks_prompt=None,
    full_auto=False,
    visualize=True
):
    """
    SAM3 视频分割(支持文本/示例图/几何提示 + 全自动分割)
    
    参数:
        video_path (str) : MP4 文件路径或帧文件夹
        text_prompt (str) : 文本描述
        image_prompt (PIL.Image.Image) : 示例图像
        points_prompt (list of tuples) : [(x, y, is_foreground)]
        boxes_prompt (list of list) : [[x0, y0, x1, y1], ...]
        masks_prompt (list of np.array or torch.Tensor) : 初始掩码
        full_auto (bool) : 是否全自动(零提示)
        visualize (bool) : 是否可视化每帧
    返回:
        list : 每帧的分割结果,包含 masks, boxes, scores, instance_ids
    """
    device = "cuda" if torch.cuda.is_available() else "cpu"
    print(f"使用设备: {device}")

    # 构建视频预测器
    predictor = build_sam3_video_predictor()
    
    # 初始化视频会话
    response = predictor.handle_request({
        "type": "start_session",
        "resource_path": video_path
    })
    session_id = response["session_id"]
    print(f"会话 ID: {session_id}")

    # 添加提示(若非全自动模式)
    if not full_auto:
        request_dict = {
            "type": "add_prompt",
            "session_id": session_id,
            "frame_index": 0
        }
        if text_prompt: request_dict["text"] = text_prompt
        if image_prompt: request_dict["image"] = image_prompt
        if points_prompt: request_dict["points"] = points_prompt
        if boxes_prompt: request_dict["boxes"] = boxes_prompt
        if masks_prompt: request_dict["masks"] = masks_prompt

        predictor.handle_request(request_dict)
        print(f"已添加提示到帧 0")

    # 推理视频
    response = predictor.handle_request({
        "type": "forward",
        "session_id": session_id
    })

    results = response["outputs"]
    print(f"视频帧数: {len(results)}")

    # 视频逐帧可视化
    if visualize:
        cap = cv2.VideoCapture(video_path)
        frame_idx = 0
        while True:
            ret, frame = cap.read()
            if not ret or frame_idx >= len(results):
                break
            frame_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
            frame_res = results[frame_idx]
            masks = frame_res["masks"]
            boxes = frame_res["boxes"]
            print(f"帧 {frame_idx}: {len(masks)} 个对象")
            visualize_frame(frame_image, masks, boxes)
            frame_idx += 1
        cap.release()

    return results


if __name__ == "__main__":
    video_path = "video.mp4"
    text_prompt = "a person riding a bike"
    image_prompt = Image.open("example.jpg").convert("RGB")  # 可选示例图

    results = sam3_video_segment(
        video_path=video_path,
        text_prompt=text_prompt,
        image_prompt=image_prompt,
        full_auto=False,
        visualize=True
    )
相关推荐
卢卡上学1 小时前
【AI编码】Claude Code是什么?如何安装和使用Claude Code|小白Claude Code使用教程与完整指南
人工智能·claude·claude code·aicodemirror
阿杰学AI1 小时前
AI核心知识23——大语言模型之System Prompt(简洁且通俗易懂版)
人工智能·ai·语言模型·prompt·aigc·system prompt
aneasystone本尊1 小时前
实战 LiteLLM 与外部日志系统的集成
人工智能
AhaPuPu1 小时前
LLM Agent Attack- Indirect Prompt Injection
网络·人工智能·prompt
得贤招聘官1 小时前
AI技术驱动下的招聘行业转型
人工智能
猫天意1 小时前
【深度学习即插即用模块之注意力】EfficientChannelAttention,涨点必备彻底疯狂!
人工智能·笔记·深度学习·神经网络·yolo
ghie90901 小时前
ART 和SART 医学CT重建迭代重建算法
人工智能·算法·计算机视觉
熊猫_豆豆1 小时前
基于改进沙猫群优化算法的Otsu图像分割
人工智能·算法·计算机视觉
学习是生活的调味剂1 小时前
LLaMA大模型家族发展介绍
人工智能·llama