当前位置: 首页 > news >正文

【论文阅读】视觉分割新SOTA: Segment Anything(SAM)

导言

随着基于对比文本—图像对的预训练(CLIP)方法或者模型、聊天生成预训练转换器(ChatGPT)、生成预训练转换器-4(GPT-4)等基础大模型的出现,通用人工智能( AGI)的研究得到快速发展。AGI旨在为人工智能系统赋予更强大的执行能力,使其能够自主学习、不断进化,解决各种问题和处理不同的任务,从而在多个领域得到广泛应用。这些基础模型在大规模数据集上进行训练后,能够成功应对多样的下游任务。在这一背景下,Meta公司提出的分割一切模型(segment anything model,SAM)于2023年取得重要突破,在图像分割领域获得了优异的性能,以至于被称为图像分割终结者。

论文简介

论文题目:
Segment Anything

研究领域:
Computer Vision and Pattern Recognition; Artificial Intelligence; Machine Learning

论文作者:
Alexander Kirillov等

论文链接:
https://arxiv.org/abs/2304.02643v1

主要方法

在这里插入图片描述
本文借鉴大型语言模型的思想,提出了一种名为SAM的提示分割模型。该模型在大型数据集上进行预训练,具有较强的泛化能力,可以通过提示工程解决模型在新数据分布上的泛化问题。

模型的输入由两部分组成:一部分是分割提示,包括点、目标框、掩码和文本提示;另一部分是需要进行分割的图像。模型的目标是,根据用户提供的分割提示,生成一个有效的掩码。
此处“有效掩码”是指,即使提示不明确或涉及多个对象,模型的输出也应该是这些对象中一个合理的掩码。
在这里插入图片描述
SAM主要构成:图像编码器、提示编码器和掩码解码器。

1、图像编码器:图像编码器在SAM中的作用是将输入图像映射到特征空间,这一过程主要依赖于预训练好的ViT(vision Transformer)模型,该模型基于 MAE(masked auto encoder)方法进行训练。

2、提示编码器:该部分的任务是将用户输入的提示映射至特征空间,从而得到提示的特征嵌入。这些提示主要分为两类,一类是密集提示(上次迭代中预测的粗略掩码、用户标注的掩码);另一类是离散提示(如点、目标框、文本提示)。其中,密集提示通过卷积层进行处理,而离散提示则通过提示编码器进行处理。

3、掩码解码器:该部分主要有两个功能
1)将图像编码器和提示编码器输出的两个嵌入层进行整合;
2)通过整合后的信息解码出最终有效的掩码。值得注意的是,掩码解码器会根据置信度输出3种掩码,分别是选中物体的整体掩码、部分掩码和子部分掩码。
上图所示,当输入的提示点位于剪刀的刀柄部位时,模型则会输出以下3种掩码:
1)将整把剪刀进行分割;
2)将剪刀的两个刀柄分别进行分割;
3)将选中的这一个刀柄进行分割。
模型将这3种掩码按照各自的置信度大小进行排序输出,以准确地满足用户的需求。

论文针对的问题

在图像分割领域,由于缺乏大规模的数据集来训练一个基础模型,本文通过数据引擎实现了对数据集的构建和对模型的训练。数据引擎的工作流程分为3个阶段,从辅助手动阶段到半自动阶段,最后是完全自动阶段。

1、在辅助手动阶段:数据标注员借助交互标注工具,与SAM一起进行手动标注。这一阶段共收集了430万个掩码和12万幅图像;

2、半自动阶段:本文利用SAM输出的高置信度掩码对图像进行预标注。然后,再对图像中剩余未标注的部分进行交互式标注。这一阶段结束时,每幅图像平均提供了72个掩码;

3、完全自动阶段:进行SAM的最终训练和分割一切SA-1B数据集的获取。最终,SA-1B数据集包含1,100万幅图像和11亿个掩码。其中,99.1%的掩码是自动生成的。
并且数据集完全开放获取(10TB)

论文创新点

1、与 ChatGPT 的启发思想一样,采用 Prompt-based learning 的可提示学习范式,提高学习效率;
2、建立了迄今为止最大的分割数据集 Segment Anything 1-Billion(SA-1B),含 1100 万张图像,超过 10 亿个掩码,比任何现有的分割数据集多400 倍;
3、建立了通用的,全自动的分割模型,零样本灵活转化新任务,新领域,结果甚至优于之前的监督结果。

总结

SAM模型的出现推动了计算机视觉领域对于视觉基础模型的进一步研究,但仍需克服一些关
键技术挑战。未来的工作可以提高SAM的推理速度和精度,特别是在处理大规模数据时,应集中在优化模型结构、推理算法和硬件加速等方面的性能提升。其次,SAM对大量标注数据的依赖成本高昂,限制了其在下游任务上的广泛应用。未来研究可以关注半监督或自监督学习方法,减轻数据标注负担,提高模型泛化能力。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【ABAP】ole2 excel多sheet导入导出
  • MySQL 解决时区相关问题
  • Map(HashMap)
  • SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出
  • 卫生间装修防滑石用瓷砖还是大理石好呢?
  • 算法知识点————背包问题
  • 时间序列预测学习方向总概括
  • Python基础语法(1)
  • 已知两圆的圆心半径,求交点坐标——CAD VBA 解决
  • 1-【JavaWeb】数据库基础
  • 生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute
  • java中redis集群模式和哨兵模式的区别和联系?
  • Java:动态代理
  • CSP-CCF★★★201812-2小明放学★★★
  • Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】
  • #Java异常处理
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [笔记] php常见简单功能及函数
  • Quartz初级教程
  • Vim Clutch | 面向脚踏板编程……
  • 前端之Sass/Scss实战笔记
  • 事件委托的小应用
  • 数据仓库的几种建模方法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 因为阿里,他们成了“杭漂”
  • UI设计初学者应该如何入门?
  • ​第20课 在Android Native开发中加入新的C++类
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (7)svelte 教程: Props(属性)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (javaweb)Http协议
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)JAVA使用POI操作excel
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (转) Face-Resources
  • .JPG图片,各种压缩率下的文件尺寸
  • .net core 的缓存方案
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net(C#)中String.Format如何使用
  • .NET连接数据库方式
  • .NET中统一的存储过程调用方法(收藏)
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @antv/g6 业务场景:流程图
  • [ IO.File ] FileSystemWatcher
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [100天算法】-实现 strStr()(day 52)
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