Segment Anything(论文解析)

news2024/12/31 4:17:02

Segment Anything

    • 摘要
    • 1.介绍
    • 2 SAM任务
    • SAM模型

摘要

我们介绍了“Segment Anything” (SA) 项目:这是一个新的任务、模型和数据集对于图像分割。使用我们高效的模型进行数据收集,我们构建了迄今为止最大的分割数据集(远远超过其他数据集),其中包含了超过10亿个掩膜,覆盖了1100万张经过许可和尊重隐私的图像。该模型被设计和训练为可提示的,因此可以实现零次学习,适用于新的图像分布和任务。我们在多个任务上评估了它的性能,并发现它的零次学习性能令人印象深刻,通常可以与先前的完全监督结果相竞争甚至更优越。我们发布了“Segment Anything Model” (SAM) 和相应的数据集(SA-1B),其中包含10亿个掩膜和1100万张图像,网址为https://segment-anything.com,旨在促进计算机视觉基础模型的研究。

1.介绍

在大规模的基于网络的数据集上预训练的大型语言模型正在通过强大的零次学习和少次学习泛化[10] 彻底改变自然语言处理领域。这些“基础模型”[8] 能够泛化到训练期间未曾见过的任务和数据分布。这一能力通常通过提示工程来实现,其中手工创建的文本用于提示语言模型生成任务所需的有效文本响应。当这些模型使用来自网络的大量文本语料库进行扩展和训练时,它们的零次学习和少次学习性能出奇地与微调模型相媲美(在某些情况下甚至匹敌)[10, 21]。经验性趋势显示,这种行为随着模型规模、数据集大小和总训练计算资源的增加而得到改进[56, 10, 21, 51]。

尽管规模较小,但基础模型在计算机视觉领域也受到了研究。也许最明显的例子是从网络中对齐文本和图像的工作。例如,CLIP [82] 和ALIGN [55] 使用对比学习来训练文本和图像编码器,以使这两种模态对齐。一旦训练完成,通过精心设计的文本提示可以实现零次泛化,用于新颖的视觉概念和数据分布。这种编码器还可以与其他模块有效地组合,以实现下游任务,如图像生成(例如DALL·E [83])。尽管在视觉与语言编码器方面取得了很大进展,但计算机视觉涵盖了许多超出此范围的问题,而对于其中许多问题,没有丰富的训练数据。

在这项工作中,我们的目标是构建一个用于图像分割的基础模型。也就是说,我们希望开发一个可提示的模型,并在广泛的数据集上进行预训练,使用一个能够进行强大泛化的任务。借助这个模型,我们的目标是使用提示工程方法解决新的数据分布上的各种下游分割问题。

这一计划的成功取决于三个要素:任务、模型和数据。为了开发它们,我们需要解决有关图像分割的以下问题:

  1. 什么任务将实现zero-shot泛化?
  2. 对应的模型架构是什么?
  3. 什么数据可以支持这一任务和模型?

这些问题相互关联,需要综合解决。我们从定义一个可提示的分割任务开始,该任务足够通用,提供了强大的预训练目标,并能够支持广泛的下游应用。这个任务需要一个支持灵活提示并能够在实时提示时输出分割掩膜的模型,以支持交互式使用。为了训练我们的模型,我们需要一个多样化、大规模的数据来源。不幸的是,目前没有用于分割的大规模Web数据源;为了解决这个问题,我们构建了一个"数据引擎",即我们在使用我们高效的模型协助数据收集和使用新收集的数据来改进模型之间进行迭代。接下来,我们将介绍每个相互关联的组件,然后介绍我们创建的数据集以及展示我们方法的有效性的实验。

