“任意物体的可提示分割”

Object Prompt Segmentation

文章解读 — 分割任何物体

今天的文章解读将是视觉化的!我们将分析 Meta 公司的 AI 研究团队所撰写的《分割任何物体》一文,这篇论文不仅在研究界引起了轰动,也受到了各种深度学习从业者和倡导者的关注。

《分割任何物体》介绍了可提示分割任务,介绍了分割任何物体模型(SAM),并详细介绍了一个包含超过1亿个掩码的1100万张图片的新公开数据集的生成。SAM 已被社区广泛采用,并导致了一些新的最先进的基础模型,例如将 Grounding DINO 与 SAM 结合的 Grounded-SAM。

来源

论文:分割任何物体

代码:https://github.com/facebookresearch/segment-anything

首次发布:2023年4月5日

作者:Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer Whitehead, Alexander C. Berg, Wan-Yen Lo, Piotr Dollár, Ross Girshick

分类:分割,零样本预测,计算机视觉,提示,大规模

大纲

  1. 背景与前言
  2. SAM — 分割任何物体模型
  3. SA-1B — 包含10亿个掩码的数据集
  4. 实验与消融分析
  5. 结论
  6. 进一步阅读与资源

背景与前言

《分割任何物体》的作者明确表示:“[…] 我们的目标是构建一个图像分割的基础模型。” 基础模型源于自然语言处理(NLP)的巨大成功。这些模型以自我监督的方式进行大规模训练。这些模型通常在零样本任务上表现非常出色,即它们能够解决与它们训练时不同的任务,并且表现得合理甚至更好,超过了有监督的竞争对手。近年来,许多研究人员致力于将 NLP 基础模型的成功带到其他领域,如计算机视觉。

像 CLIP 和 GLIP 这样的模型使得在图像分类或目标检测任务中,可以使用文本提示而不是固定的类别集合。其他模型,如 BYOL 或 DINO,提出了不同的技术来学习输入图像的语义丰富表示,这是许多计算机视觉应用的关键要求之一。

《分割任何物体》的论文旨在:

  1. 通过提示实现零样本分割
  2. 训练一个大规模模型(SAM)作为演示者
  3. 收集并发布最大的公开可用于分割的数据集。

但为什么零样本性能如此重要? — 答案有两个方面。首先,最初的计算机视觉模型是以有监督的方式进行训练的,不仅需要数据,还需要大量的地面真实标签。收集这些数据非常耗时且昂贵。其次,模型可以预测的类别仅限于用于训练的固定类别集合。如果您想向模型添加一个新类别,您需要首先收集数据并重新训练模型。

如何提示分割模型? — 您可能对 ChatGPT、CLIP 或 GLIP 等模型的文本提示很熟悉。虽然 SAM 原则上也经过了文本提示的测试,但它主要通过掩码、点、框或点网格进行提示,如下图所示。

图1:不同的输入提示和生成的掩码。照片由 Terence Burke 在 Unsplash 上拍摄 + 使用 SAM 生成的掩码由 Sascha Kirch 制作

将SAM放入上下文中之后,现在让我们更近距离地看一下Segment Anything Model(SAM)。

SAM — Segment Anything Model

Segment Anything Model(SAM)是一个多模型,它输入一张图像和一个或多个提示,并输出一个有效的分割掩码。该模型由三个主要模块组成:图像编码器、提示编码器和掩码解码器。

SAM可以根据以下任意组合的提示进行操作:掩码、一组点、边界框或文本。

注意:尽管论文提到并进行了与文本作为提示的实验,但官方实施方案和SAM演示(截止2023年9月)尚未发布。

图2:SAM架构。图片来源 + Sascha Kirch的注释

图像编码器 — 为给定的输入图像输出图像嵌入。SAM实现并调整了一个预训练的ViT-H/16掩码自编码器。这是一个相对较大且性能强大的模型。

提示编码器 — 稀疏提示(即点、框和文本)被转化为嵌入向量。文本提示在输入提示编码器之前使用CLIP转化为文本嵌入。密集提示(即掩码)通过步幅卷积进行下采样,并与图像嵌入相加。然后,所有嵌入都被输入到最后一个阶段:掩码解码器。

掩码解码器 — 接收一组图像嵌入(可包含密集掩码嵌入)和一组提示嵌入,并输出有效的分割掩码。

还有两个细节需要解释:提示的不确定性和性能。

简而言之,提示所包含的上下文越少,它就越不确定,对模型提供正确输出就越困难。对于文本提示,我们已经在CLIP和GLIP中看到了输入文本的具体性与模型性能之间的关联。类似地,仅提供一个点作为输入可能会导致多种可能的掩码。因此,SAM输出一组与图像中的对象级、部分级和子部分级相对应的三个输出掩码,如下图所示。

图3:单点提示的不确定性。图片来源 + Sascha Kirch的注释

