卷1 · 深度学习与 CV 基础
1.7 SAM 与分割基础模型:提示式视觉
展开本章目录与同卷章节
1. SAM 是什么:分割界的 GPT 时刻2. 架构三件套(设计的聪明之处)3. SAM 2(2024):提示式视频分割4. 家族与应用接口5. 实操十分钟6. 自测题7. 动手作业8. 延伸资源同卷章节1.1 从 CNN 到 ResNet:卷积时代的遗产1.2 注意力机制:从加权检索到万物的基础操作1.3 Transformer 逐层拆解:从 Block 到小 GPT1.4 ViT 与视觉 Transformer 谱系:图像成为 token1.5 自监督三巨头:MAE、CLIP、DINO1.6 CLIP 精读与 zero-shot 评测实操(第一个完整项目)1.7 SAM 与分割基础模型:提示式视觉1.8 检测与分割极简史:知道即可的一章1.9 图像形成与相机模型:给 3D/具身留的几何底座本章目标:吃透 SAM(Segment Anything)——它不只是分割模型,而是”提示式交互视觉”这一新范式的开端,也是数据引擎自举的经典案例。学完标准:能画出 SAM 三件套架构并解释”为什么这么设计”,会用 box/point prompt 完成实操,知道 SAM 2 把什么搬到了视频。
1. SAM 是什么:分割界的 GPT 时刻
Meta(2023)的三件事:① SA-1B 数据集:1100 万张图、11 亿个掩码——史上最大分割数据;② 可提示范式:模型接受点/框/粗掩码作为”提示”,输出对应物体的分割——像 GPT 接受 prompt 输出文本一样;③ 零样本泛化:没见过的物体/域(医学影像、素描)也能分——通用性首次出现在分割任务上。
范式意义:CV 从”每个任务训一个模型”转向”一个基础模型 + 任务提示”。这与 LLM 的 in-context learning 是同一次思想迁移(1.5 自监督 → 基础模型 → 提示交互,视觉侧的完整三连)。
2. 架构三件套(设计的聪明之处)
图像编码器(ViT-H,MAE 预训练,最重)→ 图像嵌入(一张图算一次)
提示编码器(点/框/掩码 → 编码,极轻) ↘
掩码解码器(轻量双向 attention,~50ms)→ 分割掩码(可多次交互)
关键设计:重的一端(图像编码)与轻的一端(解码)解耦——交互场景下图像嵌入缓存复用,用户每点一下只需 50ms 重解码。这是”为交互而设计的架构”教科书案例:把昂贵的计算放在不变量上,把便宜的计算放在交互变量上(KV cache 是同一哲学,2.3)。
训练:三阶段(监督→数据引擎自举:模型辅助标注→新数据回灌→模型更强,5.2 数据为中心的经典案例)→RL 式微调对齐交互。
3. SAM 2(2024):提示式视频分割
把”分割一切”搬到视频:流式记忆——当前帧通过 memory attention 关注之前的关键帧记忆与提示记忆,逐帧传播掩码;图像与视频统一进一个模型。能力:track anything——点一下视频里的物体,全程跟住(遮挡后还能找回)。实用地位:视频标注、VLA 数据采集(5.3 的演示数据标注)、特效制作的底层工具。
4. 家族与应用接口
- Grounded-SAM:文本开集检测(Grounding DINO)出框 → SAM 精细分割——“说一句话分出指定物体”的标准管线(5.6 agent 的感知件);
- MedSAM:医学域微调——基础模型 + 领域数据的典型配方;
- SAM-HQ:边界质量增强;MobileSAM/FastSAM:端侧化(5.8 的效率路线);
- 你的方向:线稿提取(8.4 画师管线的自动前置步骤)、文物图像的自动分割编目(8.8)、生成图的结构分析(A3 鉴别的特征源)。
5. 实操十分钟
from segment_anything import sam_model_registry, SamPredictor
sam = sam_model_registry["vit_b"](checkpoint="sam_vit_b.pth").cuda()
predictor = SamPredictor(sam)
predictor.set_image(image_rgb) # 重计算只做一次
masks, scores, _ = predictor.predict(
box=np.array([x1, y1, x2, y2]), multimask_output=True) # 轻解码随便点
自动全图分割用 SamAutomaticMaskGenerator(网格撒点提示)——批量产出训练数据的工具形态。
6. 自测题
- SAM 的三件套里哪个最重?交互设计怎么利用这一点?(图像编码器;嵌入缓存、只重跑轻解码——“贵计算放不变量”)
- 可提示范式的意义?(一个模型+任务提示替代每任务一模型——LLM in-context 思想的视觉迁移)
- SA-1B 的掩码哪来的?(数据引擎自举:模型辅助标注→回灌→迭代的经典闭环)
- SAM 2 用什么机制做视频跟踪?(流式 memory attention——当前帧查历史记忆)
- Grounded-SAM 的两级管线是什么?(文本开集检测出框 + SAM 精细分)
- 它对你方向的三处接口?(线稿提取/文物分割编目/生成图结构分析)
7. 动手作业
- 完成第 5 节实操:对一张名画(8.1 的素材)做 box 提示分割,把主体抠出;
- 用 AutomaticMaskGenerator 对同一张画全图分割,数一数掩码数量与平均面积——“细节密度”的另一种测量(对照 8.1 映射表);
- 跑 SAM 2 的视频 demo:给一段水墨运笔视频 tracking 笔尖——感受”提示式”在时序上的延伸;
- 挑战:读 SAM 论文 §3 的数据引擎部分,画自举闭环图——对照 5.2 写 200 字。
8. 延伸资源
- SAM / SAM 2 论文——各精读一遍(SAM 的消融与数据引擎章节是精华)
- Grounded-SAM repo——组合管线的工程范本
- segment_anything 官方 notebook——十分钟上手
