经典文献阅读之--FastSAM(快速分割一切)

0. 简介

MetaAI提出的能够“分割一切”的视觉基础大模型SAM提供了很好的分割效果,为探索视觉大模型提供了一个新的方向。虽然SAM的效果很好,但由于SAM的backbone使用了ViT,导致推理时显存的占用较多,推理速度偏慢,对硬件的要求较高,在项目应用上有很大的限制。

中科院自动化所近期提出了《Fast Segment Anything》,本文提出了一种具有可比性能的加速替代方法。通过将该任务重新定义为分割生成和提示,作者发现一个常规的CNN检测器结合实例分割分支也可以很好地完成这个任务。论文结果显示最快比SAM快出50倍,同时参数更少,显存占用减少,适合应用部署。

在这里插入图片描述

图1. FastSAM和SAM的比较分析。(a) 在一块NVIDIA GeForce RTX 3090上,FastSAM和SAM的速度比较。(b) 在BSDS500数据集[1, 28]上进行边缘检测的比较。©在COCO数据集[25]上,FastSAM和SAM的目标提议的Box AR@1000评估。SAM和FastSAM都使用PyTorch进行推理,除了FastSAM(TRT)使用TensorRT进行推理。

1. 主要贡献

实时的segment anything模型对于工业应用非常有价值。它可以应用于许多场景。所提出的方法不仅为大量视觉任务提供了新的实用解决方案,而且速度非常快,比当前方法快几十倍或几百倍。此外,它还为通用视觉任务的大型模型架构提供了新的视角。对于特定任务来说,特定的模型仍然可以利用优势来获得更好的效率-准确性平衡。

在模型压缩的角度上,本文方法通过引入人工先验结构,展示了显著减少计算量的可行路径。本文贡献可总结如下:

  • 引入了一种新颖的实时基于CNN的Segment Anything任务解决方案,显著降低了计算需求同时保持竞争性能。
  • 本研究首次提出了将CNN检测器应用于segment anything任务,并提供了在复杂视觉任务中轻量级CNN模型潜力的见解。
  • 通过在多个基准测试上对所提出的方法和SAM进行比较评估,揭示了该方法在segment anything领域的优势和劣势。

2. 概述

图2展示了提出的方法FastSAM的概述。该方法由两个阶段组成,即全实例分割和提示引导选择。 前一个阶段是基础阶段,而第二个阶段实质上是面向任务的后处理。与端到端的Transformer[7,8,19]不同,整体方法引入了许多与视觉分割任务相匹配的人类先验知识,例如卷积的局部连接和感受野相关的对象分配策略。这使得它更适合于视觉分割任务,并且可以在较少的参数数量下更快地收敛。

在这里插入图片描述

图2. FastSAM的框架。它包含两个阶段:全实例分割(AIS)和提示引导选择(PGS)。我们使用YOLOv8-seg [16]来分割图像中的所有对象或区域。然后我们使用各种提示来识别感兴趣的特定对象。这主要涉及到点提示、框提示和文本提示的利用。文本提示基于CLIP [31]。

3. 全实例分割模型架构

YOLOv8 [16] 的架构是基于其前身YOLOv5 [15] 的发展而来的,集成了最近算法(如YOLOX [10]、YOLOv6 [22] 和YOLOv7 [35])的关键设计方面。YOLOv8的主干网络和颈部模块用C2f模块替代了YOLOv5的C3模块。更新后的头部模块采用了解耦结构,将分类和检测头部分开,并从基于锚点的方法转变为无锚点的方法。

实例分割:YOLOv8-seg采用了YOLACT [4] 的实例分割原理。它通过主干网络和特征金字塔网络(FPN)[24]从图像中提取特征,集成了不同尺寸的特征。输出包括检测分支和分割分支。检测分支输出类别和边界框,而分割分支输出k个原型(默认为32个)以及k个掩码系数。分割和检测任务并行计算。分割分支输入高分辨率特征图,保留空间细节,并包含语义信息。该特征图经过卷积层处理,上采样,然后通过另外两个卷积层输出掩码。掩码系数与检测头部的分类分支类似,取值范围在-1到1之间。实例分割结果通过将掩码系数与原型相乘并求和得到。

YOLOv8可以用于各种目标检测任务。通过实例分割分支,YOLOv8-Seg适用于分割任何物体的任务,旨在准确检测和分割图像中的每个对象或区域,无论对象的类别如何。原型和掩模系数为快速引导提供了很多可扩展性。举个简单的例子,我们额外训练了一个简单的提示编码器和解码器结构,以各种提示和图像特征嵌入作为输入,以掩模系数作为输出。在FastSAM中,我们直接使用YOLOv8-Seg方法进行全实例分割阶段。更多的人工设计可能会带来额外的改进,但我们认为这超出了本研究的范围,将其留待未来研究。

4. 提示引导的选择

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

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

框提示:框提示涉及在第一阶段对应的边界框和各种掩模之间执行交并比(IoU)匹配。目标是确定与选定框具有最高IoU得分的掩模,从而选择感兴趣的对象。

…详情请参照古月居

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多图详解VSCode搭建Java开发环境

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

LeetCode--HOT100题(46)

目录 题目描述:114. 二叉树展开为链表(中等)题目接口解题思路代码 PS: 题目描述:114. 二叉树展开为链表(中等) 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链…

qt day 1

