Nikolaj Buhl : Segment Anything 模型 (SAM) 解释

2023-11-16


本文转译于 Nikolaj Buhl博士Blog

Meta 的人工智能和计算机视觉简史

作为人工智能 (AI) 领域的领先公司之一,Meta 一直在突破机器学习模型的极限。从最近发布的LLaMA等开源模型到开发最常用的 ML 和 AI Python 库PyTorch。

以下部分深入探讨了计算机视觉的进步和基础模型的发展。

计算机视觉的进展

计算机视觉也经历了相当大的进步,像CLIP这样的模型弥合了文本和图像理解之间的鸿沟。

这些模型使用对比学习来映射文本和图像数据。这使他们能够通过及时的工程推广到新的视觉概念和数据分布。

FAIR 的 Segment Anything Model (SAM) 是该领域的最新突破。他们的目标是为图像分割创建一个基础模型,该模型可以使用提示工程适应各种下游任务。

让我们简要探讨一下计算机视觉领域的一些关键发展,这些发展对 Meta 等 AI 系统的发展做出了贡献。

卷积神经网络 (CNN)

CNN于 1989 年由Yann LeCun (现任 Meta 副总裁兼首席 AI 科学家)首次引入,现已成为现代计算机视觉系统的支柱,使机器能够自动学习和识别图像中的复杂模式。

通过使用卷积层,CNN 可以捕获图像中的局部和全局特征,从而使它们能够有效地识别物体、场景和动作。这导致图像分类、对象检测和语义分割等任务的显着改进。

生成对抗网络 (GAN)

GAN是 Ian Goodfellow 和他的团队在 2014 年提出的一种深度学习模型。它们由两个相互竞争的神经网络(生成器和鉴别器)组成。

生成器旨在创建逼真的输出,而鉴别器则试图区分真实输出和生成的输出。这些网络之间的竞争导致了越来越逼真的合成图像的创建,并导致了图像合成、数据增强和风格转换等任务的进步。

迁移学习和预训练模型

与 NLP 类似,计算机视觉受益于预训练模型的开发,这些模型可以针对特定任务进行微调。ResNetVGGEfficientNet等模型已经在大规模图像数据集上进行了训练,允许研究人员将这些模型用作他们自己项目的起点。

基础模型的成长

近年来,自然语言处理 (NLP) 中的基础模型取得了重大进展,Meta 自己的LLaMa或 OpenAI 的GPT-4等模型在零样本和少样本学习方面展示了卓越的能力。

这些模型在大量数据上进行了预训练,并且能够通过使用提示工程来泛化到新任务和数据分布。Meta AI 在推进这一领域、促进研究和开发具有广泛应用的大规模 NLP 模型方面发挥了重要作用。

在这里,我们探讨了促进基础模型增长的因素。

大规模语言模型

像 GPT-4 这样的大规模语言模型的出现一直是 NLP 基础模型发展的推动力。这些模型采用具有数十亿参数的深度学习架构,使它们能够捕获训练数据中的复杂模式和结构。

迁移学习

NLP 中基础模型的一个关键特征是它们的迁移学习能力。一旦在大型数据集上进行了训练,它们就可以在较小的、特定于任务的数据集上进行微调,以在各种任务中实现最先进的性能。

零样本和少样本学习

基础模型在零样本和少样本学习中也显示出前景,它们可以在没有任何微调或最少任务特定训练数据的情况下执行任务。这种能力在很大程度上归功于模型能够根据提示提供的上下文理解和生成类似人类的响应。

多模态学习

另一个日益增长的兴趣领域是多模式学习,其中训练基础模型以理解和生成跨不同模式的内容,例如文本和图像。

CLIP和ALIGN这样的模型展示了如何将 NLP 和计算机视觉一起使用来制作可以将动作从一个域转换到另一个域的多模态模型。

道德考量和安全