任务(§2)。在自然语言处理领域,以及最近在计算机视觉领域,基础模型是一个具有潜力的发展方向,它可以通过使用“提示”技术通常执行对新数据集和任务的零样本学习和少样本学习。受到这一领域工作的启发,我们提出了可提示的分割任务,其目标是根据任何分割提示返回有效的分割掩码(见图1a)。提示简单地指定了要在图像中分割的内容,例如,提示可以包括标识对象的空间或文本信息。有效的输出掩膜要求即使在提示模糊不清且可能涉及多个对象的情况下(例如,衬衫上的一个点可能既指衬衫又指穿戴者),输出应该是至少一个对象的合理掩膜。我们将可提示的分割任务用作预训练目标,以及通过提示工程解决通用的下游分割任务。

在这里插入图片描述
图1:我们旨在通过引入三个互相关联的组件来构建一个分割的基础模型:一个可提示的分割任务,一个用于数据注释并通过提示工程实现对一系列任务的零次转移的分割模型(SAM),以及用于收集SA-1B的数据引擎,这是我们的数据集,包含超过10亿个掩膜。

模型(§3)。可提示的分割任务和实际应用目标对模型架构施加了一些约束。特别是,模型必须支持灵活的提示,需要在摊销的实时内计算掩膜以允许交互使用,并且必须具备模糊感知能力。令人惊讶的是,我们发现一个简单的设计满足了这三个约束:一个强大的图像编码器计算图像嵌入,一个提示编码器嵌入提示,然后这两个信息源在一个轻量级的掩膜解码器中组合,用于预测分割掩膜。我们将这个模型称为"Segment Anything Model",或SAM(见图1b)。通过将SAM分为图像编码器和快速提示编码器/掩膜解码器,可以重复使用相同的图像嵌入(并摊销其成本)进行不同提示的操作。给定图像嵌入,提示编码器和掩膜解码器从提示中预测出一个掩码,在Web浏览器中以约50毫秒的速度进行操作。我们专注于点、框和掩码提示,并还提供了使用自由文本提示的初始结果。为了使SAM具备模糊感知能力,我们设计它可以为单个提示预测多个掩码,从而使SAM能够自然地处理模糊情况,比如衬衫与人的示例。

数据引擎(§4)。为了实现对新数据分布的强大泛化,我们发现有必要让SAM在大规模和多样化的掩码集上进行训练,超出了任何已经存在的分割数据集。对于基础模型来说,通常的方法是在线获取数据[82],但掩码并不是自然丰富的,因此我们需要一种替代策略。我们的解决方案是构建一个"数据引擎",也就是说,我们与模型在数据标注中共同开发(见图1c)。我们的数据引擎有三个阶段:辅助手动、半自动和全自动。在第一阶段,SAM协助标注员进行掩码标注,类似于经典的交互式分割设置。在第二阶段,SAM可以通过提示它可能的对象位置来自动生成部分对象的掩码,而标注员则专注于标注其余对象,有助于增加掩码的多样性。在最后一个阶段,我们使用前景点的常规网格提示SAM,从而平均每个图像产生约100个高质量的掩膜。

数据集(§5)。我们的最终数据集,SA-1B,包括来自1100万受许可且保护隐私的图像的超过10亿个掩码(见图2)。SA-1B是完全自动收集的,使用了我们数据引擎的最后阶段,它拥有比任何现有分割数据集[66, 44, 117, 60]多400倍的掩膜数量,而且如我们广泛验证的那样,这些掩膜质量高且多样化。除了在训练SAM以使其更强大和通用方面的用途,我们希望SA-1B成为旨在构建新的基础模型的研究的有价值的资源。

责任AI(§6)。我们研究并报告了在使用SA-1B和SAM时可能存在的公平性关切和偏见。SA-1B中的图像跨足了各种地理和经济多样化的国家,我们发现SAM在不同人群中表现相似。我们希望这将使我们的工作在实际应用中更加公平。我们在附录中提供了模型和数据集卡片。

