Segment Anything (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.522 | 0.57 |
| ADE20K 语义分割 | 0.473 | 0.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 估约 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 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。