Segment Anything (CV的GPT-3时刻)

转载:CV 迎来 GPT-3 时刻,Meta 开源万物可分割 AI 模型和 1100 万张照片,1B+掩码数据集!

Segment Anything

通过单击、交互式点击即可分割图像或视频。

 英伟达 AI 科学家 Jim Fan 在 Twitter 上惊呼,Meta 发布的 SAM 让计算机视觉(CV)迎来 GPT-3 时刻。更不可思议的是,模型和数据(1100万张图像,10亿个掩码)都已经基于 Apache 2.0 许可开源。

今日,Meta 发布首个可“任意图像分割”的基础模型  Segment-Anything Model(SAM)和最大规模的“任意分割 10 亿掩码数据集「Segment Anything 1-Billion mask dataset (SA-1B)」,将自然语言领域的 prompt 范式引入了 CV 领域,进而为 CV 基础模型提供更广泛的支持与深度研究。

  • SAM Demo:https://segment-anything.com/

  • 开源地址:https://github.com/facebookresearch/segment-anything

  • 论文地址:https://ai.facebook.com/research/publications/segment-anything/

  • SA-1B数据集:https://ai.facebook.com/datasets/segment-anything/

图片、视频皆可分割

分割,作为 CV 领域的核心任务,被广泛应用在科学图像到编辑照片等应用程序员中,但是,为特定任务创建准确的分割模型通常需要技术专家进行高度专业化的工作,并且需要访问 AI 培训基础设施和大量精心注释领域内方面的数据能力。

SAM 通过 prompt 工程能力即可分割任意想分割的图像。

截图自SAM论文

SAM 已经学会了物体的一般概念,并且可以为任何图像或视频中的任何对象生成掩模,甚至包括在训练期间没有遇到过的对象和图像类型。

SAM 足够通用,可以涵盖广泛的用例,并且可以直接在新的图像“领域”上使用——无论是水下照片还是细胞显微镜——都不需要额外的训练(这种能力通常称为零样本迁移)。

之前,为了解决分割问题,一般会采用两种分类方法:

第一种是交互式分割,可以对任何类别的对象进行分割,但需要人员通过迭代地细化掩模来指导该方法。

第二种是自动分割,允许预先定义特定对象类别(例如猫或椅子)的分割,但需要大量手动注释的对象进行训练(例如数千甚至数万个已经过分割处理的猫示例),以及计算资源和技术专业知识来训练分割模型。这两种方法都没有提供通用、完全自动化的分割方法。

SAM 集合了上面两种方法,成为一个单一模型,可以轻松执行交互式分割和自动分割。

1、SAM 允许用户通过单击、交互式点击或边界框提示来分割对象;

2、当面临关于正在分割的对象歧义时,SAM可以输出多个有效掩码,这是解决现实世界中分割问题所必需的重要能力;

3、SAM可以自动查找并遮罩图像中的所有对象;

4、在预计算图像嵌入后,SAM 可以为任何提示生成实时分割掩码,从而允许与模型进行实时交互。

论文出发点

在大规模数据集上预训练的大型语言模型正在通过强大的零样本和少样本泛化彻底改变 NLP。本文的目标是建立图像分割的基础模型,寻求开发一个可提示的模型,并使用能够实现强大泛化的任务在广泛的数据集上对其进行预训练,用该模型使用提示工程解决新数据分布上的一系列下游分割问题。该计划的成功取决于三个组成部分:任务、模型和数据。因此,需要解决以下有关图像分割的问题:1. 什么任务将实现零样本泛化?2、对应的模型架构是怎样的?3. 哪些数据可以为这项任务和模型提供支持?

创新思路

首先定义一个可提示的分割任务,该任务足够通用以提供强大的预训练目标并支持广泛的下游应用程序。它需要一个支持灵活提示的模型,并且可以在提示时实时输出分割掩码,以供交互使用。为了训练模型,需要多样化、大规模的数据源。该模型必须支持灵活的提示,需要分摊实时计算掩码以允许交互式使用,并且必须具有歧义意识。同时,为了实现对新数据分布的强泛化,有必要在大量不同的掩码集上训练 SAM,而不是已经存在的任何分割数据集。