NLP 中基础模型的增长也引发了对其伦理影响和安全性的担忧。研究人员正在积极探索减轻潜在偏见、解决内容生成问题以及开发安全可控的人工智能系统的方法。证明这一点的是最近要求停止所有尖端模型开发六个月的呼吁。

将 Segment Anything 模型与以前的模型进行比较

SAM 是 AI 向前迈出的一大步,因为它建立在早期模型奠定的基础之上。SAM 可以从其他系统获取输入提示,例如,在未来,从 AR/VR 耳机获取用户的目光来选择对象,使用输出掩码进行视频编辑,将 2D 对象抽象为 3D 模型,甚至流行的谷歌照片任务,如创建拼贴画。

它可以通过在提示不清楚的情况下生成多个有效掩码来处理棘手的情况。以用户提示寻找 Waldo 为例:

在这里插入图片描述
source
SAM 的结果具有开创性的原因之一是分割掩码与ViTDet等其他技术相比有多好。下图显示了两种技术的比较:
在这里插入图片描述
研究论文更详细地比较了这两种技术的结果

深入了解 SAM 的网络架构和设计

SAM 的设计取决于三个主要组件:

1. 可提示的分割 任务可实现零样本泛化。
2. 模型架构。
3. 为任务和模型提供支持的数据集。

在这里插入图片描述

任务

SAM 接受了数百万张图像和超过十亿个掩码的训练,可为任何提示返回有效的分割掩码。在这种情况下,提示是分割任务,可以是前景/背景点、粗框或遮罩、点击、文本,或者一般来说,指示图像中要分割的内容的任何信息。该任务也用作模型的预训练目标。

模型

SAM 的架构包含三个组件,它们协同工作以返回有效的分割掩码:

  • 一种图像编码器,用于生成一次性图像嵌入。
  • 嵌入提示的提示编码器
  • 结合了提示和图像编码器的嵌入的轻量级掩码解码器

在这里插入图片描述
我们将在下一节中更深入地研究架构,但现在,让我们看一下数据集。

数据引擎(data engine)和数据集

需要数据引擎来支持任务并改进数据集和模型。数据引擎分为三个阶段:

  • Assisted-manual,其中 SAM 协助注释者注释掩码,类似于经典的交互式分割设置。
  • 半自动,其中 SAM 可以通过提示可能的对象位置来自动为对象子集生成掩码,并且注释器专注于注释其余对象,从而有助于增加掩码多样性。
  • 全自动,人工注释者用前景点的规则网格提示 SAM,每张图像平均产生 100 个高质量掩码。

数据引擎构建大段任何 10 亿掩码数据集 Meta AI 发布

SAM

在这里插入图片描述

图像编码器

在最高级别上,图像编码器(掩盖的自动编码器,MAE,预训练的视觉变压器,VIT)会生成一次性的图像嵌入,并且可以在提示模型之前应用。

提示编码器

提示编码器将背景点、遮罩、边界框或文本实时编码到嵌入向量中。该研究考虑了两组提示:稀疏(点、框、文本)和密集(掩码)。

点和框由位置编码表示,并为每种提示类型添加学习嵌入。自由格式的文本提示由来自CLIP 的现成文本编码器表示。Dense prompts,如masks,嵌入卷积并与图像嵌入逐元素求和.

掩码解码器

轻量级掩码解码器根据来自图像和提示编码器的嵌入预测分割掩码。它将图像嵌入、提示嵌入和输出标记映射到掩码。所有嵌入都由解码器块更新,解码器块在两个方向(从提示到图像嵌入和返回)使用提示自我注意交叉注意

掩码被注释并用于更新模型权重。这种布局增强了数据集,并允许模型随着时间的推移学习和改进,使其高效灵活。

分割任何 10 亿掩码数据集

Segment Anything 10 亿掩码(SA-1B) 数据集是迄今为止最大的标记分割数据集。它专为高级分割模型的开发和评估而设计。

我们认为数据集将成为训练和微调未来通用模型的重要组成部分。这将使他们能够在不同的分割任务中取得卓越的表现。目前,该数据集仅在研究许可下可用。