我要提到的第二个细节是推理速度方面的性能。你有没有注意到图像编码器是SAM中最大的子模块?这个问题其实有点不公平,因为到目前为止我还没有告诉你,但是SAM的设计是为了拥有语义丰富的图像嵌入(通常需要一个大模型),然后在这些嵌入上应用轻量级的提示编码器和轻量级的掩码解码器。好处是:只需要对每个图像运行一次图像编码器,然后可以使用相同的图像嵌入多次提示模型。这使得SAM能够在浏览器中执行,仅需约50毫秒即可对给定提示预测掩码(在计算图像嵌入后)。

让我们更近距离地看一下轻量级的掩码解码器。它接收图像嵌入和提示嵌入,并输出一组具有相应分数的掩码。在内部,两个连续的解码器块执行自注意力和交叉注意力的组合,以在图像和提示之间生成强依赖关系。一个简单的上采样网络与另一个交叉注意力块组合生成掩码和分数。

图4:掩码解码器的详细架构。图片来源 + Sascha Kirch的注释

SA-1B — 10亿掩膜的数据集

Segment Anything的第二个重大突破是创建和发布了一个大规模的分割数据集。该数据集包含了1100万张高分辨率和授权的图像,大约有11亿个掩膜。虽然原始版本的数据集平均拥有3300×4950像素,但发布版本经过下采样,最短边缩小到1500像素。该数据集在不同场景和每张图像上的掩膜数量方面具有多样性,范围从少于50个到超过500个。

图5:来自SA-1B的不同掩膜。图像来源+作者注释:Sascha Kirch

该数据集是通过三阶段数据引擎创建的,其中人工标注的手动标签与由SAM生成的自动标签相结合。

第一阶段:辅助手动阶段 — 一组专业标记人员在早期版本的SAM的辅助下对图像进行标记,该版本是在常见分割数据集上进行训练的。他们被要求标记最突出的对象,并鼓励在30秒后继续。在此阶段结束时,使用新的标签重新训练了SAM(共有12万张图像,430万个掩膜)。

第二阶段:半自动阶段 — 在这个阶段,目标是通过首先让SAM预测一些掩膜,然后让标记人员注释缺失的较不突出的对象,以增加掩膜的多样性。在此阶段结束时,使用新的样本再次对SAM进行了训练(共有30万张图像,1020万个掩膜)。

第三阶段:完全自动阶段 — 在这个阶段,标注是完全自动的。SAM通过32×32点网格生成掩膜,并应用一些后处理。

数据集分析

现在让我们更仔细地看一下论文中介绍的SA-1B数据集的一些分析结果。

在初步评估中,作者创建了掩膜中心点的归一化分布。有趣的是,这些分布受摄影师的偏见影响,即大多数照片将感兴趣的对象置于图像的中心和主轴。

图6:图像上对象中心点位置的分布。图像来源+作者注释:Sascha Kirch

SA-1B的一个重要优势是每张图像上的掩膜数量较其他数据集更多(图7左)。这也意味着SA-1B有许多小掩膜(图7中)。比较掩膜的凹度,即复杂度的度量,SA-1B与手动标记的其他数据集非常相似(图7右)。

图7:SA-1B的掩膜属性与其他数据集的对比。图像来源+作者注释:Sascha Kirch

在负责任的AI(RAI)方面非常重视,不仅分析了对某些群体的偏见,还试图减轻这些偏见。如图8所示,世界上大多数国家拥有超过1000张图像,前3个国家来自世界不同地区。虽然低收入国家在相对比例上仍然代表了较少的样本(占总样本的0.9%),但绝对数量仍超过了900万个掩膜,超过了其他分割数据集。

图8:SA-1B图像的估计地理分布。图像来源+作者注释:Sascha Kirch

作者进一步调查了感知到的性别展示、感知到的年龄组和感知到的肤色之间的性能差异。他们提供了预测掩码与真实掩码之间的平均IoU(交并比)和95%的置信区间。SAM根据单个点或三个点的提示来运行。关键信息是,结果在同一组内非常相似(并且置信区间重叠),这表明没有任何一组成员受到偏爱。唯一的例外是在感知到的年龄组中的年长人群。

图9:SAM在感知到的性别展示、年龄组和肤色上分割人的性能。图片来源+注释:Sascha Kirch

实验与剖析

Segment Anything为我们提供了一系列的实验,主要关注其零样本性能,因为这是作者的主要目标:找到一个可提示的零样本分割模型。我们还知道从其他模型(如CLIP和GLIP)中,提示调整几乎与对模型进行微调一样有效,从而提高性能。

为了进行实验,编制了一个包含23个不同数据集的套件。如图10所示,其中包含了各种数据分布的样本。

图10:来自23个数据集套件的样本。图片来源+注释:Sascha Kirch

零样本单点有效掩码评估

回想一下,零样本意味着模型在评估过程中没有接受过其所暴露的数据的训练。而且要记住,由于其模棱两可性,单点提示是一项相当困难的任务,如图3所示。

