FastSAM 论文解读

news2024/10/7 12:20:17

论文名称:Fast Segment Anything

论文地址:http://export.arxiv.org/pdf/2306.12156

代码地址:GitHub - CASIA-IVA-Lab/FastSAM: Fast Segment Anything

1. 关键内容

  • 基于YOLOv8-seg实现了FastSAM,它比SAM快50倍,且训练数据只有SAM的1/50,同时运行速度不受point输入数量的影响
  • FastSAM定义Segment Anything Task(SAT)为根据提示进行语义分割任务,提示指:前景|背景点、bounding boxes、mask、text;
  • 将SAT分解为2阶段,第一阶段为对输入图像的全景实例分割,第二阶段为根据提示输入对全景实例分割结果进行稀疏化选择

2. 实验效果

在4种级别的任务上进行zero-shot对比:边缘检测、目标Proposal、实例分割、提示输入分割

2.1 边缘检测:将模型的全景实例分割结果用sobel算子得到边缘,FastSAM与SAM性能相近,都倾向于预测更多的边(数据集中没有标注的边)

2.2 目标Proposal:在coco上对比了SAM、ViTDet、OLN和FastSAM,FastSAM与SAM略差,但其是zero-shot transfer,而OLN在voc上进行预训练

2.3 实例分割:使用ViTDet [23]生成的边界框(bbox)作为提示符来完成实例分割任务,FastSAM比SAM差一些。具体原因见第6节的讨论部分

2.4 提示输入分割:与SAM性能类似,但是运行效率有些底下(这主要是受CLIP模型的影响)

3. FastSAM

3.1. Overview

       下图展示了所提出方法Fast SAM的结构,该方法由全实例分割和输入引导选择构成。第一阶段依赖于基于卷积神经网络(CNN)的检测器的实现。它生成图像中所有实例的分割掩码。然后在第二阶段,它输出与提示相对应的感兴趣区域。通过利用CNN的计算效率,前一个阶段是基础,后一个阶段是任务导向处理的精髓。不同于端到端的transformer,这个方法对于视觉分割任务,引入了很多人类先验知识,例如conv的局部连接,目标感受野的局部相关性。这使它适合于视觉分割任务,可以在更少的参数上收敛更快。FastSAM可以在不太损失性能质量的情况下,可以实现实时的segment anything模型。

3.1 All-instance Segmentation

在FastSAM中,我们直接使用YOLOv8-Seg方法进行全实例分割阶段。YOLOv8-Seg检测分支负责输出物体类别和边界框信息,而分割分支则输出k个原型(在FastSAM中默认为32)以及对应的k个掩模系数。这两个任务是同时进行的。分割分支输入高分辨率特征图,保留了空间细节和语义信息。该特征图经过卷积层处理,上采样后再经过两个卷积层,最终输出掩模。与检测分支的分类分支类似,掩模系数的取值范围在-1到1之间。实例分割的结果是通过将掩模系数与原型相乘并相加得到的。

3.2 Prompt-guided Selection

       在使用YOLOv8成功地对图像中的所有对象或区域进行分割之后,分割任何物体任务的第二阶段是使用各种提示来识别感兴趣的特定对象。这主要涉及使用点提示、框提示和文本提示。点提示。

3.2.1 点提示

       包括将所选点与从第一阶段获得的各种掩模进行匹配。目标是确定点所在的掩模。与SAM类似,我们采用前景/背景点作为提示。在前景点位于多个掩模的情况下,可以利用背景点来过滤与当前任务无关的掩模。通过使用一组前景/背景点,我们能够在感兴趣的区域内选择多个掩模。这些掩模将合并为一个掩模,以完全标记感兴趣的对象。此外,我们利用形态学操作来提高掩模合并的性能。

3.2.2 框提示

       框提示涉及在所选框和从第一阶段对应于各个掩模的边界框之间执行交并比(IoU)匹配。目的是确定与所选框具有最高IoU分数的掩模,从而选择感兴趣的对象。
文本提示在文本提示的情况下,使用CLIP 模型提取文本的相应文本嵌入。然后确定相应的图像嵌入,并使用相似度度量将其与每个掩模的内在特征进行匹配。然后选择与文本提示的图像嵌入具有最高相似度分数的掩模。

       通过精心实施这些提示引导的选择技术,FastSAM可以可靠地从分割图像中选择特定的感兴趣对象。

4. Discussion

FastSAM的框生成具有显著优势,但我们的掩模生成性能低于SAM。可能有以下原因:

  • 低质量的小尺寸分割掩模具有较大的置信度分数。我们认为这是因为置信度分数被定义为YOLOv8的bbox分数,与掩模质量没有强烈关联。改变网络以预测掩模IoU或其他质量指标是改善这一问题的一种方式。
  • 一些微小尺寸对象的掩模倾向于近似正方形。此外,大型对象的掩模可能在边界框的边缘具有一些伪影。这是YOLACT方法的缺点。通过增强掩模原型的能力或重新构造掩模生成器,预计可以解决这个问题。

5. Conclusion

       在本文中,我们重新考虑了segment of anything task和相应模型结构的选择,并提出了一个比SAM-ViT-H (32×32)运行速度快50倍的替代解决方案。实验结果表明,FastSAM可以很好地解决多个下游任务。尽管如此,FastSAM仍有几个弱点可以加以改进,比如评分机制和实例面具生成范式。这些问题都留待进一步研究。
 

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

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

相关文章

数仓学习---15、数据仓库工作流调度