SA -1B 数据集的独特之处在于:

多样性

数据集经过精心策划,涵盖广泛的领域、对象和场景,确保模型可以很好地泛化到不同的任务。它包括来自各种来源的图像,例如自然场景、城市环境、医学图像、卫星图像等。

这种多样性有助于模型学习分割具有不同复杂性、规模和上下文的对象和场景。

大小

SA-1B 数据集包含超过 10 亿张高质量注释图像,为模型提供了充足的训练数据。庞大的数据量有助于模型学习复杂的模式和表示,使其能够在不同的分割任务上实现最先进的性能。
在这里插入图片描述

高质量注释

数据集已经用高质量的掩码仔细注释,导致更准确和详细的分割结果。在SA-1B 数据集的Responsible AI (RAI) 分析中,调查了地理和收入分配中潜在的公平问题和偏见。

研究论文表明,与其他开源数据集相比,SA-1B 中来自欧洲、亚洲和大洋洲以及中等收入国家的图像比例要高得多。值得注意的是,SA-1B 数据集包含至少 2800 万个所有地区的口罩,包括非洲。这是之前任何数据集中掩码总数的 10 倍。
在这里插入图片描述

Segment Anything 模型开源吗?

简短的回答是肯定的!SA-1B 数据集已作为研究目的开源发布https://github.com/facebookresearch/segment-anything. 此外,根据 FAIR 对开放研究的承诺,Meta AI 在 Apache 2.0(一种许可许可)下发布了预训练模型(大小约为 2.4 GB)和代码。它可以在 GitHub 上免费访问。还提供了训练数据集以及交互式演示 Web UI

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nikolaj Buhl : Segment Anything 模型 (SAM) 解释 的相关文章

