【论文笔记】Fast Segment Anything

news2024/9/26 5:13:18

我说个数:一个月5篇基于Fast Segment Anything的改进的论文就会出现哈哈哈哈。

1.介绍

1.1 挑战

SAM架构的主要部分Transformer(ViT)模型相关的大量计算资源需求,这给其实际部署带来了障碍

1.2 任务解耦

将分段任意任务解耦为两个顺序阶段,分别是是实例分段和提示引导选择。

  • 第一阶段取决于基于卷积神经网络(CNN)的检测器的实现。它生成图像中所有实例的分割掩码。
  • 在第二阶段,它输出与提示相对应的感兴趣区域。

1.3 核心贡献

首次将CNN检测器应用于Segment Anything任务

2.方法

提出的方法FastSAM的概述。该方法包括两个阶段,即所有实例分割(All-instance Segmentation )和提示引导选择(Prompt-guided Selection)。前一阶段是基础,第二阶段本质上是面向任务的后处理。

2.1 All-instance Segmentation 所有实例分割

2.1.1 YOLOv8

模型架构需要懂一点点yolov8的知识,可以参考详细解读YOLOv8的改进模块.

其实主要的改进就两点:

  • YOLOv8的主干网和颈部模块用C2f模块取代了YOLOv5的C3模块。
  • 头模块采用解耦结构,将分类头和检测头分离,并从基于锚转向无锚

2.1.2 YOLOv8-seg 

将YOLACT原理应用于实例分割。主要负责了Fast Segment Anything中实例分割部分的工作。

2.2 Prompt-guided Selection 提示引导选择

第二阶段是使用各种提示来识别感兴趣的特定对象。它主要涉及点提示、框提示和文本提示的使用

2.2.1 Point prompt

将选定的点与从第一阶段获得的各种mask进行匹配。

2.2.2 Box prompt

长方体提示涉及在选定长方体和与第一阶段中的各种遮罩相对应的边界框之间执行并集交集(IoU)匹配。其目的是用所选框识别具有最高IoU分数的掩码,从而选择感兴趣的对象

2.2.3 Text prompt

在文本提示的情况下,使用CLIP[31]模型提取文本的相应文本嵌入。然后确定相应的图像嵌入,并使用相似性度量将其与每个掩模的内在特征相匹配。然后选择与文本提示的图像嵌入具有最高相似性得分的掩码

2.3 下游任务

以零样本边缘检测方法为例

2.3.1 零样本边缘检测方法

从FastSAM的所有实例分割阶段的结果中选择掩码概率图。之后,将Sobel滤波[33]应用于所有掩码概率图,以生成边缘图。最后,我们以边缘NMS[6]步骤结束

虽然没有sam那么多细节,但是也基本上相当了 

2.4 特点

2.4.1 缺点

  • 低质量的小型分割掩模具有大的置信度分数。

因为置信度分数被定义为YOLOv8的bbox分数,它与口罩质量没有强烈的相关性。

修改网络以预测掩码IoU或其他质量指标

  • 一些微小物体的掩码往往接近正方形。大型对象的掩码在边界框的边界上可能有一些伪影。

这就是YOLACT方法的弱点。

提高掩模原型的能力或重新制定掩模生成器,该问题有望得到解决。

3.代码

3.1 demo测试

左边是SAM,右边是fast SAM,还是能比较明显的感受到线条的平滑程度上有一定的区别。

3.2回顾一下SAM

 SAM将图片,提示都使用嵌入形式送入transformer

 SAM流程图

3.3  推理代码

我更愿意将Fast Segment Anything称为是yolo的扩展应用,主要由yolov8-seg分割出实例之后进行后处理。

后处理 = prompt处理 + 绘图等  

3.3.1 prompt

 

box_prompt:bbox和所有实例iou

point_prompt:检查point是否实例内

text_prompt:将实例剪裁后送入clip进行检索

 

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

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

相关文章

正确认识:1189194-65-7,DOTA-CH2-Alkynyl (TFA salt),试剂的结构式和CAS

文章关键词:双功能螯合剂,大环配体,标记螯合剂修饰 【产品描述】 DOTA-CH2-Alkynyl (TFA salt)中TFA是一种强酸。它可以质子化任何氨基。盐酸也是这样。在纯化多肽过程中的反相HPLC,有一种技术是阴离子交换。将多肽加载在柱子上&a…

MySql基础教程(三):创建数据表、数据增删改查、删除数据表

MySql基础教程(三):创建数据表、数据增删改查、删除数据表 1、创建数据表 创建MySQL数据表需要以下信息: 表名表字段名定义每个表字段 1.1 语法 下面是创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_typ…

无线蓝牙通信有关(NRF2401模块)的功耗,通道频率等

参考: ISM频段 Industrial Scientific Medical,ISM(工业、科学、医疗)频段为国际电信联盟(ITU)《无线电规则》定义的指定无线电频段。 Frequency-Shift Keying 数字调制技术(FSK调制) 将需要…

又是一年毕业季,准备好踏入职场了吗?

