Skip to content

SAM

2025-08-08

这是我的 Segment Anything Model(SAM)学习笔记

参考文献:Kirillov et el.,Segment Anything,arXiv:2304.02643


1. 简介

Segment Anything Model(SAM) 是图像分割领域的一个重要突破,被设计为一个通用的基础模型(foundation model),其目标是实现 通用的、基于提示的图像分割,并具备 零样本泛化能力(zero-shot generalization),即可以在无需再训练的情况下对从未见过的对象进行分割。

SAM 引入了一个关键概念:可提示分割(promptable segmentation)。分割任务由提示(prompt) 决定,如点击点、边界框或初始掩膜,模型据此输出目标区域的掩膜。

SAM 使用一个超大规模的数据集 SA-1B 进行训练,从而具备了跨领域和任务的泛化能力。

2. 核心思想与设计原则

2.1 可提示分割(Promptable Segmentation)

SAM 将图像分割重新定义为一个条件任务。模型并不直接输出整张图的分割图,而是接受一个表示“希望分割什么”的提示,输出对应的分割掩膜。

支持的提示类型包括:

  • 点(Point):前景/背景点击
  • 边界框(Box)
  • 掩膜(Mask):可选的粗略分割

该设计带来了如下优势:

  • 支持交互式分割
  • 具备良好的组合性,可嵌入下游系统
  • 实现了零样本迁移能力

2.2 基础模型思路(Foundation Model Perspective)

SAM 借鉴了 NLP 中 BERT、GPT 等基础模型的训练理念:

  • 在大规模、多样化数据上预训练一次
  • 能够无须微调地应用于多种任务
  • 模块化结构便于扩展和组合

SAM 被定位为一个通用图像分割引擎

2.3 解耦架构(Decoupled Design)

SAM 将图像处理与提示处理解耦

  • 图像编码器负责一次性地提取图像特征
  • 提示编码器独立处理提示信息
  • 掩膜解码器融合图像与提示信息生成掩膜

这种结构带来以下优势:

  • 支持快速推理,图像特征可重复使用
  • 对同一图像的多个提示处理高效
  • 有利于系统的模块化部署

3. 模型结构总览

SAM 主要由三个模块组成:

模块作用
图像编码器提取图像的稠密特征表示
提示编码器编码空间提示信息(点、框、掩膜等)
掩膜解码器综合图像与提示特征,生成分割掩膜

3.1 图像编码器(Image Encoder)

  • 使用主干网络:ViT-Huge(ViT-H)
  • 输入分辨率:1024×1024
  • 输出为:64×64 的 patch token 网格

图像编码器仅需对输入图像执行一次前向推理,其输出特征可在多个提示条件下复用,实现高效推理。

3.2 提示编码器(Prompt Encoder)

  • 输入:用户交互产生的提示(如点击点、边界框、掩膜)

  • 编码方式:使用位置编码可学习嵌入

  • 支持:

    • 前景/背景点(正/负样本)
    • 边界框
    • 初始掩膜(以低分辨率图形式输入)

提示编码器将所有提示转换为稀疏 token,供掩膜解码器使用。

3.3 掩膜解码器(Mask Decoder)

  • 结构:轻量级 Transformer 解码器

  • 输入:

    • 图像特征(稠密)
    • 提示 token(稀疏)
  • 输出:

    • 3 个候选掩膜
    • 每个掩膜的置信度评分(表示分割质量)

该设计考虑到提示歧义性,通过输出多个备选结果支持交互式挑选和精修。

3.4 推理流程总结

给定一张图像及提示:

图像 → 图像编码器 → 图像特征

          提示 → 提示编码器 → 提示 token

           掩膜解码器 → 多个候选掩膜输出

4. 训练方法

SAM 使用大规模的 SA-1B 数据集进行训练,这是目前已知最大的分割数据集之一。

4.1 SA-1B 数据集

  • 超过 11M 图像

  • 超过 10 亿分割掩膜

  • 使用人机协同标注工具生成:

    • 初始模型生成分割候选
    • 人工进行点击或修正
    • 不断迭代优化分割器与数据质量

4.2 训练策略

  • 基于提示-掩膜对的监督训练
  • 损失函数:掩膜交叉熵 + IoU(联合训练)
  • 训练中随机采样不同类型的提示(点、框、掩膜)
  • 应用图像增强、提示扰动等技术提高鲁棒性

5. 泛化能力与局限性

SAM 在多种图像类型上表现出极强的零样本泛化能力

  • 自然图像、室内外场景
  • 艺术作品、遥感图像、历史图像
  • 医学和科学图像(如细胞图)

但其局限性包括:

  • 掩膜粗糙:对小物体、细节结构效果不佳
  • 没有语义信息:SAM 不输出类别标签,仅返回掩膜
  • 模型庞大:ViT-H 参数量大,对硬件要求高
  • 无实例 ID:不直接支持实例级分割,需后处理

6. 理论创新与影响

创新设计理论与实践意义
可提示分割任务形式将分割任务统一为条件生成问题
图像与提示解耦实现交互式处理与高效推理
多掩膜输出设计捕捉提示歧义,增强用户体验
人机协同标注 + 自训练支撑超大规模分割数据集构建
基础模型在视觉任务的首次实践启发后续图像模型的通用化与模块化设计

7. 扩展与生态系统

SAM 已成为图像分割系统中的通用模块,衍生出多个变体与组合方式:

  • Grounded-SAM:结合语言模型(如 CLIP)进行文本提示分割
  • MedSAM:针对医学图像进行微调的版本
  • MobileSAM:轻量化变体,适用于边缘设备
  • SAM + DETR/Mask R-CNN:结合实例识别器实现实例分割

SAM 常被用作预处理器、辅助标注工具或作为多模态模型中的图像感知组件

8. 总结

Segment Anything Model(SAM) 是一个引领视觉基础模型潮流的重要作品。它通过提示驱动的分割范式模块化结构超大规模预训练数据,实现了强大的零样本图像分割能力。

它不仅是一个模型,更是一个通用图像分割框架,为图像理解、交互式标注和多模态感知等方向提供了强大的构件基础。

推荐阅读资料