随机推荐

  • 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘

    在调整过X64产品线后 我们又收到IBM将为服务器产品线添加新SAS硬盘及固态硬盘的消息 上周IBM刚发布了一款小尺寸的SAS硬盘 它只有2 5英寸 而之前的硬盘基本上都是3 5英寸的SCSI硬盘 因为IBM拥有世界上最好的硬盘研究和生产工
  • 疯壳4900、7072心率血压血氧心电四合一智能手表&模组电容触摸实现

    触摸 该手表的触摸是由RH6015C触摸IC完成的 该IC是一款内置稳压模块的单通道电容式触摸感应控制开关 IC 可以替代传统的机械式开关 RH6015可在有介质 如玻璃 亚克力 塑料 陶瓷等 隔离保护的情况下实现触摸功能 安全性高 RH6
  • delete 和 delete []的真正区别

    c 中对new申请的内存的释放方式有delete和delete 两种方式 到底这两者有什么区别呢 1 我们通常从教科书上看到这样的说明 delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内
  • ubuntu下解决wps2019缺少字体问题

    准备字体包 链接 https pan baidu com s 1rsqn3CY SWS KWaKc0w83g 提取码 h9cs 复制 解压后的wps symbol fonts zip到 home usr share fonts下 sudo
  • 西门子PLC—用 SCL 编写你的第一个 TIA 代码

    前言 使用梯形图编写程序时 博途编辑器是通过网络段 把程序分成一段一段的 编辑器可以插入若干个网络段 每一个网络段可以有各自的注释 而SCL是文本语言 不分网络段 在LAD FBD语言内增加SCL的除外 这就需要需要用其他的方法来 解决程序
  • 面试总结大全

    预定义变量 0 脚本名 所有的参数 所有的参数 参数的个数 当前进程的PID 上一个后台进程的PID 上一个命令的返回值 0表示成功 for 循环次数是固定的 for i in 取值 范围 1 20 zhangsan lisi wanger
  • 牛客网——华为题库(41~50)

    华为题库 41 称砝码 42 学英语 43 迷宫问题 44 Sudoku 45 名字的漂亮度 46 截取字符串 48 从单向链表中删除指定值的节点 50 四则运算 41 称砝码 include
  • C++通过回车结束循环输入

    试想一个案例 假设需要你输入n行数字 而每一行输入的数字数量都未知 不定 如何通过C 来实现这一操作 本贴笔者给出一个具体案例 首先规定输入的行数 而后在每一行输入不定量的数字 最后将每一个数字对应的值 以及与其匹配的行数输出 例如 输入
  • 实战07- 模型融合:利用AdaBoost元算法提高分类性能

    元算法 meta algorithm 是对其他算法进行组合的一种方式 即模型融合 模型融合主要分为三种 Bagging Boosting和Stacking 思想 将弱分类器融合成强分类器 融合后比最强的弱分类器更好 视频导学 https w
  • 什么是高防CDN,高防CDN是如何防御网络攻击的呢?

    高防CDN是一种新型的网络构建法式 N是构建在现有网络基础之上的智能虚拟网络 依靠部署在各地的边缘服务器 通过中心平台的负载均衡 内容分发 调度等功能模块 使用户就近获取所需内容 降低网络拥塞 提高用户访问响应速度和命中率 CDN的关键技术
  • tensorflow2.1.0安装

    原来一直用1 x的tf 最近安装2 初始源error无法安装 下载本地包后 换清华源之类的 channels defaults show channel urls true default channels https mirrors tu
  • 机器学习(一)

    文章目录 人工智能 人工智能的诞生 人工智能的发展历程 人工智能与机器学习的关系 机器学习 机器学习的发展历程 讨论 机器学习的必要性 机器学习的定义 机器学习的三要素 机器学习的基本概念 作业 人工智能 人工智能的诞生 人工智能诞生于一群
  • Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

    一 简介 License 即版权许可证 一般用于收费软件给付费用户提供的访问许可证明 根据应用部署位置的不同 一般可以分为以下两种情况讨论 应用部署在开发者自己的云服务器上 这种情况下用户通过账号登录的形式远程访问 因此只需要在账号登录的时
  • python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等

    numpy切片操作 视频讲解 numpy 简单入门 GridSearchCV的简单使用视频讲解 SVM参数优化 metrics中的precision score recall score accuracy score import nump
  • C语言中的system有什么作用,C语言中system函数的使用

    System 是c语言中为了调用windows系统命令来设置的 它包含在头文件 include中 具体的使用可以在system help 后发现帮助命令 命令如下 有关某个命令的详细信息 请键入 HELP 命令名 ASSOC 显示或修改文件
  • python语言通过neo4j构建知识图谱

    用python语言通过neo4j构建知识图谱 安装neo4j社区版 启动neo4j neo4j语法 python编写代码 结果 注意 可能遇到的问题 安装neo4j社区版 下载neo4j 安装相应版本jdk 例 jdk15 neo4j4 2
  • CentOS自动挂载光驱

    今天在CentOs下安装测试数据库 光驱居然找不到了 以前都是自动就能找到的 服务器上也是CentOs 开发库也在CentOs 没出现过这个问题 虽然知道linux一直都有这个问题 改用手动挂载 报以下错误 mount can t find
  • 用宏定义字节对齐

    有时候我们需要对一个数字节对齐 实例代码 include
  • 左神算法进阶班4_3异或和为0划分最多数组

    题目 定义数组的异或和的概念 数组中所有的数异或起来 得到的结果叫做数组的异或和 比如数组 3 2 1 的异或和是 3 2 1 0 给定一个数组arr 你可以任意把arr分成很多不相容的子数组 你的目的是 分出来的子数组中 异或和为0的子数
  • Nikolaj Buhl : Segment Anything 模型 (SAM) 解释

    文章目录 Meta 的人工智能和计算机视觉简史 计算机视觉的进展 卷积神经网络 CNN 生成对抗网络 GAN 迁移学习和预训练模型 基础模型的成长 大规模语言模型 迁移学习 零样本和少样本学习 多模态学习 道德考量和安全 将 Segment