论文阅读笔记: Segment Anything

server/2024/9/22 22:11:11/

文章目录

  • Segment Anything
    • 摘要
    • 引言
      • 任务
      • 模型
      • 数据引擎
      • 数据集
      • 负责任的人工智能
    • Segment Anything Model
      • 图像编码器
      • 提示编码器
      • mask解码器
      • 解决歧义
      • 损失和训练

Segment Anything

论文地址: https://arxiv.org/abs/2304.02643
代码地址:https://github.com/facebookresearch/segment-anything
项目地址: https://segment-anything.com/

摘要

  • 介绍了Segment Anthing项目: 用于图像分割的新任务、模型和数据集。
  • 构建了迄今为止最大的分割数据集,其中11M张图片包含1Bmask图。
  • SAM的设计和训练具有快速性,因此可以将zero-shot转移到新的图像分布和任务重。

引言

  • 在网络规模上预训练的大语言模型正通过强大的zero-shot和few-shot泛化彻底改变NLP。经验趋势表明,zero-shot和few-shot随着模型训练规模、数据集大小和总计算量的增加而改善。
  • 计算机视觉领域也对基础模型进行了探索,尽管程度很小。尽管在视觉和语言编码器方便取得了很大的进展,但计算机视觉还包含超出此范围的广泛问题,而且对于其中许多问题,并不存在丰富的训练数据。
  • 文章的目标是构建图像分割的基础模型。即希望开发一个可提示的模型,并使用能够实现强大泛化的任务在广泛的数据集上对其进行预训练。
  • 计划的成功取决于三个组成部分: 任务、模型和数据。为了解决它们,解决了以下有关图像分割的问题:
    • 什么任务将实现zero-shot泛化?
    • 对应的model架构是什么?
    • 哪些数据可以为该任务和模型提供支持?
  • 针对上面的问题,首先定义一个提示分割任务,它足够通用,可以提供强大的预训练目标并支持广泛的下游应用程序。该任务需要一个支持灵活提示的模型,并且可以在提示时实时输出分段mask以允许交互使用。

在这里插入图片描述

任务

  • 在NLP和视觉中,基础模型是一个有前景的发展,通常可以通过使用"提示"技术对新数据集和任务执行zero-shot和few-shot。
  • 提出了提示分割任务,其目标是在给任何给定分割提示的情况下返回有效分割mask。
  • 提示可以包括标识对象的空间或文本信息。有效输出mask的要求意味着即便提示不明确并且可能引用多个对象,输出也应该是合理的mask至少其中一个对象。

模型

  • 实时的分割任务和实际使用的目标对模型架构施加了约束。特别是模型必须支持灵活的提示,需要分摊实时计算mask以允许交互使用,并且必须是模糊性感知。
  • 作者发现一个简单的设计满足了所有三个约束: 强大的图像编码器计算图像embedding, 提示编码器嵌入提示,然后将两个信息源组合在预测分割mask的轻量级mask解码器中。此模型成为分段任意模型(SAM)。
  • 通过将SAM分成图像编码器和快速提示编码器/mask解码器,可以通过不同的提示重复使用相同的图像embedding(及其成本分摊)。

数据引擎

  • 为了实现对新数据分布的强泛化,有必要在大量且多样化的mask上训练SAM,超出任何现有的分割数据集。
  • 构建一个"数据引擎", 用于获取数据。数据引擎分为三个阶段: 辅助手动、半自动和全自动。在第一阶段,SAM协助注释者注释mask。第二阶段,SAM可以通过提示可能得对象位置来自动为对象子集生成mask,而注释器则专注于注释其余对象,从而帮助增加mask多样性。最后阶段,用前景点的规则网格提示SAM, 每个图像平均生产约100个高质量掩码。

数据集

最终数据集SA-1B包含来自11M许可和隐私保护的图像超过1B个mask。SA-1B使用数据引擎的最后阶段完全自动收集,其mask比任何现有分割数据集多400x。

负责任的人工智能