方法

Segment Anything Task

先将提示的概念从 NLP 转化为分割,其中提示可以是一组前景/背景点、粗略的框或遮罩、自由格式的文本,或者一般来说,任何指示要分割的内容的信息一个图像。然后,可提示的分割任务是在给定任何提示的情况下返回有效的分割掩码。“有效”掩码的要求仅仅意味着即使提示不明确并且可能指代多个对象,输出也应该是一个合理的掩码这些对象中的至少一个。此要求类似于期望语言模型对模棱两可的提示输出连贯的响应。选择这个任务是因为它会产生一个自然的预训练算法和一个通过提示将零镜头转移到下游分割任务的通用方法。每列显示 SAM 从单个模糊点提示(绿色圆圈)生成的 3 个有效掩码:

Segment Anything Model

SAM 具有三个组件:图像编码器、灵活提示编码器和快速掩码解码器。图像编码器输出一个图像embedding,然后可以通过各种输入提示有效地查询,以分摊的实时速度生成对象掩码。对于对应于多个对象的模糊提示,SAM 可以输出多个有效掩码和相关的置信度分数。同时,SAM使用中使用的focal loss 和dice loss 的线性组合来监督掩码预测,并使用几何提示的混合来训练可提示的分割任务。

Segment Anything Data Engine

作者构建了一个数据引擎来收集1.1B 掩码数据集 SA-1B。数据引擎分为三个阶段:(1) 模型辅助手动注释阶段,(2) 混合自动预测掩码和模型辅助注释的半自动阶段, (3) 全自动阶段,SAM模型在没有注释器输入的情况下生成掩码。

Segment Anything Dataset

本文数据集 SA-1B 包含 1100 万张多样化、高分辨率、许可和隐私保护图像,以及使用数据引擎收集的 1.1B 高质量分割掩码。SA-1B 比现有最大的分割数据集 Open Images 多 11 倍的图像和多 400 倍的掩码,如下图:

结果

作者使用 mIoU 对全套 23 个数据集进行自动评估。我们将每个数据集结果与 RITM 进行了比较。 SAM 在 23 个数据集中的 16 个上产生了更高的结果,高达 ∼47 IoU。下面是一些具体结果的展示~

来自 23 个不同分割数据集的样本用于评估 SAM 的零样本传输能力:

掩码评估对比:是在 23 个数据集上的掩码评估。(a) SAM 和最强的单点分割器 RITM 的平均 IoU。(b) 从 1(最差)到 10(最好)的注释者对每个数据集的掩码质量评级进行比较。所有方法都使用ground truth mask center作为提示。(c, d) 具有不同点数的 mIoU。其中,SAM 以 1 分显着优于之前的交互式分割器,并且与更多点持平。

边缘检测任务:随后在BSDS500 上的零镜头进行边缘检测结果可视化,SAM 没有接受过预测边缘图的训练,也没有在训练期间访问 BSDS 图像或注释。

在BSDS500 上的边缘检测零样本传输对比情况:

目标检测对比情况:

实例分割对比情况:

可视化:

数据引擎阶段、图像编码器缩放和训练数据缩放的消融研究的消融实验:

SAM 背后的技术

Meta AI 团队在官博中直言到,SAM 的研发灵感来自于自然语言和计算机视觉中的 “prompt 工程”,只需对新数据集和任务执行零样本学习和少样本学习即可使其能够基于任何提示返回有效的分割掩模。其中,提示可以是前景/背景点、粗略框或掩模、自由文本或者一般情况下指示图像中需要进行分割的任何信息。有效掩模的要求意味着即使提示不明确并且可能涉及多个对象(例如,在衬衫上的一个点既可能表示衬衫也可能表示穿着它的人),输出应该是其中一个对象合理的掩模。这项任务用于预训练模型,并通过提示解决通用下游分割任务。

