HelloAI
📄 论文精读 🏆 必读经典 · 2023 · Meta 2023

Segment Anything (SAM)

Alexander Kirillov, Eric Mintun, Nikhila Ravi, et al.
TL;DR
Meta 的"图像分割基础模型"——点一下就能分割任何物体。开源 + 1100 万张图 + 1 亿 mask,让"通用分割"成为现实。
#SAM#分割#视觉#基础模型#必读

为什么这篇论文重要

2023 年 4 月 Meta 发布 SAM(Segment Anything Model)—— 计算机视觉领域的”GPT 时刻”

任何图像 + 任何提示 → 精准分割。 训练完一次,所有分割任务都能做。

之前—— 每个分割任务(医学、自动驾驶、卫星图)都要单独训模型。 SAM 之后—— 一个模型通吃,零样本(zero-shot)解决新任务。

论文的核心想法

借鉴 NLP 范式:

Pre-train 一个”基础视觉模型” + Prompt 推理时使用

类比 GPT:

  • GPT:预训练 + 文本 prompt
  • SAM:预训练 + 视觉 prompt(点、框、文字描述)

三个组件

图像 ──→ Image Encoder(ViT)──→ 图像 embedding

Prompt ──→ Prompt Encoder ──→ prompt embedding

                                Mask Decoder

                                  分割 mask

Image Encoder 只跑一次—— 然后任意 prompt 都能秒生成 mask

各种 Prompt

SAM 支持的提示方式:

1. 点(Point)

用户点图像上一个点 —— SAM 分割该物体。

用户:点击猫的鼻子
SAM:输出整只猫的精确轮廓

2. 框(Box)

画一个bounding box —— SAM 在框内精分割。

用户:在车上画框
SAM:输出车的精确轮廓

3. 多点

多个点(前景 + 背景) —— SAM 综合判断。

点 1 (绿色, 前景): 猫的耳朵
点 2 (绿色, 前景): 猫的尾巴
点 3 (红色, 背景): 后面的沙发
→ SAM 输出整只猫,排除沙发

4. 自动 mask

不给 prompt —— SAM 自动分割图中所有物体

5. 文字 prompt(部分支持)

“分割图中所有的狗” —— SAM 配合 GroundingDINO 实现。

数据集:SA-1B

Meta 构建了有史以来最大的分割数据集

  • 1100 万张图
  • 11 亿 mask
  • 完全开源

对比:之前 SOTA COCO 才33 万张图

数据收集流程

SAM 用了一个聪明的”自我增强”流程:

Step 1: 用初始模型粗分割(人工辅助)
Step 2: 训改进版模型
Step 3: 用新模型分割更多图(速度变快)
Step 4: 人工只检查可疑结果
Step 5: 训更好的模型
... 循环

这种”模型协助标注”让构建 1100 万张图 + 11 亿 mask 成为可能—— 完全人工根本做不到。

性能

零样本评估

SAM 没专门训过很多 benchmark—— 但表现强劲:

任务SAM zero-shot专门训练的 SOTA
COCO 实例分割0.582 (mIoU)0.62
LVIS 分割0.5220.57
ADE20K 语义分割0.4730.55

零样本接近专门训练 SOTA—— 让人惊讶。

通用性

SAM 在没见过的领域上也工作:

  • 医疗影像:分割肿瘤、器官
  • 卫星图:建筑、植被
  • 显微镜图:细胞
  • 水下图:鱼类

不需要重训 —— prompt 一下就分割。

论文影响

1. CV 范式转变

之前:每任务训一个模型 之后:通用基础模型 + prompt

类似 LLM 让 NLP 不再”每任务训一个” —— SAM 让 CV 也这样。

2. 生态爆发

SAM 开源后 1 年内:

  • Grounded SAM:SAM + GroundingDINO,文字找物体
  • Mobile SAM:移动端版本(手机能跑)
  • HQ-SAM:高质量版
  • MedSAM:医学影像专版
  • Segment Anything 3D:3D 分割
  • SAM 2(2024):扩展到视频

整个 CV 工具栈被重塑。

3. 工业应用

  • Photoshop 等图像编辑:抠图变成一键
  • 自动驾驶:场景理解
  • 医学诊断:器官 / 病变标注
  • 机器人:物体识别

Meta 估算:SAM 在 1 年内节省了人类标注员 100 万小时工作时间

SAM 2(2024)

2024 年 Meta 发了 SAM 2—— 扩展到视频

SAM 1: 单帧图 → mask
SAM 2: 视频 → 跨帧持久 mask(追踪物体)

新数据集 SA-V:

  • 51000 个视频
  • 4250 万 mask

视频分割 SOTA—— 开源 + 实时(30+ FPS)。

一些反思

”SAM 是 CV 的 GPT 吗”

支持:

  • 通用基础模型
  • 零样本工作
  • 改变范式

反对:

  • 没有”理解”能力(只是分割,不知道是什么)
  • 还需要其它模型配合做完整理解
  • 语义层面仍弱

真实情况:SAM 是 CV 工具栈的关键组件—— 但不是”CV 的全部”。

“为什么 Meta 开源这么宝贵的东西”

类似 Whisper 的逻辑:

  • 训练相对便宜(Meta 估约 500K500K-1M)
  • 商业价值不如 LLM
  • PR + 生态价值大
  • 推动行业 = 推动竞争对手追

Meta 在视觉的开源策略—— 和 OpenAI 在 LLM 的闭源策略—— 形成鲜明对比。

“通用模型 vs 专家模型”

SAM 通用—— 但专家模型仍然更准(如医学影像专用)。

未来:

  • 通用模型做 90% 工作
  • 专家模型做最后 10%(关键场景)

用代码

# 用 Hugging Face
from transformers import SamModel, SamProcessor
from PIL import Image
import torch

model = SamModel.from_pretrained("facebook/sam-vit-base")
processor = SamProcessor.from_pretrained("facebook/sam-vit-base")

image = Image.open("cat.jpg")

# 点击 (x=400, y=300)
input_points = [[[400, 300]]]
inputs = processor(image, input_points=input_points, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

masks = processor.image_processor.post_process_masks(
    outputs.pred_masks.cpu(),
    inputs["original_sizes"].cpu(),
    inputs["reshaped_input_sizes"].cpu()
)
# 输出: 高质量分割 mask

或用 Grounded SAM(文字 prompt):

# 自然语言 → 分割
"segment all the cats in this image"
# 自动识别 + 分割

推荐配套阅读

  • HelloAI: L5-03 ViT 与 CLIP
  • SAM 论文 —— Meta 2023
  • SAM 2 论文 —— Meta 2024 视频版
  • Grounded SAM —— 文字 prompt 版
  • SegmentAnything.com —— 在线 demo
💡 一个工程实战

做 CV 应用? 不要从 0 训分割模型

  • 起步:用 SAM 零样本
  • 不够好:微调 SAM
  • 仍不够:上专用模型 + SAM 后处理

SAM 已经是 CV 工程的默认起点—— 就像 Whisper 之于语音、Llama 之于 LLM。

📬

想要更多论文精读

订阅每周精选 —— 下一篇论文笔记直接送邮箱。

💬

讨论区

· 用 GitHub 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。