SA-1B中的图像跨域了地理和经济上不同的国家,且SAM在不同人群中表现相似。

Segment Anything Model

在这里插入图片描述

SAM具有三个组件: 图像编码器、灵活提示编码器和快速mask解码器。基于Transformer视觉模型构建,并针对实时性能进行了特定权衡。

图像编码器

受可扩展性和强大的预训练方法的推动,SAM使用MAE预训练的ViT最低程度地适应处理高分辨率输入。

提示编码器

考虑两组提示: 稀疏(点、框、文本)和密集(mask)。通过位置编码来表示点和框,并用CLIP中现成的文本编码器为每种提示类型和自由格式文本学习embedding求和。密集提示使用卷积进行嵌入,并与图像嵌入按元素求和。

mask解码器

mask解码器有效地将图像embedding、提示embedding和输出词符映射到mask。此设计采用了Transformer解码器块的修改,后跟动态mask预测头。修改后的解码器块在两个方向上使用实时自注意力和交叉注意力来更新所有embedding。运行两个块后,对图像embedding进行上采样,并且MLP将输出词符映射到动态现行分类器,然后计算每个图像位置的mask前景概率。

解决歧义

对于一个输出,如果给出不确定的提示,模型将对多个有效mask进行平均。为了解决这个问题,修改模型以预测单个提示的多个数超出mask。大多数情况下输出3个mask就足以。子啊训练过程中,仅反向传播mask上的最小损失。为了对mask进行排名,模型预测每个mask的置信度得分(预估的IoU)

损失和训练

使用焦点损失和骰子损失的现行组合来监督mask预测。使用几何提示的混合来训练可提示的分割任务。通过在每个mask的11轮随机采样提示来模拟交互式设置,从而使SAM能够无缝集成到数据引擎中。


http://www.ppmy.cn/server/116257.html

相关文章

flink的大状态复用

在 Apache Flink 中,实现大状态复用主要涉及在不同任务、不同生命周期阶段,甚至不同作业之间共享或重用状态数据。复用大状态可以减少重新加载和重新计算的开销,从而提升作业的效率和业务连续性。下面是几种在 Flink 中复用大状态的常见方法&…

前端面试热点题目——typescript篇

在TypeScript面试中,面试官通常会考察你对TypeScript特性的理解、类型系统的掌握、以及在实际项目中的应用能力。以下是一些热点题目及其相应的代码示例,旨在帮助你准备TypeScript相关的面试。 1. 类型别名与接口的区别及使用场景 问题:请解…

超详细超实用!!!零基础java开发之云风笔记笔记列表接口开发(七)

云风网 云风笔记 云风知识库 云风笔记的登录注册接口开发完成之后,我们接下来可以开始进行笔记的添加接口以及笔记列表展示接口的开发 一、新建包note、实体类NoteManage 添加笔记所需要的字段属性主要有: 笔记名称:name笔记分类&#xff1…

Centos使用阿里云镜像安装docker及docker hub下载失败解决方案

一 配置阿里云的Yum镜像源 配置阿里云的Yum镜像源可以提高下载速度,尤其是在国内网络环境下。以下是配置阿里云Yum镜像源的步骤: 1. 备份原有的Yum源配置文件 首先,备份系统现有的Yum源配置文件,以防出现问题时可以还原&#x…

鸿蒙轻内核M核源码分析系列十二 事件Event

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…

《中外食品工业》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《中外食品工业》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《中外食品工业》级别? 答:国家级。主管单位: 中国轻工业联合会 …

手机玩机常识-------诺基亚系列机型3/5/6/7/8详细的刷机教程步骤 手机参考救砖刷机教程

诺基亚手机 诺基亚(Nokia Corporation),成立于1865年,是一家主要从事移动通信设备生产和相关服务的手机公司 ,总部位于芬兰埃斯波 。从1996年开始,诺基亚手机连续15年占据手机市场份额第一位置&…

LeetCode之二叉搜索树

530. 二叉搜索树的最小绝对差 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode…