Fast Segment Anything Model(FastSAM)

news/2024/11/25 10:45:33/

Fast Segment Anything Model(FastSAM)
Fast Segment Anything Model(FastSAM)是一个仅使用SAM作者发布的SA-1B数据集的2%进行训练的CNN Segment Anything模型。FastSAM在50倍的运行速度下实现了与SAM方法相当的性能。

SAM代码:https://github.com/casia-iva-lab/fastsam
SAM论文:https://arxiv.org/pdf/2306.12156.pdf

1 概述

Segment Anything Model(SAM)在计算机视觉任务中很有用,但它的Transformer架构在高分辨率输入下计算成本很高,限制了它在工业场景中的应用。我们提出了一种速度更快的替代方法,性能与SAM相当。通过将任务重新定义为分段生成和提示,我们发现一个常规的CNN检测器加上实例分割分支可以完成任务。我们只使用SAM作者发布的SA-1B数据集的1/50来训练现有的实例分割方法。使用我们的方法,我们在50倍运行速度下实现了与SAM相当的性能。

在这里插入图片描述

2 FastSAM

FastSAM将segment anything任务分解为两个连续的阶段,即全实例分割和提示引导选择。第一阶段依赖于基于卷积神经网络(CNN)的检测器的实现。它生成图像中所有实例的分割掩码。然后在第二阶段,它输出与提示相对应的感兴趣区域。通过利用CNN的计算效率,FastSAM可以在不太损失性能质量的情况下,可以实现实时的segment anything模型。
在这里插入图片描述

2-1 All-instance Segmentation

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

2-2 Prompt-guided Selection

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

点提示 包括将所选点与从第一阶段获得的各种掩模进行匹配。目标是确定点所在的掩模。与SAM类似,我们采用前景/背景点作为提示。在前景点位于多个掩模的情况下,可以利用背景点来过滤与当前任务无关的掩模。通过使用一组前景/背景点,我们能够在感兴趣的区域内选择多个掩模。这些掩模将合并为一个掩模,以完全标记感兴趣的对象。此外,我们利用形态学操作来提高掩模合并的性能。
框提示框提示涉及在所选框和从第一阶段对应于各个掩模的边界框之间执行交并比(IoU)匹配。目的是确定与所选框具有最高IoU分数的掩模,从而选择感兴趣的对象。
文本提示在文本提示的情况下,使用CLIP 模型提取文本的相应文本嵌入。然后确定相应的图像嵌入,并使用相似度度量将其与每个掩模的内在特征进行匹配。然后选择与文本提示的图像嵌入具有最高相似度分数的掩模。

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

3 Experiments

在这里插入图片描述
Zero-Shot Edge Detection
在这里插入图片描述

anomaly detection
在这里插入图片描述
salient object segmentation
在这里插入图片描述

4 Discussion

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

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

http://www.ppmy.cn/news/586746.html

相关文章

bootstrapVue踩坑

radio返回数字类型 value前需要有“&#xff1a;”&#xff0c;且后面也是需要带引号的:value1 好像也是有问题的使用——:value"1"来实现 <b-form-radio-group v-model"name"><b-form-radioname"name_radio":value"1">…

软件测试的概念与过程(软件测试的历史、概念、结构、过程)

软件测试的概念与过程----软件测试的历史 软件测试的历史软件的概念软件的结构软件测试的过程 软件测试的历史 1、早期的的软件开发过程中&#xff0c;将测试“调试”&#xff0c;目的是纠正软件已经知道的故障&#xff0c;常常有开发人员自己去完成这部分工作。 2、1957年&…

python 创建二维列表【空列表或定长列表】

正确写法&#xff1a; 空列表设置了初始值的定长列表 ### 创建3行的二维空列表 ### a [[] for i in range(3)] print(a) # [[], [], []]### 每一行非空&#xff0c;并设定初始值及其长度 ### ### 创建3行&#xff0c;每一行列表初始化全0的列表&#xff0c;且长度为5 ### a…

Apikit 自学日记:数据结构

您可以将API文档中的重复部分提取出来成为数据结构&#xff0c;方便其他文档中复用。当数据结构发生改变时&#xff0c;所有引用了该数据结构的API文档会同步发生改变。 创建数据结构 进入数据结构管理页面&#xff0c;点击 添加数据结构 按钮&#xff0c;输入相关内容并保存…

C++ new, delete

目录 语法示例1. 对使用 new 分配的对象进行初始化2. 使用 new 分配的对象的生存期 new 的工作原理 语法 new其实就是告诉计算机开辟一段新的空间&#xff0c;但是和一般的声明不同的是&#xff0c;new开辟的空间在堆上&#xff0c;而一般声明的变量存放在栈上。通常来说&…

ivx低代码开发平台

前言 低代码开发平台&#xff08;Low-Code Development Platform, LCDS&#xff09;为企业和开发者提供了高效的应用开发方式。在2023年&#xff0c;中国的低代码开发平台正在快速发展&#xff0c;以下是其中最受关注的十大平台&#xff1a; iVX&#xff1a;iVX是一款新型的低代…

接口测试实战篇,吐血整理汇总,接口测试你知多少?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试&#xf…

群晖DSM桌面无法删除快捷方式(无法右键)解决方法

发现群晖的远程桌面上的快捷方式无法删除 其实是浏览器不兼容的问题&#xff08;我的是EDGE&#xff09;&#xff0c;换一个旧一点的浏览器就可以右键删除了 问题解决