Segment Anything论文详解(SAM)

news2025/1/16 3:45:27

论文名称:Segment Anything

论文地址:https://arxiv.org/abs/2304.02643

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

demo地址:Segment Anything | Meta AI

主要贡献:开发一个可提示的图像分割的基础模型,在一个广泛的数据集上预训练,解决新数据分布上的一系列下游分割问题

1. Introduction

1.1 任务

通过使用‘prompt’技术对新的数据集和任务执行zero shot和few shot学习受到启发,提出可交互式图像分割模型,目标是在给定任何分割提示下返回一个有效的分割掩码(见图1a)。提示只是指定要在图像中分割的内容,可以有效的输出,即使提示是模棱两可的,可以指多个对象,输出应该是一个合理的至少一个对象的mask。使用提示分割任务作为训练前的目标,并通过提示工程来解决一般的下游分割任务。

1.2 模型

提示词编码器嵌入提示+图像编码器计算图像嵌入+轻量级掩码解码器中来预测分割掩码=Segment Anything,SAM(见图1b)。通过将SAM分离为一个图像编码器和一个快速提示编码器/掩码解码器,相同的图像嵌入可以用不同的提示被重用。给定一个图像嵌入,提示编码器和掩码解码器在web浏览器中以50毫秒的提示预测掩码。关注点、框和掩码提示,并使用自由形式的文本提示显示初始结果。

1.3 数据

数据用于模型训练,模型检测未知数据,构建一个“数据引擎”。在第一阶段,SAM协助注释器对掩码进行注释,类似于经典的交互式分割设置。在第二阶段,SAM可以通过提示可能的对象位置来为对象子集自动生成掩码,注释器专注于对其余对象的注释,帮助增加掩码的多样性。在最后一个阶段,我们用一个规则的前景点网格提示SAM,平均每张图像产生100个高质量的掩模。最终得到1100万张授权的图片上有超过10亿个尊重隐私的掩码数据。

2. Segment Anything Task

2.1 任务
首先将提示的想法从 NLP 转换为分割,其中提示可以是一组前景/背景点、粗略框或掩码、自由形式的文本,或者任何指示图像中分割什么的信息。根据提示返回一个有效的分割掩码。“有效”意味着,即使提示模棱两可,可以引用多个对象(例如衬衫与人的例子),输出也至少是其中一个合理的掩码。类似于期望一个语言模型对一个模糊的提示输出一个一致的响应。该任务导向了一种自然的预训练算法和一种通过提示将zero shot 转移到下游分割任务的通用方法。

2.2 预训练

可提示的分割任务提出了一种自然的预训练算法,该算法模拟每个训练样本的一系列提示(例如,点、框、掩码),并将模型的掩码预测与基本事实进行比较。我们采用交互分割的方法,与旨在最终在足够的用户输入后预测有效掩码的交互分割不同,我们的目标是始终为任何提示预测有效的掩码,即使提示不明确。这确保了预训练模型在涉及歧义的用例中是有效的,包括数据引擎所需的自动注释。

2.3 zero shot transfer

预训练任务赋予模型在推理时对任何提示做出适当反应的能力,因此下游任务可以通过工程适当的提示来解决。例如,如果一个有猫的目标检测器,则可以通过提供检测框输出作为我们模型的提示来解决猫实例分割。一般来说,广泛的实用分割任务可以被视为提示。

2.4 相关任务

分割是一个广泛的领域:交互式分割,边缘检测,超像素化,目标区域生成,前景分割,语义分割,实例分割,全景分割等。我们的可提示分割任务的目标是建立一种能力广泛的模型,可以通过提示工程适应许多(尽管不是全部)现有和新的分割任务该能力是任务泛化的一种形式。不同于多任务系统(单个模型执行一组固定的任务,如联合语义、实例和全光分割,训练和测试任务相同),我们的可提示分割的模型,可以作为一个更大的系统中的一个组件,在推理时执行一个新的、不同的任务,例如,执行实例分割,一个可提示分割模型与现有的目标检测器相结合。

2.5讨论
提示和组合是一种强大的工具,它使单个模型能够以可扩展的方式使用,并有可能完成在模型设计时未知的任务。类似于其他基础模型的使用方式,例如,CLIP如何使DALL·E图像生成系统的文本-图像对齐组件。

3. Segment Anything Model

SAM有三个组件,如图4所示:图像encoder、灵活的提示encoder和快速掩码decoder。我们建立在Vision Transformer上,对实时性能进行特定的权衡。如图

3.1 图像编码器

基于可扩展和强大的预训练方法,我们使用MAE预训练的ViT,最小限度地适用于处理高分辨率输入。图像编码器对每张图像运行一次,在提示模型之前进行应用。

3.2 提示编码器

考虑两组提示:稀疏(点、框、文本)和密集(掩码)。通过位置编码来表示点和框,并将对每个提示类型的学习嵌入和自由形式的文本与CLIP中的现成文本编码相加。密集的提示(即掩码)使用卷积进行嵌入,并通过图像嵌入进行元素求和。