实验(§7)。我们对SAM进行了广泛的评估。首先,使用一套多样化的23个分割数据集,我们发现SAM从单个前景点生成的掩模质量很高,通常只略低于手动注释的地面实况。其次,我们在使用提示工程的零照射转移协议下,在各种下游任务上得到了一致强大的定量和定性结果,包括边缘检测、目标提议生成、实例分割,以及对文本到掩模预测的初步探索。这些结果表明,SAM可以立即使用提示工程来解决涉及SAM培训数据之外的对象和图像分布的各种任务。然而,仍然有改进的空间,我们将在第8节中讨论。

发布.我们正在发布SA-1B数据集用于研究目的,并在https://segment-anything.com上以许可的开放许可证(Apache 2.0)提供SAM。我们还通过在线演示展示了SAM的功能。
在这里插入图片描述
图2:示例图像,上面叠加了我们新引入的数据集SA-1B的掩膜。SA-1B包含了1100万多样化的、高分辨率的、经过许可的、以及保护隐私的图像和11亿高质量的分割掩膜。这些掩膜是由SAM完全自动注释的,并经过人工评分和众多实验的验证,质量和多样性都很高。我们按每个图像的掩膜数量对图像进行分组以进行可视化(平均每个图像有大约100个掩膜)。

2 SAM任务

我们受到了自然语言处理领域的启发,那里的下一个标记预测任务被用于基础模型的预训练以及通过提示工程解决多种下游任务[10]。为了构建分割的基础模型,我们的目标是定义一个具有类似功能的任务。

任务。我们首先将从自然语言处理领域的“提示”概念转化为分割领域,其中提示可以是一组前景/背景点、粗略的框或掩模、自由文本,或者一般来说,任何指示图像中要分割的内容的信息。因此,可提示的分割任务是在给定任何提示的情况下返回有效的分割掩模。 “有效” 掩模的要求简单地意味着,即使提示有歧义并且可能涉及多个对象(例如,回想一下衬衫与人的例子,参见图3),输出应对其中至少一个对象生成一个合理的掩模。这一要求类似于期望语言模型对模糊的提示产生连贯的响应。我们选择这个任务,因为它会导致一种自然的预训练算法,以及通过提示实现零-shot迁移到下游分割任务的通用方法。

在这里插入图片描述
图3:每列显示SAM从单个模糊点提示(绿色圆圈)生成的3个有效掩码。

预训练。可提示的分割任务建议了一种自然的预训练算法,该算法模拟了每个训练样本的一系列提示(例如,点、框或掩模),并将模型的掩模预测与地面实况进行比较。我们改编了这种方法自交互式分割(interactive segmentation)[109, 70],尽管与交互式分割的目标是在获得足够用户输入后最终预测一个有效的掩模不同,我们的目标是在任何提示下始终预测一个有效的掩模,即使提示具有歧义。这确保了预训练模型在涉及歧义的使用案例中的有效性,包括我们数据引擎 §4 中所需的自动注释。我们注意到,在这个任务中表现良好是具有挑战性的,需要专门的建模和训练损失选择,这些内容我们在第3节中进行了讨论。

零次迁移。直观地说,我们的预训练任务使模型在推断时具备对任何提示做出适当响应的能力,因此可以通过设计适当的提示来解决下游任务。例如,如果有一个用于检测猫的边界框检测器,那么可以通过将检测器的边界框输出作为提示提供给我们的模型来解决猫实例分割问题。一般来说,许多实际的分割任务都可以通过提示来完成。除了用于自动数据集标记之外,在我们的实验中,我们还探索了五个不同的示例任务,具体内容在第7节中介绍。

相关任务。分割是一个广泛的领域:包括交互式分割、边缘检测、超像素生成、对象提议生成、前景分割、语义分割、实例分割、全景分割等。我们的可提示分割任务的目标是创建一个通用模型,能够通过提示工程适应许多(尽管不是所有)现有和新的分割任务。这种能力是一种任务泛化的形式。请注意,这与以前的多任务分割系统不同。在多任务系统中,单一模型执行一组固定的任务,例如联合语义、实例和全景分割,但训练和测试任务是相同的。我们工作的一个重要区别在于,通过训练可提示分割模型,该模型可以在推断时通过充当较大系统的组件来执行新的不同任务,例如,要执行实例分割,可提示分割模型与现有的对象检测器组合在一起。

