Segment Anything Model(SAM)

news2024/11/17 13:40:01

Segment Anything Model(SAM)是Facebook Research近来开源的一种新的图像分割任务、模型。Segment Anything Model(SAM)可以从输入提示(如点或框)生成高质量的对象掩模,并可用于生成图像中所有对象的掩模。它已经在一个包含1100万张图像和110亿个掩模的数据集上进行了训练,可以将zero-shot transfer零样本迁移到新的图像分布和任务。其分割效果较为惊艳,是目前分割SOTA的算法。

SAM代码:https://github.com/facebookresearch/segment-anything
SAM官网:https://segment-anything.com
SAM论文:https://arxiv.org/pdf/2304.02643.pdf

1 概述

SAM,即Segment Anything,它借助了NLP任务中的Prompt思路,通过给图像分割任务提供一下Prompt提示来完成任意目标的快速分割。提示可以是前景/背景点集、粗略的框或遮罩、任意形式的文本或者任何指示图像中需要进行分割的信息。该任务的输入是原始的图像和一些提示语,输出是图片中不同目标的掩码信息。

在这里插入图片描述

2 Segment Anything Task

将NLP中的提示概念转化为分割领域。在这个领域中,提示可以是前景/背景点集、粗略的框或掩模、自由文本或者一般的任何指示图像中要分割的信息。因此,可提示的分割任务是在给定任何提示的情况下返回一个有效的分割掩模。所谓“有效”掩模,就是即使提示是模糊的并且可能涉及多个对象,输出应该是至少一个对象的合理掩模。

3 Segment Anything Model

用于提示式分割的Segment Anything Model (SAM)模型包含三个组件:图像编码器,提示编码器和掩码解码器。
在这里插入图片描述

Image encoder图像编码器。使用经过最小适应以处理高分辨率输入的MAE 预训练Vision Transformer (ViT) ,这是为了提高可扩展性和利用强大的预训练方法。图像编码器每个图像只运行一次,并且可以在提示模型之前应用。

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

Mask decoder掩码解码器。最后是掩码解码器。掩码解码器将图像嵌入、提示嵌入和输出令牌高效地映射到掩码。这个设计采用了Transformer解码器块的修改版本,后跟一个动态掩码预测头。修改的解码器块在两个方向上(提示到图像嵌入和反过来)使用提示自注意力和交叉注意力来更新所有嵌入。运行两个块后,上采样图像嵌入,并使用MLP将输出令牌映射到动态线性分类器,然后在每个图像位置计算掩码前景概率。

Resolving ambiguity解决歧义问题。对于一个模棱两可的提示,如果只有一个输出,模型将会对多个有效的掩码进行平均。为了解决这个问题,我们修改了模型,使其能够为一个单一提示预测多个输出掩码。我们发现,预测3个掩码输出就足以解决大多数常见情况(嵌套掩码通常最多只有三层:整体、部分和子部分)。为了更好地训练模型,我们只反向传播最小的掩码损失,以确保模型能够专注于最准确的掩码。此外,我们还为每个掩码预测了置信度分数,以便对掩码进行排序。这个置信度分数是根据预测掩码和真实掩码之间的IoU得出的。这样,我们可以在训练过程中更好地指导模型学习如何产生准确的掩码。

Efficiency效率。整个模型的设计主要是为了追求高效率。在给定预先计算的图像嵌入向量的情况下,提示编码器和掩码解码器可以在Web浏览器上以CPU方式运行,大约需要50毫秒的时间。这种运行时性能使我们的模型能够实现无缝、实时的交互式提示。

Losses and training损失和训练。为了监督掩码预测,我们采用了focal loss 和 dice loss的线性组合。我们使用一系列几何提示来训练可提示分割任务。为了模拟交互式设置,我们在每个掩码中随机抽样11轮提示,这样SAM就可以无缝地集成到我们的数据引擎中。

4 Segment Anything Data

4-1 Segment Anything Data Engine

由于分割掩码在互联网上并不丰富,因此我们构建了一个数据引擎来收集我们的1.1B掩码数据集SA-1B。该数据引擎分为三个阶段:(1)模型辅助手动注释阶段,(2)半自动阶段,包括自动预测掩码和模型辅助注释,以及(3)完全自动阶段,在该阶段中,我们的模型可以在没有标注者输入的情况下生成掩码。

Assisted-manual stage: 在模型辅助手动注释阶段初期,使用常见的公共分割数据集对SAM进行了训练。随着数据注释的增加,我们使用新注释的掩模对SAM进行了重新训练,并对图像编码器进行了扩展和其他架构细节进行了改进。在辅助手动阶段中,与经典的交互式分割类似,在一个由SAM提供支持的基于浏览器的交互式分割工具中,由一组专业标注员通过点击前景/背景对象点来标记掩模。我们没有强制施加语义约束来标记对象,标注员自由标记“物品”和“物质”。我们建议标注员标记他们可以命名或描述的对象,但没有收集这些名称或描述。要求标注员按突出程度标记对象。