3.3 掩码解码器

掩码解码器有效地将图像嵌入、提示嵌入和输出token映射到掩码。该设计的灵感来自于DETR,采用了对(带有动态掩模预测头的)Transformer decoder模块的修改。

3.4 解决歧义

对于一个输出,如果给出一个模糊的提示,该模型将平均多个有效的掩码。为了解决这个问题,我们修改了模型,以预测单个提示的多个输出掩码(见下图,绿色点为输入的提示点)。我们发现3个掩模输出足以解决大多数常见的情况(嵌套掩模通常最多有三个深度:整体、部分和子部分)。在训练期间,我们只支持mask上的最小损失[匈牙利损失]。为了对掩码进行排名,该模型预测了每个掩码的置信度分数(即估计的IoU)

4. SAM Data engine

4.1 模型辅助手动注释阶段

4.2 包含自动预测掩码和模型辅助注释的半自动化阶段

4.3全自动阶段

5. 数据集

1100万张新图产生了1.1B个mask

7. Zero-Shot Transfer Experiments(熟悉的名称他来了)

7.1 zero shot 单点有效掩模评估

任务:评估从单个前景点分割一个对象,因为一个点可以指代多个对象。大多数数据集中的标签掩码不会枚举所有可能的掩码,这可能会使自动度量不可靠。因此,我们补充了标准mIoU度量(即预测和标签掩模之间的所有IoU的平均值),在该研究中,注释者将掩码质量从1(无意义)评级到10(像素完美)。

数据集:使用一套新编译的23个具有不同图像分布的数据集,来进行mIoU评估

7.2 zero shot 目标 proposal

接下来,我们评估了SAM在对象提案生成的中级任务上的作用。这项任务在目标检测研究中发挥了重要的作用,作为开创性系统的中间步骤。为了生成对象建议,我们运行一个稍微修改的自动掩码生成管道的版本,并将掩码输出为提案。
我们计算了LVIS v1 上的标准平均召回率(AR)度量。我们关注LVIS,因为它的大量类别是一个具有挑战性的测试。我们与作为ViTDet 检测器(带有级联掩模R-CNN ViT-H)实现的强基线进行了比较。

SAM在中型和大型物体以及稀有和普通物体上都优于ViTDet-H,在小对象和频繁对象上的表现低于ViTDet-H,其中ViTDet-H可以很容易地学习LVIS特定的注释偏差,因为它是在LVIS上训练的。我们还比较了消融的模糊模糊版本的SAM,它在所有AR指标上的表现都明显低于SAM。

7.3 zero shot 文本到掩码

最后,我们考虑一个更高层次的任务:从自由形式的文本中分割对象。这个实验证明了SAM处理文本提示的能力。SAM的训练过程被修改以使其能够感知文本,但其方式不需要新的文本注释。具体来说,对于每个手动收集的面积大于1002的掩模,我们提取了CLIP图像嵌入。然后,在训练过程中,我们将提取的CLIP图像嵌入作为第一次交互,提示SAM。这里的关键观察结果是,由于CLIP的图像嵌入被训练成与文本嵌入对齐,所以我们可以使用图像嵌入进行训练,但要使用文本嵌入进行推理。也就是说,在推理时,我们通过CLIP的文本编码器运行文本,然后将生成的文本嵌入作为提示符提供给SAM。当SAM不能仅从文本提示中选择正确的对象时,一个额外的点提示可以提供帮助。

 8.总结

目标检测and分割什么的已经到顶了,研究点别的吧哈哈哈



 

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

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

相关文章

6.Java数组

数组 一、数组概述 1、什么是数组? 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。 2、数组的…

哈夫曼树和最小生成树

哈夫曼树 首先给我们一串权值,然后我们需要让这串权值组成一个树,然后当他的wpl最小 我们可以发现当他的小权值离根节点越远,大权值离根节点越近的时候,我们这个时候构建出来的树就是wpl最小的树,也就是我们说的哈夫曼…

c++之 类和对象

目录 1.类和对象的基本概念 1.c语言与c中的结构体 2.类的封装性 3.定义类 4.构造与析构 构造与析构的概念: 构造函数 析构函数 拷贝构造函数 c默认增加的函数 1.类和对象的基本概念 1.c语言与c中的结构体 我们知道在c语言里,我们是无法在结构体…

进程的开销比线程大在了哪里?

进程内部都有哪些数据? 为什么创建进程的成本很高? 这样的问题确实不好回答,除非你真正理解了进程和线程的原理,否则很容易掉入面试大坑。探究问题背后的原理,围绕面试题展开理论与实践知识的学习。真正理解进程和线…

centos7虚拟机下hbase的使用案例讲解

系列文章目录 centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤 centos7虚拟机配置集群时间同步的操作步骤_centos虚拟机时间同步 centos7配置zookeeper本地模式与集群模式的详细教程 卸载centos7自带的jdk的操作步骤_centos7 卸载java 虚拟机centos7配置Hadoop单…

