【论文阅读】视觉分割新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对大量标注数据的依赖成本高昂,限制了其在下游任务上的广泛应用。未来研究可以关注半监督或自监督学习方法,减轻数据标注负担,提高模型泛化能力。
相关文章:
【论文阅读】视觉分割新SOTA: Segment Anything(SAM)
导言 随着基于对比文本—图像对的预训练(CLIP)方法或者模型、聊天生成预训练转换器(ChatGPT)、生成预训练转换器-4(GPT-4)等基础大模型的出现,通用人工智能( AGI)的研究…...
redis之list核心命令演示与细节探索
redis之list核心命令演示与细节探索 BLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeout summary: Pop an element from a list, push it to another list and return it; or block until one is available since: 6.2.0 BLPOP key [key …] timeout summary: Remove …...
[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4040 标注数量(xml文件个数):4040 标注数量(txt文件个数):4040 标注…...
Lua 与 C#交互
Lua 与C#交互 前提 Lua是一种嵌入式脚本语言,Lua的解释器是用C编写的,因此可以方便的与C/C进行相互调用。轻量级 Lua语言的官方版本只包括一个精简的核心和最基本的库,这使得Lua体积小、启动速度快,也适合嵌入在别的程序里。 交…...
【办公类】大组工会学习(文心一言+Python批量)
背景需求: 每学期要写一份工会的大组政治学习读后感(9月-1月,共5次) 学习内容 9月、10月、11月、12月、1月的学习内容文字稿 在班级里,我擅长电脑工作,所以这种写的工作都包了。 中2班三位老师一共写3篇&…...
项目管理工作流是什么?项目管理工作流管理实战技巧!
项目管理工作流是指在协作过程中通过限制任务状态的流转进行流程控制的一种方式。项目从启动到完成所经历的一系列有序、可控的步骤和流程,它详细描述了项目执行过程中各项任务和活动的顺序、依赖关系、责任人以及完成标准等,是项目成功执行的重要保障。…...
leveldb源码剖析(二)——LSM Tree
LSM Tree LSM Tree:Log-Structured Merge Tree,日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离,数据首先写入磁盘中的日志文件(WAL),随后写入内存缓存,…...
三十六、Gin注册功能-检查账号是否存在
一、初始化 1、在cms.go中添加数据库连接方法 func connDB(app *CmsApp) {mysqlDB, err : gorm.Open(mysql.Open("root:rootroottcp(localhost:3306)/?charsetutf8mb4&parseTimeTrue&locLocal"))if err ! nil {panic(err)}db, err : mysqlDB.DB()if err !…...
什么是期权对冲?
今天期权懂带你了解什么是期权对冲?期权对冲的选择取决于投资者的市场预期和风险承受能力,通过合理使用期权对冲策略,可以有效减少风险并优化投资组合的表现。 期权对冲是什么? 期权是一种支持双向交易的投资产品,期…...
什么是数据库课程设计?
文章目录 前言一、课程设计目的二、课程设计流程三、设计要点四、示例项目总结 前言 数据库课程设计是一个综合性的实践过程,旨在通过实际项目的设计与实现,加深学生对数据库理论知识的理解和应用能力。 以下是一个关于数据库课程设计的基本框架和要点&…...
走进低代码报表开发(二):高效报表设计新利器
在前面的文章中,我们已经详细介绍了勤研低代码开发平台的报表数据源可视化设计,接下来,让我们一起来继续了解勤研低代码平台的报表设计,在当今数字化快速发展的时代,高效便捷的开发工具对于企业和开发者来说至关重要。…...
校园水电费管理|基于java的校园水电费管理小程序系统 (源码+数据库+文档)
校园水电费管理 目录 基于java的校园水电费管理小程序系统 一、前言 二、系统设计 三、系统功能设计 小程序端 后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕…...
java设计模式 桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象部分与其实现部分分离,使它们都可以独立地变化。桥接模式通过将继承改为组合,实现了在不修改现有类的情况下,动态地切换和扩展抽象类与其具体实现…...
如何利用大数据技术来识别和预防网络赌博行为?
1.构建赌博账户识别模型:通过大数据分析和机器学习技术,建立智能风险防控体系,对账户进行全生命周期管理,精准打击和切断不法分子的资金链条 。 2.分析资金流动:利用大数据技术监测和分析异常资金流动,识别…...
N-152基于java贪吃蛇游戏5
开发工具eclipse,jdk1.8 文档截图: N-152基于java贪吃蛇游戏5...
从线段中搜寻提取闭合轮廓(三)
1.前言 做底层和数据的调试问题也是个麻烦事,如果没有方便的可视化工具辅助,那将令人感到痛苦,借助可视化的工具可以让我们高效、省心,进而心情舒畅,重要的是可以提高调试效率。 当然可视化工具也分不同层次的…...
最全面的递归算法详解,一篇足矣(高手必备)
在编程中,递归和循环是两种常用的控制结构,各有其独特的优缺点。理解这两者的特点和应用场景,对于编写高效、可读的代码至关重要。 什么是递归? 递归是一种强大的编程技术,允许函数在其定义中调用自身。递归通常涉及…...
数据结构(2)单向链表排序和双向链表操作
一单向链表的插入排序 void insertion_sort_link(link_t* plink) { // 如果链表头为空,直接返回 if(NULL plink->phead) { return; } // 初始化指针,p指向当前已排序部分的最后一个节点 node_t* p plink->phead; // ptemp指向待插入的…...
OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 拟合一条直线到2D或3D点集。 fitLine 函数通过最小化 ∑ i ρ ( r i ) \sum_i \rho(r_i) ∑iρ(ri)来拟合一条直线到2D或3D点集,…...
Mysql基础练习题 1757.可回收且低脂的产品(力扣)
编写解决方案找出既是低脂又是可回收的产品编号。 题目链接: https://leetcode.cn/problems/recyclable-and-low-fat-products/description/ 建表插入数据: Create table If Not Exists Products (product_id int, low_fats ENUM(Y, N), recyclable …...
2026年需求管理工具盘点:主流软件对比、测评与选型实用指南
本文盘点 ONES、Tower、Jira、Azure DevOps、Asana、ClickUp、monday.com、Notion、Linear、YouTrack 这 10 款需求管理工具,围绕需求收集、拆解、优先级、追踪闭环和团队协作展开测评,帮助选型人员更快判断哪类工具适合自己的团队。刚做项目经理时&…...
别再只会用delay()了!用Celery的Canvas原语(Group/Chain/Chord)构建复杂异步工作流
别再只会用delay()了!用Celery的Canvas原语构建复杂异步工作流 在异步任务处理领域,Celery早已成为Python生态中的标配工具。但令人惊讶的是,大多数开发者仅仅停留在task.delay()的基础用法上,就像只学会了加减法却从未接触过微积…...
终极免费解锁Cursor Pro高级功能:完整解决方案深度解析
终极免费解锁Cursor Pro高级功能:完整解决方案深度解析 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tr…...
Excel数据导入实战:为缺失ID列批量生成标准UUID
1. 为什么需要为Excel数据批量生成UUID? 最近在处理一个数据迁移项目时,遇到了一个典型问题:从Navicat导出的Excel表格缺少主键列,导致后续数据导入时频频报错。这种情况在数据迁移、系统对接时特别常见。UUID(通用唯…...
TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程
TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程 【免费下载链接】ops-test-kit TTK(Ops Test Tool Kit)是CANN算子库提供的全链路、自动化、批量化算子测试框架,帮助开发者快速完成算子批量功能验证、性能…...
电流互感器选型与设计全攻略:励磁电感、匝数比及误差控制实战
摘要: 电流互感器(CT)作为电力监测、过流保护、计量反馈的核心元件,其选型直接影响系统的测量精度与可靠性。工程师常因忽视励磁电感与二次侧负载的匹配导致角差超差,或未考虑暂态饱和特性造成保护误动。本文从CT工作原…...
Windows权限终极指南:5个场景掌握TrustedInstaller权限提升
Windows权限终极指南:5个场景掌握TrustedInstaller权限提升 【免费下载链接】RunAsTI Launch processes with TrustedInstaller privilege 项目地址: https://gitcode.com/gh_mirrors/ru/RunAsTI 当你面对Windows系统那些"拒绝访问"的提示时&#…...
从LaTeX到手写笔记:希腊字母的‘两栖’书写实战指南(含清晰对比图)
从LaTeX到手写笔记:希腊字母的‘两栖’书写实战指南 在数字化与纸质化并行的学术工作流中,希腊字母的书写问题常常成为效率瓶颈。当你在深夜推导公式时,是否曾因手写θ与δ难以区分而被迫重新查阅资料?当你在整理课堂笔记时&#…...
显卡驱动彻底清理指南:DDU工具拯救你的显示问题![特殊字符]
显卡驱动彻底清理指南:DDU工具拯救你的显示问题!🚀 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-d…...
不只是模拟器:用Android-x86把你的旧笔记本变成安卓平板(附VirtWifi联网指南)
旧笔记本重生计划:用Android-x86打造高性能安卓工作站 你是否有一台闲置多年的旧笔记本,性能早已跟不上现代操作系统的需求,却又舍不得丢弃?别急着让它沦为电子垃圾,通过Android-x86项目,这些老设备完全可以…...