1、数据仓库工作流调度 1.1 调度工具部署 工具部署链接 1.2 新数据生成 1.2.1 用户行为日志 1、启动日志采集通道,包括Kafka、Flume等 (1)启动Zookeeper zk.sh start(2)启动Kafka kf.sh start(3&…

【雕爷学编程】Arduino动手做(95)---GY9960手势传感器模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

电容触摸屏(TP)的工艺结构

液晶显示屏(LCM),触摸屏(TP) “GG、GP、GF”这是结构分类,第一个字母表面材质(又称为上层),第二个字母是触摸屏的材质(又称为下层),两者贴合在一起。 G玻璃,FFILM,“”贴…

华为eNSP:路由引入

一、拓扑图 二、路由器的配置 1、配置路由器的IP AR1: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.2 24 [Huaw…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 一)

状态管理概述 在前文的描述中,我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念。 图1 效果图 上面的示例中,用户与应用程序的交互触发了文本状态变更,状态变更引起了UI渲染&#x…

Blazor实战——Known框架多表增删改查

多表增删改查示例 本章介绍学习多张表增、删、改、查功能如何实现,下面以销货出库单作为示例,该业务栏位如下: 销货出库单栏位 销货单号、销货日期、状态、客户、备注 销货出库单明细栏位 商品编码、商品名称、规格型号、数量、单位、单价、…

详解rocketMq通信模块升级构想

本文从开发者的角度深入解析了基于netty的通信模块, 并通过简易扩展实现微服务化通信工具雏形, 适合于想要了解netty通信框架的使用案例, 想了解中间件通信模块设计, 以及微服务通信底层架构的同学。希望此文能给大家带来通信模块架构灵感。 概述 网络通信是很常见的需求&#…

065、故障处理之OMM_TiKV

TiKV Server OOM 对业务的影响 TiKV 上的请求失败造成异常退出region leader重新选举 raft group 开始选举新的 region leader新的region leader 上报信息给PD Server region cache频繁更新 在访问TiDB Server的region cache时,出现TiKV rpc相关报错后台自动进行Ba…

解放程序员,加速创新,缺少的就是一个工具而已

随着科技的不断进步和应用场景的不断扩大,软件开发已经成为当今世界的核心驱动力之一。 然而,传统的软件开发模式往往存在着繁琐的编码过程、复杂的架构设计和漫长的调试周期,使得程序员们难以专注于创新和高难度的研究。 很多程序员上班的时…

基于解析法和遗传算法相结合的配电网多台分布式电源降损配置(Matlab实现)

目录 1 概述 2 数学模型 2.1 问题表述 2.2 DG的最佳位置和容量(解析法) 2.3 使用 GA 进行最佳功率因数确定和 DG 分配 3 仿真结果与讨论 3.1 33 节点测试配电系统的仿真 3.2 69 节点测试配电系统仿真 4 结论 1 概述 为了使系统网损达到最低值&a…

一分钟学会利用GPT编写爆款标题

🏆 文章目标:学习利用GPT编写爆款标题 🍀 入门篇:一分钟学会利用GPT编写爆款标题 ✅ 创作者:熊猫Jay ✨ 个人公众号: 熊猫Jay字节之旅 (文末有链接) 🍁 展望:若本篇讲解内容帮助到您&#xff0c…

Web网站性能压测实践 | 数据平台

一、 为什么要做压测? 首先解释下为什么要做性能压测:根据 Amazon 统计,每慢 100 毫秒,交易额下降 1%。这个统计数据为大家敲响了警钟,也客观说明了性能压测对于企业应用的重要性。从具体的OKR上讲,我们希望…

常见排序算法-Python实现

python 排序 算法 1.二分法 ​ python 32行 #codingutf-8 def binary_search(input_array, value): """Your code goes here.""" length len(input_array) left 0 right length-1 if length 1: return 0 if value input_value[0] els…

Linux 多线程并发Socket服务端的实现( 11 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

3秒快速打开 jupyter notebook

利用 bat 脚本,实现一键打开 minconda 特点: 1、可指定 python 环境 2、可指定 jupyter 目录 一、配置环境 minconda 可以搭建不同的 python 环境,所以我们需要找到 minconda 安装目录,把对应目录添加到电脑环境 PATH 中&#…

prepros.crack.7.8.5 by Xacker

您友好的 Web 开发伙伴 Prepros 编译您的文件,转译您的 JavaScript,重新加载您的浏览器,并使开发和测试您的网站变得非常容易,这样您就可以专注于使它们完美。 适用于 Windows、macOS 和 Linux 试用版包括所有 Prepros 功能。 编…

【数据结构】树状数组和线段树

树状数组和线段树 下文为自己的题解总结,参考其他题解写成,取其精华,做以笔记,如有描述不清楚或者错误麻烦指正,不胜感激,不喜勿喷! 树状数组 需求: 能够快速计算区间和保证在修改…

了解 MySQL 中 MVCC 的原理

点击上方↑“追梦 Java”关注,一起追梦! 要解决读一致性的问题,保证一个事务中前后两次读取数据结果一致,还有一种 MVCC 的方式,又叫多版本的并发控制(Multi Version Concurrency Control)。 MV…

Flink状态的理解

Flink是一个带状态的数据处理系统;系统在处理数据的过程中,各算子所记录的状态会随着数据的处理而不断变化; 1. 状态 所谓状态State,一般指一个具体的 Task 的状态,即线程处理过程中需要保存的历史数据或历史累计数据…

SpringBoot集成Redis的环境部署以及操作Redis

文章目录 Spring Boot 集成Redis1.环境配置 redis连接配置信息不写默认wei6379,数据库为02.操作Redis2.1 代码形式操作Redis2.2 使用注解方式操作Redis Spring Boot 集成Redis 1.环境配置 添加redis依赖 在老项目添加,可以在pom.xml文件直接添加&#…