19 SAM 论文精读:ViT 如何成为分割基础模型的视觉编码器?

在上一篇文章中,我们精读了 CLIP。

CLIP 的核心思想是:使用大规模图文对训练图像编码器和文本编码器,让图像和文本进入同一个语义空间。它让 ViT 不再只是一个图像分类 backbone,而是成为多模态模型中的视觉编码器。

这一篇我们继续看另一个非常重要的视觉基础模型:SAM,Segment Anything Model。

如果说 CLIP 让 ViT 学会了"图像和语言如何对齐",那么 SAM 则让 ViT 进入了另一个更加基础的视觉任务:图像分割。

SAM 对应的论文是 Segment Anything,由 Alexander Kirillov、Nikhila Ravi、Ross Girshick 等人提出,发表于 ICCV 2023。论文提出了一个新的分割任务、一个可提示的分割模型,以及一个超大规模分割数据集 SA-1B;SA-1B 包含约 1100 万张图像和超过 10 亿个 mask。

一、为什么需要 SAM?

在 SAM 之前,图像分割已经有很多成熟任务,例如语义分割、实例分割、全景分割和交互式分割。语义分割关注的是:

每个像素属于哪个类别?

例如:

person、car、road、sky、building

实例分割关注的是:

每个目标实例在哪里?

例如同一张图中有三个人,实例分割不仅要知道这些像素属于 person,还要区分 person 1、person 2、person 3。

交互式分割关注的是:用户给一个点或框,模型分割用户想要的目标。

这些任务都很重要,但传统分割模型通常存在一个问题:任务和数据集绑定得很紧。

例如,一个在 COCO 上训练的实例分割模型,通常只能识别 COCO 定义好的类别;一个医学图像分割模型,往往需要专门的医学标注数据;一个遥感图像分割模型,也通常需要专门针对遥感场景重新训练。

SAM 想解决的问题更大:

能不能训练一个通用分割模型,让它面对新图像、新类别、新场景时,也能根据用户提示分割目标?

这就是 SAM 名字中 Segment Anything 的含义:不是只分割固定类别,而是尽可能分割任意图像中的任意对象。

二、SAM 的核心思想:Promptable Segmentation

SAM 最关键的概念是:

复制代码
Promptable Segmentation

也就是 可提示分割。

这里的 prompt 和 NLP 中的 prompt 思想类似。对于大语言模型,我们可以输入一段提示,让模型完成不同任务;对于 SAM,我们可以输入点、框、粗略 mask 等提示,让模型分割对应区域。

SAM 的任务可以抽象为一个函数:

其中:

I 表示输入图像;

P 表示用户提供的 prompt;

M 表示模型输出的分割 mask;

表示 SAM 模型。

也就是说,SAM 不是简单地做:

而是做:

这一点非常重要。传统分割模型通常只输入图像,然后输出预定义类别的分割结果。SAM 则把用户提示也作为输入,因此它可以根据不同 prompt 输出不同 mask。例如同一张图像中有一只狗和一辆车:

点在狗身上 → 输出狗的 mask

框住汽车 → 输出汽车的 mask

给一个粗略 mask → 输出更精细的 mask

因此,SAM 的核心不是"自动识别所有类别",而是:根据提示分割用户指定的区域。

论文明确指出,SAM 被设计并训练为 promptable 模型,因此可以 zero-shot 迁移到新的图像分布和任务。

未完待续..............................................................

相关推荐
szxinmai主板定制专家15 小时前
FPGA高速IO+RK182X AI算力|RK3576+CODESYS工业自动化运动控制平台设计
运维·人工智能·嵌入式硬件·fpga开发·自动化·zynq
FelixZhang02815 小时前
量化求真10|回测通过以后,策略就能上场吗?
人工智能·python·深度学习·学习·机器学习·金融·lstm
IT信息时代15 小时前
突破数学与交互边界,GPT-6 Astra 开启通用人工智能新纪元
人工智能
IamZJT_15 小时前
08|值班讨论越来越长:让 Agent 记清事实、分歧和待办
人工智能
Crazy_MT15 小时前
App 可能不再是入口:从 iOS 27 快捷指令看苹果的 AI Agent 野心
人工智能·ios·apple
GAMC15 小时前
chrome-devtools-mcp:让 AI 编码助手真正"看见"浏览器
前端·人工智能
undsky_15 小时前
【n8n教程】:Set 节点,实现数据转换魔法!
人工智能·ai·aigc·ai编程
丁希希哇15 小时前
激活函数(Activation Function)
人工智能·机器学习
虫无涯15 小时前
Claude Code 频繁卡住?一文搞懂Spinner状态标识、卡顿根源与排查方案
人工智能·claude
虫无涯15 小时前
踩坑实战:Roo Code 调用本地模型卡顿?手把手教你优化到原生速度
人工智能