在这个第一个实验中,作者将SAM与RITM进行了比较,后者是一种在他们的基准测试中表现最好的交互式分割器。

记住SAM在接收到一个单点提示时会输出3个不同的掩码,并附带一个得分。在这个实验中,选择得分最高的掩码进行评估。由于有时这种方法是错误的,作者还对最佳掩码进行评估,即将预测与真实掩码进行比较,并选择与之重叠最高的掩码。这些是“oracle”预测。

SAM在23个数据集中的零样本单点有效掩码预测中优于RITM。在进行oracle预测时,它在所有23个数据集中优于RITM。

图11:SAM与RITM在23个数据集上的比较。图片来源+注释:Sascha Kirch

零样本文本到掩码

在这个实验中,SAM通过文本进行提示。作者称这个特性为概念验证,因此既没有进行详细的实验,也没有在官方代码实现中发布此功能。

从图12可以看出,SAM能够为复杂对象(如“海狸牙格栅”)返回正确的掩码。在其他一些情况下,模型仅通过插入文本提示而失败,他们展示了当以点的形式提供上下文时,SAM能够正确预测单个或多个雨刷,这表明预测不仅考虑了点,还考虑了文本。

图12:零样本文本到掩码。图片来源+注释:Sascha Kirch

零样本边缘检测

有趣的是,SAM也可以用于边缘检测,这是它在训练期间没有考虑过也没有访问过相关数据的任务。

为了预测地图,SAM首先以一个16×16点的网格为输入,得到768个预测的掩模(对于每个256个点的对象、部分和子部分)。然后对结果进行过滤和后处理,得到边缘掩模。

如图13所示,与真实值相比,SAM预测出更多细节。但是公正地说,如果真实值不完整或者涵盖了不同的抽象层次,这种比较对我来说似乎不公平。但总体来说,性能非常好!

图13:SAM的零样本边缘预测。图像来源+注释:Sascha Kirch

零样本实例分割

在这个实验中,SAM使用一个在COCO和LVIS上训练的全监督ViTDet-H的边界框输出作为输入。然后将得到的掩模再次输入SAM,与初始边界框一起进行结果的精炼。ViTDet和SAM的比较如图14所示。

图14:LVIS v1上的零样本实例分割。SAM。图像来源+注释:Sascha Kirch

这里需要注意两点:如果你查看COCO和LVIS,你会发现掩模与对象的像素不对齐。这种偏差存在于ViTDet中,所以SAM的质量似乎更好。由于计算的度量标准具有相同的偏差,并且与糟糕的真实值相比,SAM的性能会更差,因此他们请人进行目视检查。其次,为什么这只大象只有三条腿 😅。无论我如何努力,我都看不到第四条腿…

消融实验

在消融实验部分,作者主要关注数据集的规模、提示点的数量和图像编码器的大小的缩放(参见图13)。性能以平均IoU报告。

图15:消融研究。图像来源+注释:Sascha Kirch

有趣的是,即使缩放数据和模型大小对mIoU性能有影响,但它会饱和。这可能表明模型非常好,没有太多改进的空间,或者可能是他们方法的限制。

结论

Segment Anything介绍了可提示的Segment Anything模型(SAM),以及一个包含超过11百万张图像中超过10亿个掩模的大规模分割数据集。能够提示分割模型带来了很大的灵活性,比如使训练模型适应未见任务或能够检测未知类别。虽然有人争论SAM是否被视为基础模型,因为它是以监督方式训练的,但它仍然展示了出色的结果,并被广泛采用。

进一步阅读和资源

你可能自己知道:深度学习领域发展得非常快。因此,不足为奇的是,在SAM发布后不久,许多新项目都以其成功为基础,进一步改进预测质量、减少推理时间或使模型适用于边缘应用。

以下是一些建立在SAM基础上的有趣资源列表:

  1. Grounded Segment Anything(基于SAM的图像分割)
  2. Segment Anything in High Quality(高质量的图像分割)
  3. Fast Segment Anything(快速的图像分割)
  4. Faster Segment Anything: Towards Lightweight SAM for Mobile Applications(更快的图像分割:面向移动应用的轻量级SAM)

这里我分享一些链接,如果你想亲自体验SAM和SA-1B:

  • SA-1B数据集下载
  • 图像分割演示
  • 图像分割GitHub
  • 用于SAM实验的Python笔记本

这是我分析一些相关基础模型的文章:

CLIP基础模型

论文摘要 – 从自然语言监督中学习可迁移的视觉模型

towardsdatascience.com

GLIP:引入语言-图像预训练到目标检测

论文摘要 – 基于图像的语言-图像预训练

towardsdatascience.com

BYOL – 对比自监督学习的替代方法

论文分析 – Bootstrap Your Own Latent: 一种新的自监督学习方法

towardsdatascience.com