在这个阶段,我们从120k个图像中收集了4.3M个掩模。

Semi-automatic stage: 在半自动阶段,我们旨在增加掩模的多样性,以提高模型对任何物体的分割能力。为了让注释者更加专注于不太显眼的对象,我们首先自动检测到了自信的掩模。然后,我们将这些掩模应用到图像中,并要求注释者标注任何未被覆盖的对象。为了检测自信的掩模,我们使用通用的“物体”类别在所有第一阶段的掩模上训练了一个边界框检测器。
在这个阶段,我们收集了额外的5.9M个掩模,总共达到了10.2M个掩模。

Fully automatic stage: 全自动阶段,标注变得完全自动化。这是由于我们的模型经历了两个主要的改进。首先,在这个阶段的开始,我们已经收集了足够的掩模,大大改善了模型,包括来自前一阶段的多样化掩模。其次,在这个阶段,我们开发了具有歧义感知能力的模型,使我们能够在歧义情况下预测有效的掩模。具体而言,我们通过一个32×32的点阵提示模型,并为每个点预测一组可能对应有效对象的掩模。通过具有歧义感知能力的模型,如果一个点位于部分或子部分上,我们的模型将返回子部分、部分和整个对象。我们的模型的IoU预测模块用于选择自信的掩模;此外,我们还确定并选择了稳定的掩模(我们认为如果将概率图阈值设置为0:5-δ和0:5+δ,结果相似的掩模即为稳定的掩模)。最后,在选择自信和稳定的掩模后,我们应用非最大抑制(NMS)来过滤重复的掩模。为了进一步提高较小掩模的质量,我们还处理了多个重叠的缩小图像裁剪。
我们将完全自动的掩模生成应用于我们数据集中的所有11M张图像,总共产生了1.1B个高质量的掩模。

4-2 Segment Anything Dataset

我们的数据集SA-1B包含了1100万张多样化、高分辨率、经过许可和隐私保护的图像,以及11亿个高质量的分割掩码,这些数据是通过我们的数据引擎收集的。
在这里插入图片描述

Images图像,我们从直接与摄影师合作的供应商处获得了一组新的1100万张图像,这些图像具有高分辨率(平均每张3300×4950像素),但数据大小可能会带来访问和存储方面的挑战。因此,我们发布的图像都是经过降采样处理的,最短边设置为1500像素。即使经过降采样,我们的图像分辨率仍然远高于许多现有的视觉数据集(例如,COCO数据集中的图像大小约为480×640像素)。

Masks掩码,我们的数据引擎生成了11亿个掩码,其中99.1%是完全自动化生成的。因此,自动掩码的质量至关重要。与主要分割数据集的比较,我们的自动掩码具有高质量和有效性,可用于训练模型。因此,SA-1B只包含自动生成的掩码。

Mask quality掩码的质量,我们随机抽样了500张图像(约50k个掩码),并要求专业标注者使用我们的模型和像素精确的“画笔”和“橡皮擦”编辑工具来改善这些图像中所有掩码的质量。这个过程产生了一组自动预测和专业纠正的掩码。我们计算了每一对掩码之间的IoU,并发现94%的对数IoU大于90%(97%的对数IoU大于75%)。相比之下,之前的研究估计标注者之间的一致性在85-91% IoU。我们的实验进一步证实了掩码的高质量,以及使用自动掩码训练模型的效果与使用数据引擎生成的所有掩码几乎相同。

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

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

相关文章

1、一条 SQL 查询语句是如何执行的?

基础篇 第一课、一条 SQL 查询语句是如何执行的? 下面是 MySQL 的基本架构示意图,从中可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存…

AI近十年盘点:纵览AI发展历程,探寻AI未来走向

编者按:当我们回顾过去十年的人工智能发展历程时,可以看到一场现在还正在进行的变革,对我们的工作方式、商业运营模式和人际交往行为都产生了深远的影响。从2013年的AlexNet到变分自编码器,再到最近的生成式大模型,人工…

Vue 2 - 常见面试题汇总大全

文章目录 一 基础知识1.vue 的生命周期1-1 钩子函数1-2 钩子函数的使用方法1-3 父子组件生命周期构造函数执行顺序 2 v-show 与 v-if v-for2-1.v-show 与 v-if 的区别2-2 v-if 和v-for的优先级 3.组件通信有哪些方式?4 computed和watch ,有什么区别4-1.c…

西门子S7-1200定时器

一、西门子S7-1200定时器介绍 S7-1200的定时器为IEC定时器,用户程序中可以使用的定时器数量仅仅受CPU的存储器容量限制。 使用定时器需要使用定时器相关的背景数据块或者数据类型为IEC_TIMER(或TP_TIME、TON_TIME、TOF_TIME、TONR_TIME)的D…

别再弄混流程挖掘、BPM和BI

信息时代以来,各类信息系统不仅在企业中得到了广泛的应用和普及,种类和选择伴随全球数字技术的发展也逐渐变得丰富多样。而随着数字化转型的不断深入,企业对系统管理的需求面临着全新的变化。 如何配置最适合当下业务的系统?这个…

