云镜收藏

稍后阅读

清单保存在当前浏览器,方便下次回来继续阅读。

清单还是空的

在笔记卡片或正文页点击“加入稍后阅读”即可收藏。

卷1 · 深度学习与 CV 基础

1.7 SAM 与分割基础模型:提示式视觉

约 4 分钟阅读
全书目录

展开本章目录与同卷章节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. 自测题

  1. SAM 的三件套里哪个最重?交互设计怎么利用这一点?(图像编码器;嵌入缓存、只重跑轻解码——“贵计算放不变量”)
  2. 可提示范式的意义?(一个模型+任务提示替代每任务一模型——LLM in-context 思想的视觉迁移)
  3. SA-1B 的掩码哪来的?(数据引擎自举:模型辅助标注→回灌→迭代的经典闭环)
  4. SAM 2 用什么机制做视频跟踪?(流式 memory attention——当前帧查历史记忆)
  5. Grounded-SAM 的两级管线是什么?(文本开集检测出框 + SAM 精细分)
  6. 它对你方向的三处接口?(线稿提取/文物分割编目/生成图结构分析)

7. 动手作业

  1. 完成第 5 节实操:对一张名画(8.1 的素材)做 box 提示分割,把主体抠出;
  2. 用 AutomaticMaskGenerator 对同一张画全图分割,数一数掩码数量与平均面积——“细节密度”的另一种测量(对照 8.1 映射表);
  3. 跑 SAM 2 的视频 demo:给一段水墨运笔视频 tracking 笔尖——感受”提示式”在时序上的延伸;
  4. 挑战:读 SAM 论文 §3 的数据引擎部分,画自举闭环图——对照 5.2 写 200 字。

8. 延伸资源

  • SAM / SAM 2 论文——各精读一遍(SAM 的消融与数据引擎章节是精华)
  • Grounded-SAM repo——组合管线的工程范本
  • segment_anything 官方 notebook——十分钟上手