讨论。提示和组合是强大的工具,使单个模型可以以可扩展的方式使用,潜在地可以执行在模型设计时不知道的任务,这与其他基础模型的使用方式类似,例如,CLIP是DALL·E图像生成系统的文本-图像对齐组件。我们预计,可组合的系统设计,借助提示工程等技术,将实现比专门针对一组固定任务训练的系统更多样的应用。此外,通过组合的角度来看,有趣的是可提示分割和交互式分割:尽管交互式分割模型是为人类用户设计的,但经过可提示分割培训的模型也可以组合到更大的算法系统中,正如我们将在示例中演示的。

SAM模型

接下来,我们将介绍用于可提示分割的Segment Anything Model(SAM)。SAM有三个组件,如图4所示:图像编码器、灵活的提示编码器和快速掩膜解码器。我们基于具有特定折衷的变压器视觉模型[14, 33, 20, 62]来实现(摊销)实时性能。我们在这里以高层次介绍这些组件,详细信息请参阅§A。

在这里插入图片描述
图 4:Segment Anything Model(SAM)概述。重量级图像编码器输出图像嵌入,然后可以通过各种输入提示进行高效查询,以以摊销的实时速度生成对象掩膜。对于与多个对象对应的模糊提示,SAM可以输出多个有效掩码和相关的置信度分数。

图像编码器。出于可伸缩性和强大的预训练方法的动机,我们使用了经MAE [47]预训练的Vision Transformer(ViT)[33],经过最小的自适应处理以处理高分辨率的输入[62]。图像编码器每张图片运行一次,并可以在提示模型之前应用。

提示编码器。我们考虑两组提示:稀疏提示(点、框、文本)和密集提示(掩码)。我们通过位置编码[95]表示点和框,这些位置编码与每种提示类型的学习嵌入相加,而对于自由文本,我们使用CLIP [82]的现成文本编码器。密集提示(即掩码)使用卷积嵌入,与图像嵌入按元素相加。

掩膜解码器。掩膜解码器高效地将图像嵌入、提示嵌入和输出令牌映射到一个掩膜。这个设计受到[14, 20]的启发,采用了Transformer解码器块[103]的修改,后跟一个动态掩码预测头。我们的修改后的解码器块使用提示的自注意力和双向交叉关注(提示到图像嵌入和反之亦然)来更新所有嵌入。在运行两个块后,我们将图像嵌入上采样,然后一个MLP将输出令牌映射到一个动态线性分类器,然后计算每个图像位置的掩膜前景概率。

解决模糊性。使用一个输出,如果给出模糊提示,模型将综合多个有效的掩膜。为了解决这个问题,我们修改了模型,以便为单个提示预测多个输出掩膜(参见图3)。我们发现3个掩膜输出足以处理大多数常见情况(嵌套掩码通常最多三层深:整体、部分和子部分)。在训练过程中,我们仅反向传播相对于掩膜的最小损失[15, 45, 64]。为了对掩膜进行排名,模型预测了每个掩膜的置信分数(即估计的IoU)。

效率。总体模型设计在很大程度上受效率的启发。在给定预计算的图像嵌入的情况下,提示编码器和掩码解码器在Web浏览器上以CPU方式运行,耗时约为50毫秒。这种运行时性能使我们的模型可以无缝、实时地进行交互提示。

损失和训练。我们使用在[14]中使用的焦点损失[65]和Dice损失[73]的线性组合来监督掩码预测。我们使用几何提示的混合来训练提示性分割任务(有关文本提示,请参见第7.5节)。按照[92, 37]的方法,我们通过在每个掩码的11轮中随机采样提示来模拟交互式设置,使SAM能够无缝地集成到我们的数据引擎中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1100570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言进行实验:通过程序实现线算图取值【支持VC++ 6.0编辑器环境运行】