如何用 Vitis HLS 实现 OpenCV 仿真

这篇文章的基础是《Windows上快速部署Vitis HLS OpenCV仿真库》,我们使用的版本是Vitis HLS 2022.2,其他版本BUG不清楚,目前已知2021版本有BUG,只能使用其他方式,本文不适合。 这次选择中值滤波这个常规算法作为演示算…

Springboot电脑商城项目

目录 系统概述与环境搭建 1 系统开发及运行环境 2 项目分析 3 创建数据库 4 创建Spring Initializr项目 5 配置并运行项目 6 导入前端项目 用户注册 1 用户-创建数据表 2 用户-创建实体类 3 用户-注册-持久层 4 用户-注册-业务层 5 用户-注册-控制器 6 用户-注册…

归并排序(递归实现)

上一次我们说了快排的其他版本,还有就是快排的非递归实现 这次我们就说一哈归并排序,归并排序也是很厉害的一种排序,而且归并排序的时间复杂度可以说成标准的O(n log n) 下面我们就来看一下归并排序 我们先来看一下什么是归并排序 假设我…

Scratch蓝桥杯实战训练 —— 巧解“韩信点兵”难题的五种方式

“韩信点兵”蓝桥杯问题描述: “蓝桥杯”中有一道有趣的 Scratch 编程题,题目要求为:韩信点兵 扩展知识: 这道题叫“中国余数定理”,又叫“孙子定理”,也叫“韩信点兵问题”,是我国古代数学智慧…

Faster-RCNN代码解读3:制作自己的数据加载器

Faster-RCNN代码解读3:制作自己的数据加载器 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。 ​ 代码来自于B站的UP主&…

Node【三】Buffer 与 Stream

文章目录🌟前言🌟Buffer🌟 Buffer结构🌟 什么时候用Buffer🌟 Buffer的转换🌟 Buffer使用🌟 创建Buffer🌟 字符串转Buffer🌟 Buffer转字符串🌟 拼接Buffer&…

python 理解BN、LN、IN、GN归一化、分析torch.nn.LayerNorm()和torch.var()工作原理

目录 前言: 简言之BN、LN、IN、GN等归一化的区别: 批量归一化(Batch Normalization,BN) 优点 缺点 计算过程 层归一化(Layer Normalization,LN) 优点 计算过程 总结 分析torch.nn.LayerNorm()工作原理 分析torch.var(…

Vue2-黑马(十一)

目录: (1)vue2-联调准备 (2)vue2-登录实战-国际化 (3)vue2实战-登录-login-index.vue (1)vue2-联调准备 登录这个请求,并不是发给后台的,现在还…

浙大MBA提面申请材料的三六九等……

每年浙大MBA项目提前批面试申请的每个批次中都会有部分材料因为某些原因而被淘汰,无缘面试资格。考生们由最初的不理解到逐渐隐约的理解,行至今日也可以大体接受材料被刷这个结果,当然其中含有一部分面上资质背景还可以的考生,等到…

Faster-RCNN代码解读2:快速上手使用

Faster-RCNN代码解读2:快速上手使用 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。 ​ 代码来自于B站的UP主(…

中国电子学会2023年03月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2023-03 Scratch四级真题 分数:100 题数:24 测试时长:90min 一、单选题(共10题,共30分) 1.编写一段程序,从26个英文字母中,随机选出10个加入列表a。空白处应填入的代码是?(C&am…

Flink (十二) --------- Flink CEP

目录一、基本概念1. CEP 是什么2. 模式 (Pattern)3. 应用场景二、快速上手1. 需要引入的依赖2. 一个简单实例三、模式 API(Pattern API)1. 个体模式2. 组合模式3. 模式组4. 匹配后跳过策略四、模式的检测处理1. 将模式应用到流上2. 处理匹配事件3. 处理超…

【高项】项目整体管理、范围管理与进度管理(十大管理)

【高项】项目整体管理与范围管理 文章目录1、项目整体管理1.1 整体管理的过程1.2 制定项目章程(启动)1.3 制订项目管理计划(规划)1.4 指导与管理项目执行(执行)1.5 监控项目工作与实施整体变更控制&#xf…

Systemverilog中operators和expression的记录

1. Equality operators Equality operators有三种: Logical equality:, !,该运算符中如果运算数包含有x/z态,那么结果就是x态。只有在两边的bit都不包含x/z态,最终结果才会为0(False)或1(True)Case equality&#xf…

中云盾DDoS云防护系统

中云盾 DDoS 防护系统作为公司级网络安全产品,为各类业务提供专业可靠的 DDoS/CC 攻击防护。在黑客攻防对抗日益激烈的环境下, DDoS 对抗不仅需要 “降本” 还需要 “增效”。 为什么上云? 云原生作为近年来相当热门的概念,无论…