文章目录 一、大学时光二、给毕业生的一些建议三、职场中的经验分享四、程序员未来职业规划 一、大学时光 作为一名程序员,大学时光是我职业生涯中最重要的时期之一。这四年的大学,我不仅学到了计算机科学的理论知识,还积累了丰富的编程经验…

tqdm:python的简单可视化进度

tqdm:python的简单可视化进度 说明 ​ 本篇文章的主要目的是快速上手使用,而不是解析源码。 目录结构 文章目录 tqdm:python的简单可视化进度1. 应用场景2. 库安装3. 方法速览4. 案例5. 总结 1. 应用场景 ​ 进度条应用的场景很多&#xff0…

YOLOv8独家原创改进:独家首发最新原创XIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能、收敛速度和鲁棒性

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv8独家原创改进:独家首发最新原创XIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能、收敛速度和鲁棒性。 💡对自己…

[RocketMQ] Producer发送消息的总体流程 (七)

单向发送: 把消息发向Broker服务器, 不管Broker是否接收, 只管发, 不管结果。同步发送: 把消息发向Broker服务器, 如果Broker成功接收, 可以得到Broker的响应。异步发送: 把消息发向Broker服务器, 如果Broker成功接收, 可以得到Broker的响应。异步所以发送消息后, 不用等待, 等…

css基础知识十:介绍一下CSS中的Grid网格布局?

一、是什么 Grid 布局即网格布局,是一个二维的布局方式,由纵横相交的两组网格线形成的框架性布局结构,能够同时处理行与列 擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系 这与之前讲到的flex一维…

操作系统—内存管理

单片机是没有操作系统的,每次写完代码都是通过一些工具将程序直接烧录进去,这样程序才能跑起来。单片机的CPU是直接操作内存的物理地址。在这种情况下,要想在内存中同时运行两个程序是不可能的,程序会崩溃。那么操作系统为了解决这…

LLM相关的一些调研

Prompt Engine 可以参考该项目,该项目提供关于提示词书写的规则。由openai以及吴恩达完成。 https://github.com/datawhalechina/prompt-engineering-for-developers由于目前chatgpt 无法直接在国内访问,推荐在claude on slack上尝试。关于claude api h…

Leetcode:1035. 不相交的线、53. 最大子数组和(C++)

目录 1035. 不相交的线 题目描述: 实现代码与解析: 动态规划 原理解析: 53. 最大子数组和 题目描述: 实现代码与解析: 动态规划 原理思路: 1035. 不相交的线 题目描述: 在两条独立的水…

移动端永不过时的高薪技术岗位,原来是它……

随着 Android 设备的普及和应用领域的不断扩大,Android Framework 开发需求量将会持续增长,并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景: 1. 特定垂直领域的智能设备&#x…

Jmeter性能测试

一、jmeter多并发 1.线程设置: 线程数——多少个虚拟用户 ramp_up时间(秒)——时间,设置时间内将线程都跑完 循环次数——勾选永远,就一直跑,直到手动停止;输入数字,就是循环多少次 2.jmeter逻辑分支控制…

关于MySQL性能优化方案,掌握这一篇就够了!

目录 前言 一、设置索引 1、索引的优缺点: 2、给表列创建索引 3、查看索引 4、删除索引: 5、索引原理: 二、分类讨论 三、针对偶尔很慢的情况 1、 数据库在刷新脏页(flush) 2. 拿不到锁我能怎么办 四、针对一直都这…

力扣题库刷题笔记16--最接近的三数之和

1、题目如下: 2、个人Python代码实现 本题的思路应该与很早之前刷的第15题三数之和是一个思路: 1、先将数组排序,然后进行遍历数组 2、确定左指针、右指针 3、判断三个数之和是否接近目标值 4、重点是,为确保左右指针不是同一个元…

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址: https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模,因为他每次看一个比较小的窗口,如果两个像素隔得比较…

6.STM32时钟系统

1.时钟系统框图: HSI:高速的内部时钟->8MHz;HSE:外部高速时钟->8MHz;PLL: 锁相环->用于倍频(放大频率);CSS:时钟监控系统(一旦检测到HSE(外部晶振)失败,将会自动切换系统时钟源HSI);LS…

高等数学函数的性质

(本文内容为个人笔记分享) 牛顿二项公式 ( x y ) n ∑ k 0 n C n k ⋅ x n − k y k (xy)^n\stackrel{n}{\sum\limits_{k0}}C^k_n\sdot x^{n-k}y^k (xy)nk0∑​n​Cnk​⋅xn−kyk. 映射 f : X → Y f:X\rightarrow Y f:X→Y, f f f 为 …

成功解决RuntimeError:Unable to find a valid cuDNN algorithm to run convolution

该错误有可能是由于GPU不足导致的 有两种解决方法: 方法一:指定device 在指定device时,没有指定具体的卡 只用了如下代码 device torch.device("cuda" if torch.cuda.is_available() else "cpu")默认使用了index0的卡&#xff0…

CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUTest的下载与安装 简介下载地址单元测试框架下载单元测试被测工程下载 安装安装Cygwin下载地址安装步骤手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框…