背景: 一、实验目的和要求 1、能描述数据基本类型及其常量的表示方法; 2、会对变量进行定义及初始化; 3、能使用运算符与表达式对变量赋值; 4、会描述C语句的概念及种类、C语言常用的输入/出方式; 5、会设计顺序…

typora主题切换与推荐主题

在这篇博文中,我将向你展示如何给typora更换主题,并推荐几款出色的主题。通过这些主题的使用,你可以为你的typora编辑器增添一抹别样的风采,让你的写作体验更加美好、舒适。 typora替换主题的步骤非常简单,只需按照以…

科技资讯|苹果Vision Pro可通过手势ID检测不同用户

近日,美国专利局公布了苹果公司的一项专利申请,该专利申请涉及基于手部特征验证用户身份的技术。苹果指出,可能是多个家庭成员都想使用 Apple Vision Pro,系统必须识别不同的手势以控制 visionOS。在另一个示例中,苹果…

无频闪护眼灯哪个好?五款无频闪护眼台灯推荐

青少年的近视率持续升高,保护眼睛非常重要。台灯是用眼环境的必备品,而市面上款式多样不知如何购买。这期就来聊聊护眼台灯的选购问题! 都说成人的世界不容易,社交网络上时常有人吐槽996工作制,但要知道的是现在的学生…

(vue)el-descriptions 描述列表无效

(vue)el-descriptions 描述列表无效 原因:element 的版本不够 解决:运行下面两个命令 npm uninstall element-ui //卸载之前安装的版本 npm i element-ui -S //重新安装解决参考:https://blog.csdn.net/weixin_59769148/article/details/1…

vector+算法sort与list+sort的效率比较,容易写错的地方原因探析

我写的代码&#xff1a; #include <iostream> using namespace std; #include <vector> #include <list> #include <algorithm> int main() {const int N 10000000;vector<int> v;list<int> l;for (int i 0; i < N; i){v.push_back(…

SpringCloud Gateway网关梳理

前言 在中大型系统中&#xff0c;Gateway网关发挥着关键的作用&#xff0c;Gateway可以运用在许多应用场景&#xff0c;如接口限流、日志监控、授权认证等等。下面对过往的Gateway知识做一个归纳与总结。 一、路由 路由是Gateway网关中的基础组件&#xff0c;它由一个org.sp…

C#开发的OpenRA游戏之金钱系统(2)

C#开发的OpenRA游戏之金钱系统(2) 在我们玩这个游戏时,就会发现每当创建一个新精炼工厂,就会带有一台采矿车,这是怎么样实现的呢? 这个就需要查看建筑物下面这个字段: FreeActor: Actor: HARV SpawnOffset: 1,2 Facing: 256 FreeActor就是标记为免费的物品,在这里

xdma axi-stream

xdma 回环 vivado 里有官方示例 fpga&#xff1a;pcie rx – axi-stream master – axi-stream slave – pcie tx 流程&#xff1a;电脑启动读取&#xff0c;然后电脑再在超时时间内写入。或者电脑启动写入&#xff0c;然后电脑再在超时时间内读出。只读取或只写入会报超时&am…

小程序开发平台源码系统+活动在线报名小程序功能 带完整的搭建教程

今天来给大家分享一下小程序开发平台源码系统的活动在线报名小程序功能。活动在线报名小程序是一种方便快捷的活动报名方式&#xff0c;可以通过小程序进行宣传和报名&#xff0c;让参与者可以方便快捷地进行报名和参加活动。小程序有完整的搭建教程&#xff0c;以下是部分功能…

【14】基础知识:React - redux

一、 redux理解 1、学习文档 英文文档&#xff1a;https://redux.js.org/ 中文文档&#xff1a;http://www.redux.org.cn/ Github: https://github.com/reactjs/redux 2、redux是什么 redux 是一个专门用于做状态管理的 JS 库(不是 react 插件库)。 它可以用在 react&am…