this->setWindowIcon(QIcon("D:\\zhuomian\\wodepeizhenshi.png"));//設置窗口的iconthis->setWindowTitle("鵬哥快聊");//更改名字this->setFixedSize(500,400);//設置尺寸QLabel *qlnew QLabel(this);//創建一個標簽ql->resize(QSize(500,20…

Stable Diffusion WebUI 整合包

现在网络上出现的各种整合包只是整合了运行 Stable Diffusion WebUI(以下简称为 SD-WebUI)必需的 Python 和 Git 环境,并且预置好模型,有些整合包还添加了一些常用的插件,其实际与手动进行本地部署并没有区别。 不过&a…

[linux实战] 华为云耀云服务器L实例 Java、node环境配置

系列文章目录 第一章 [linux实战] 华为云耀云服务器L实例 Java、node环境配置 文章目录 系列文章目录前言一、任务拆解二、修改密码三、配置安全规则四、远程登录并更新apt五、安装、配置JDK环境5.1、安装openjdk,选择8版本5.2、检查jdk配置 六、安装、配置git6.1、安装git6.2…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 高校汉服租赁网站的 设计与实现

一.项目介绍 高校汉服租赁网站分为普通用户以及管理员两类 普通用户: 注册、登录系统、查看汉服首页发帖公告信息、 交流论坛(发帖、查看帖子、评论)、 公告咨询(查看公告以及评论)、 汉服信息(查…

CotEditor for mac 4.0.1 中文版(开源文本编辑器)

coteditorformac是一款简单实用的基于Cocoa的macOS纯文本编辑器,coteditormac版本可以用来编辑网页、结构化文本、程序源代码等文本文件,使用起来非常方便。 CotEditor for Mac具有正则表达式搜索和替换、语法高亮、编码等实用功能,而CotEdi…

IntelliJ IDEA快捷键大全 + 动图演示,建议收藏!

本文参考了 IntelliJ IDEA 的官网,列举了IntelliJ IDEA(Windows 版)的所有快捷键。并在此基础上,为 90% 以上的快捷键提供了动图演示,能够直观的看到操作效果。 该快捷键共分 16 种,可以方便的按各类查找自…

redis windows 版本安装

1. 下载windows安装包并解压 如果是Linux版本可以直接到官网下载,自3.x起官网和微软网站就没有redis安装包更新了,好在github有开发者在编译发布更新(目前最新有5.0.9版本可下),地址:redis windows 5版本下…

微软 Turing Bletchley v3视觉语言模型更新:必应搜索图片更精准

据微软新闻稿透露,在推出第三代Turing Bletchley视觉语言模型后,微软计划逐步将其整合到Bing等相关产品中,以提供更出色的图像搜索体验。这款模型最初于2021年11月面世,并在2022年秋季开始邀请用户测试。 凭借用户的反馈和建议&am…

SpringBoot初级开发--整体应用的统一性异常管理(7)

在整个系统中,通常会要求有统一性的异常抛出,统一的异常格式,统一的异常界面,而不是把整个堆栈错误信息抛出,这样对整个系统的安全性以及错误定位都非常不好,接下来我们紧接上一章的源码,加上统…

解释基本的3D理论

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 坐标系 3D 本质上是关于 3D 空间中形状的表示,并使用坐标系来计算它们的位置。 WebGL 使用右侧坐标系 — 轴指向右侧,轴指向上方,轴指向屏幕外,如上图所示。xyz 对象 …

Unity ShaderGraph教程——进阶shader

1.水面(一) 公式:场景深度 节点深度 — 屏幕空间位置的W向量 半透明物体与不透明物体的相交边缘 原理:场景深度 节点深度包含透明像素,屏幕空间w向量不包含透明像素。 注意:需要在UniversalRP-xxxQuali…

swagger 接口测试,用 python 写自动化时该如何处理?

在使用Python进行Swagger接口测试时,可以使用requests库来发送HTTP请求,并使用json库和yaml库来处理响应数据。以下是一个简单的示例代码: import requests import json import yaml# Swagger API文档地址和需要测试的接口路径 swagger_url …

什么是架构,架构的本质是什么

不论是开发人员还是架构师,我们都一直在跟软件系统打交道,架构是在工作中出现最频繁的术语之一。那么,到底什么是架构?你可能有自己的答案,也有可能没有答案。对“架构”的理解需要我们不断在实践中思考、归纳、演绎&a…

各种排序算法性能对比

C数据结构与算法 目录 冒泡排序 ​ 插入排序 ​ 选择排序 ​ 上图中最后一列为:nn*(n-1)/2 ​

双亲委派机制

双亲委派机制流程 当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。 当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试…

RedHat7 配置国内清华大学yum源

1.前置准备工作 #导入gpg key rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #在/etc/yum.repos.d/下安装elrepo.repo 文件 yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm2.vim未安装可以先安装一下 sudo yum install vim3.编辑…

c++搜索剪枝常见方法与技巧

目录 搜索剪枝常见方法与技巧 关键字 搜索方法,剪枝 摘要 正文 小结 程序 参考书目 搜索剪枝常见方法与技巧 关键字 搜索方法,剪枝 摘要 搜索是计算机解题中常用的方法,它实质上是枚举法的应用。由于它相当于枚举法,所以其效率是相当地的。因此…

docker与phpstudy两种方式部署wordpress 并 开启伪静态

实际测试,可能是docker内存限制的缘故,docker部署的会比较卡 下载 wordpress phpstudy phpstudy中伪静态配置 伪静态 正常访问 WordPress 文章页的 URL 地址为 http://asa/index.php?p123。变成伪静态就是http://asa/123.html 。 伪静态是相对真实静…