研发人员观察到预训练任务和交互式数据收集对模型设计施加了特定的限制。特别是,为了使标注员能够在实时交互中高效地进行标注,模型需要在 Web 浏览器上以实时方式运行于 CPU 上。虽然运行时间约束意味着质量和运行时间之间存在权衡,但他们发现,简单的设计在实践中产生良好的结果。

在模型设计中,图像编码器为图像生成一次性嵌入,而轻量级编码器实时将任何提示转换为嵌入向量。然后,在轻量级解码器中将这两个信息源组合起来以预测分割掩模。计算出图像嵌入后,SAM 可以在 Web 浏览器中仅用 50 毫秒的时间根据任何提示生成一个段落。

在 Web 浏览器中,SAM 高效地将图像特征和一组提示嵌入映射到生成分割掩模。

超 1100 万张照片,1B+掩码

数据集来自 SAM 收集,而在训练起初,并无任何数据,而今天发布的数据集已是迄今为止最大的数据了。注释员使用 SAM 交互式地注释图像,然后新注释的数据反过来用于更新 SAM,彼此相互作用,重复执行此循环来改善模型和数据集。

使用 SAM 收集新分割掩码比以往任何时候都更快,仅需约 14 秒即可交互式地注释掩码。相对于标记边界框所需时间约 7 秒钟(使用最快速度标记接口),每个掩码标记流程只慢 2 倍左右。与之前大规模分割数据收集努力相比,该模型比 COCO 完全手动基于多边形遮罩注释快 6.5 倍,比先前最大的数据注释工作快了 2 倍,并且是基于模型协助完成任务 。

尽管如此,交互式的标记掩码依然无法扩展创建 10 亿个掩码数据库,于是便有了用于创建 SA-1B 数据库的“引擎”。该引擎有三个“档位”。

  1. 在第一档中,模型协助注释员,相互作用;

  2. 第二档是完全自动化的注释与辅助注释相结合,有助于增加收集到的掩码的多样性;

  3. 数据引擎的最后一个档位是完全自动遮罩创建,进而使数据库可以扩展。

最终,数据集在超过 1100 万张经过许可和隐私保护的图像上收集到了超过 11 亿个分割掩模。SA-1B 比任何现有的分割数据集多 400 倍,经人类评估验证,这些掩模具有高质量和多样性,在某些情况下甚至可以与以前规模小得多、完全手动注释的数据集中的掩模相媲美。

Segment Anything 是通过使用数据引擎收集数百万张图像和掩模进行训练,从而得到一个超 10 亿个分割掩模的数据集,这比以往任何分割数据集都大400倍。

将来,SAM 可能被用于任何需要在图像中找到和分割任何对象的领域应用程序。

  • 对于 AI 研究社区或其他人来说,SAM 可能更普遍理解世界、例如理解网页视觉和文本内容等更大型 AI 系统中组件;

  • 在 AR/VR 领域,SAM 可以根据用户注视选择一个对象,然后将其“提升”到 3D;

  • 对于内容创作者来说,SAM 可以改进诸如提取碎片或视频编辑等创意应用程序;

  • SAM 也可用来辅助科学领域研究,如地球上甚至空间自然现象, 例如通过定位要研究并跟踪视频中的动物或物体。

最后,SAM 团队表示,通过分享他们的研究和数据集,来进一步加速分割更常见的图像和视频。可提示式分割模型可以作为较大系统中的组件执行分割任务。未来,通过组合系统可扩展单个模型使用,通过提示工程等技术实现可组合系统设计,进而使得比专门针对固定任务集训练的系统能够得更广泛的领域应用。

参考链接:https://ai.facebook.com/blog/segment-anything-foundation-model-image-segmentation/

上线一天,4k star | Facebook:Segment Anything

猜你喜欢

转载自blog.csdn.net/m0_61899108/article/details/129994666