记一次MySQL5初始化被kill的问题排查 | 京东云技术团队

写在前面 由于测试环境JED申请比较繁琐&#xff0c;所以Eone提供了单机版Mysql供用户使用&#xff0c;近期Eone搭建Mysql5的时候发现莫名被kill了&#xff0c;容器规格是4C8G&#xff0c;磁盘30G 这不科学&#xff0c;之前都是可以的&#xff0c;镜像没变&#xff0c;配置没变…

分享大数据培训班班型

泰迪大数据培训班有VIP就业保障班&#xff0c;项目实战班&#xff0c;技能进阶班&#xff0c;技能提升班。不同班型对应不同学习服务。 一、VIP 就业保障班 二、大数据分析/开发项目实战班 三、技能进阶班 四、技能提升班

RabbitMQ 安装和使用Demo

同步是阻塞 MQ&#xff1a;消息队列&#xff0c;基础数据结构中"先进先出"的数据结构。用来解决应用解耦&#xff0c;异步消息&#xff0c;流量消峰等问题。 RabbitMQ、RocketMQ、Kafka RocketMQ 是阿里的 应用层开发使用RabbitMQ 大数据开发Kafka MQ是不是微服务都…

【MATLAB源码-第49期】基于蚁群算法(ACO)算法的栅格路径规划,输出最佳路径图和算法收敛曲线图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蚁群算法是一种模拟自然界蚂蚁觅食行为的启发式优化算法。在蚁群系统中&#xff0c;通过模拟蚂蚁之间通过信息素沟通的方式来寻找最短路径。 在栅格路径规划中&#xff0c;蚁群算法的基本步骤如下&#xff1a; 1. 初始化: …

【Redis】Redis持久化策略

目录 策略RDBbgsave执行流程RDB效果演示RDB优缺点 AOFAOF缓冲区刷新策略AOF的重写机制AOF重写机制的触发机制AOF重写流程 混合持久化同时存在aof和rdb快照&#xff0c;以谁为主&#xff1f;信号 策略 RDB > Redis DataBase 相当于定期的方式实现持久化AOF > Append Only…

Python网络编程改良版客户端

在《Python中套接字实现客户端和服务端3-3》中提到&#xff0c;客户端可以通过connect()方法连接服务端&#xff0c;而连接成功的前提是服务端在必须客户端连接之前就要等待连接。 1 当客户端连接时&#xff0c;服务端没有打开 如果客户端连接服务端时&#xff0c;服务端并没…

通过商品ID查询淘宝商品详情数据,可以拿到商品标题,商品价格,商品库存,商品销量,商品sku数据等,淘宝API接口

通过商品ID查询淘宝商品详情数据可以参考以下步骤&#xff1a; 进入淘宝网站&#xff0c;搜索需要查询的商品ID&#xff0c;例如&#xff1a;652874751412。复制该商品的ID号。点击获取请求key和secret地址&#xff0c;请求参数为num_iid商品ID&is_promotion1。发送请求&a…

企业立案信息API的优势与应用场景

引言 随着科技的不断进步&#xff0c;创业者和企业家们在创办新企业时愈发依赖数字化工具。其中&#xff0c;企业立案信息API成为了一项重要的资源&#xff0c;它提供了有关企业立案的关键信息&#xff0c;为企业家们提供了许多优势和丰富的应用场景。本文将探讨企业立案信息A…

【API篇】四、物理分区算子API

文章目录 1、 分区算子&#xff1a;随机分区2、分区算子&#xff1a;轮询分区3、分区算子&#xff1a;重缩放分区4、分区算子&#xff1a;广播5、分区算子&#xff1a;全局分区6、自定义分区 重分区&#xff0c;即数据"洗牌"&#xff0c;将数据分配到下游算子的并行子…