Axure教程——图片轮播(纵向滚动)

本文介绍的时用Axure中的动态面板制作图片轮播之纵向滚动 一、预览效果 预览地址:https://c1s4i1.axshare.com 二、功能描述 图片纵向自动滚动播放 三、元件制作 拖入一个动态面板,命名为1,设置大小为375*155,并设置四个状态&…

文科生从0学Python转数据分析学习建议避坑指南

我本科是财务管理,文科专业,零基础学习Python转行数分后,现在我的日常工作都离不开它。 接下来,给各位跟我一样无编程经验的朋友一些学习的建议 目标导向:先搞清楚为啥要学 Python几乎可以做任何事,但我…

2023汽车供应链大会暨爱普搜采购商交流会

2023汽车供应链大会暨爱普搜采购商交流会 Automotive Supply Chain Conference & APSOTO Purchasing Exchange Meeting 补链强链 绿色发展--打造中国汽车供应链新生态 北京是我国汽车工业重地之一,产业实力雄厚,发展强劲。北京车企及零部件公司分布…

springboot高校宿舍报修管理系统计算机毕设 附源码83946

springboot高校宿舍报修管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实…

VUE L 事件处理 ⑤

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs E v e n t j s Eventjs Eventjs总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ ⡖⠒⠒⠒⠤⢄⠀⠀⠀…

Java反射机制以及应用

Java反射机制以及应用 1、Java反射 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对…

【推荐】免费PDF编辑修改软件排行榜Top11!

随着组织进入数字时代,他们需要处理大量数字文档,尤其是 PDF。PDF 是数字文档中使用最广泛的文件格式之一,能够编辑 PDF 文件至关重要。PDF编辑并不是任何软件都能轻松完成的。不过,网络上有大量免费、开源的 PDF 编辑软件可以帮助…

基于Springboot+vue+协同过滤+前后端分离+电子产品推荐系统(用户,多商户,管理员)+全套视频教程

基于Springbootvue协同过滤前后端分离电子产品推荐系统(用户,多商户,管理员)(毕业论文11000字以上,共33页,程序代码,MySQL数据库) 代码下载 链接:https://pan.baidu.com/s/1ckCKm4zKT0m4RqfHULYyOg 提取码:8888 【运行环境】Idea JDK1.8 Maven MySQL …

基于Servlet+JDBC实现的基础博客系统>>系列2 -- 前端基础页面

目录 1. 博客公共页面样式 2. 博客列表页 3. 博客详情页 4. 博客登录页 5. 博客编辑页 1. 博客公共页面样式 导航栏以及背景图设置 <body> <!-- 1.navigation 导航栏 --><div class"nav"><!-- logo --><img src"image/logo.png&q…

【深圳触觉智能技术分享】Purple Pi OH Android11 ROOT 方法

为了让应用程序可以直接调用su执行系统命令和获取root权限&#xff0c;本文基于Purple Pi OH主板的Android SDK&#xff0c;介绍如果修改和编译一个root版本的Android11系统,以下为sdk源码修改方法。 Purple Pi OH作为一款兼容树莓派的开源主板&#xff0c;采用瑞芯微RK3566 (…

【yocto2】利用yocto工具构建嵌入式Linux系统

1.定制化嵌入式linux系统 在实际项目中&#xff0c;一款嵌入式产品往往具有不同的硬件平台和软件需求&#xff0c;因此需要对嵌入式Linux系统进行定制&#xff0c;以满足不同的产品需求。之前的章节中基于Freescale官方提供的例程&#xff0c;构建了运行于imx6ull14x14evk硬件…

OpenCVForUnity(一)简介与插件

文章目录 前言:下载地址&#xff1a;官方文档/教学地址&#xff1a;主要模块的功能&#xff1a; 前言: 端午假期到了&#xff0c;最近我发现了一个非常有意思的课题——OpenCV&#xff0c;而我需要研究的则是OpenCVForUnity。它可以用于在Unity里处理图像、视频和摄像头数据&am…

Linux基础内容(24) —— 线程概念

Linux基础内容&#xff08;23&#xff09;—— 信号补充与多线程交接知识_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131275661?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22131275661%22%2…

【无监督学习】0、有监督学习、无监督学习、半监督学习

文章目录 一、有监督学习二、半监督学习三、无监督学习3.1 对比式学习 一、有监督学习 有监督学习最大的特点就是数据集是带标签的&#xff0c;如有监督分类任务&#xff0c;就是给每张图都分配一个真实标签&#xff0c;表示这张图是 dog、cat 或者是 bird。 而标签的作用就是…

Git基本操作命令

目录 一、简介 二、基本命令使用 (1) git add ---将该文件添加到暂存区 (2) git status --- 命令用于查看在上次提交之后是否有对文件进行再次修改 (3) git diff -- 比较文件在暂存区和工作区的差异 (4) git commit --- 将暂存区内容添加到本地仓库中 (5) git reset --…