【计算机视觉】不仅能分割一切简单物体,而且还能高精度分割一切复杂物体的SAM升级版本HQ-SAM来了

news2024/11/25 19:31:17

文章目录

  • 一、SAM 导读
  • 二、SAM 的应用场景
    • 2.1 SAM-RBox-生成旋转矩形框
    • 2.2 Prompt-Segment-Anything-生成矩形框和掩
    • 2.3 Grounded-Segment-Anything-开放数据集检测与分割
    • 2.4 segment-anything-video-视频分割
    • 2.5 Open-vocabulary-Segment-Anything-开放词典分割
    • 2.6 SegDrawer-基于SAM的标注工具
    • 2.7 Caption Anything-基于SAM的caption生成工具
  • 三、HQ-SAM简介
  • 四、HQ-SAM整体流程
  • 五、HQ-SAM vs SAM
    • 5.1 HQ-SAM与SAM主观效果比较
    • 5.2 HQ-SAM与SAM客观指标比较
  • 六、HQ-SAM效果展示

一、SAM 导读

相信很多朋友都对Facebook开源的Segement Anything(SAM)算法有很深的印象,当前SAM已经被开发出众多的热门应用,至今为止,可能已经有很多朋友用它来提升自己的工作与生产效率。

虽然SAM算法效果很好,但是当碰到复杂的图像分割任务时,SAM输出的效果并不能满足我们的需求。

为了进一步提升SAM算法的Mask质量,有学者提出了一个增强版本的HQ-SAM算法,它的出现极大的扩展了SAM算法的应用场景、极大的提升了SAM算法的预测效果。

SAM,即Segment Anything,它借助了NLP任务中的Prompt思路,通过给图像分割任务提供一下Prompt提示来完成任意目标的快速分割。提示可以是前景/背景点集、粗略的框或遮罩、任意形式的文本或者任何指示图像中需要进行分割的信息。该任务的输入是原始的图像和一些提示语,输出是图片中不同目标的掩码信息。

二、SAM 的应用场景

2.1 SAM-RBox-生成旋转矩形框

在这里插入图片描述

2.2 Prompt-Segment-Anything-生成矩形框和掩

在这里插入图片描述

2.3 Grounded-Segment-Anything-开放数据集检测与分割

在这里插入图片描述

2.4 segment-anything-video-视频分割

在这里插入图片描述

2.5 Open-vocabulary-Segment-Anything-开放词典分割

在这里插入图片描述

2.6 SegDrawer-基于SAM的标注工具

在这里插入图片描述

2.7 Caption Anything-基于SAM的caption生成工具

在这里插入图片描述

三、HQ-SAM简介

HQ-SAM是在现有的Segment Anything Model (SAM)基础上进行改进的一个能够分割任何物体的算法。HQ-SAM具有更好的分割能力,特别是在处理具有复杂结构的对象时,能够更准确地分割。同时,HQ-SAM保留了SAM的可提示性、高效性和零-shot泛化能力。

为了训练HQ-SAM,研究人员设计了一个可学习的高质量输出标记,并将其注入到SAM的掩模解码器中,负责预测高质量掩模。为了提高掩模细节,研究人员将掩模解码器特征与早期和最终的ViT特征融合。
在这里插入图片描述

为了训练引入的可学习参数,研究人员创建了一个由多个不同来源组成的44K细粒度掩模数据集。HQ-SAM只在这个44k数据集上进行训练,使用8个GPU训练了4个小时。研究人员展示了HQ-SAM在9个不同的分割数据集中的有效性,更多的细节请看下文。

论文链接:

https://arxiv.org/pdf/2306.01567.pdf

github 链接:

https://github.com/SysCV/SAM-HQ

在这里插入图片描述

四、HQ-SAM整体流程

在这里插入图片描述
为了保留 SAM算法的零样本迁移能力,同时防止模型过拟合或灾难性遗忘,HQ-SAM 尽可能采用最小的改动,而不是直接微调 SAM 或添加新的复杂的解码器网络。因而,HQ-SAM 尽可能重用 SAM 的预训练模型权重,只添加了两个新的关键组件,即高质量输出令牌和全局-局部特征融合。如上图所示,HQ-SAM算法的具体步骤如下所述:

步骤1:首先,将输入图片传入SAM中的图像编码器中获取一个6464大小的特征映射。获取输入Prompt信息的Token表示Ntoken256,输出Token(类似于 DETR 中的对象查询)。

步骤2:然后,为了改进SAM算法的掩码质量,HQ-SAM 重用并修复了 SAM 的掩码解码器。HQ-SAM 添加了一个新的可学习的 HQ-Output Token(大小为 1×256),将其与 SAM 的输出令牌(大小为 4×256)和提示令牌(大小为 Nprompt×256)连接起来,作为输入传递给 SAM 的掩码解码器。类似于原始的输出令牌,在每个注意力层中,HQ-Output Token 首先与其他令牌进行自注意力计算,然后进行令牌到图像和图像到令牌的注意力计算,以更新其特征;最后,HQ-SAM 添加了一个新的三层 MLP,用于从更新的 HQ-Output Token 生成动态卷积核,然后将其与融合的 HQ-feature 进行空间逐点乘积,以生成高质量的掩码。

步骤3:接着,HQ-SAM 使用了 SAM 的 ViT 编码器中的三个特征来提高分割质量,这些特征分别是:1)SAM 的 ViT 编码器中的早期层局部特征,其空间形状为 64×64,可以捕捉更一般的图像边缘/边界细节。具体来说,HQ-SAM 提取了 ViT 编码器的第一个全局注意力块之后的特征,对于基于 ViT-Large 的 SAM,这是总共 24 个块中的第 6 个块输出。2)SAM 的 ViT 编码器中的最终层全局特征,其形状为 64×64,包含更多的全局图像上下文信息;3)SAM 的掩码解码器中的掩码特征,其大小为 256×256,也被输出令牌共享,包含强烈的掩码形状信息。

步骤4:输出最终的HQ-SAM分割结果,为了便于比较,作者同时显示了SAM的输出结果。

五、HQ-SAM vs SAM

5.1 HQ-SAM与SAM主观效果比较

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图展示了HQ-SAM算法与SAM算法在几张测试图片上面的输出结果。通过观察与分析,我们可以得出以下的初步结论:

1)HQ-SAM与SAM都可以对任意目标进行快速的分割;

2)相比于SAM算法,HQ-SAM算法能够精确的分割出一些细节信息,尤其是对其比较复杂的目标,例如:长凳、网球拍等。

3)HQ-SAM算法可以在一定程度上降低你的数据标注量,不仅可以降低你的成本,而且可以节约你的时间。

5.2 HQ-SAM与SAM客观指标比较

在这里插入图片描述
上表展示了HQ-SAM和SAM算法的不同版本在HQ数据集和COCO数据集上面的效果。通过观察与分析,我们可以得出以下的初步结论:

  • 针对HQ数据集而言,不管是mIoU指标还是mBIoU指标,HQ-SAM算法的输出效果都明显优于SAM算法的效果;
  • 针对COCO数据集而言,从各种AP指标来看,HQ-SAM算法的输出效果都在一定程度上优于SAM算法的效果;
  • 虽然HQ-SAM算法的参数量更大一些,但是可学习的参数量却比较少!
  • 从运行速度上而言,SAM算法的运行速度要稍微由于HQ-SAM算法。
  • 两者所占用的内存大小是一样的!

在这里插入图片描述
上表展示了不同的SAM基线算法在DIS、COIFT、HRSOD、ThinObject 4个数据集上面的评估指标。通过观察与分析,我们可以得出以下的初步结论:

  • 在原始的SAM算法的基础上增加了Context Token之后,可以较大提升算法的mIoU和mBIoU指标;
  • 在原始的SAM算法的基础上增加了Output Token之后,可以在一定程度提升算法的mIoU和mBIoU指标;
  • 在原始的SAM算法的基础上增加了HQ特征之后,整个算法的mIoU和mBIoU指标都得到了较大的提升。

六、HQ-SAM效果展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

快速入门 Lua 编程

以下是一个简单的 Lua 快速编程教程,帮助你快速入门 Lua 编程。 安装 Lua 首先,你需要安装 Lua。你可以从 Lua 官网(https://www.lua.org/download.html)下载适合你的操作系统的安装包。安装完成后,你可以在命令行中…

CTFHub | 命令注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

记录一次scala项目导入编译失败的问题

文章目录 Scala项目环境问题记录小结 Scala项目环境 Java8 scala-2.11.12 MacBook Apple m2芯片 问题记录 1、scala版本安装 我的本地环境: ➜ ~ java --version openjdk 11.0.18 2023-01-17 OpenJDK Runtime Environment Homebrew (build 11.0.180) OpenJDK 64-…

【Flutter】Flutter 如何实现开屏广告

文章目录 一、前言二、实现开屏广告页面三、实现广告数据的加载四、开屏广告的完整代码五、总结 一、前言 开屏广告这个功能在商业应用中非常常见,它可以在应用启动时向用户展示广告,增加应用的商业价值。 如果你想深入学习 Flutter,掌握更…

BUUCTF 传统知识+古典密码 1

题目描述: 小明某一天收到一封密信,信中写了几个不同的年份 辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。 信的背面还写有“甲子”,请解出这段密文。 key值&a…

大学生实习周记总结

大学生实习周记总结1 经过两个月的实习,我收获了很多,也懂得了许多,同时也成熟了不少。下面我将把我两个月的实习生活分成五个部分进行总结:教学经验、班主任工作、做事态度、学生友谊、感恩的心。 教学经验:如何上好一…

使用大型语言模(LLM)构建系统(六):构建端到端系统

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。之前我们已经学习了下面这些知识: 使用大型语言模(LLM)构建系统(一):分类使用大型语言模(LLM)构建系统(二):内容审核、…

如何系统的学习python中的numpy,pandas,matplotlib?太有用了!!!

前言 随着大数据、云计算和人工智能的发展,越来越多的企业需要以数据为基础做出决策。数据分析是处理大量数据的过程,分析数据以识别趋势和模式,并从数据中提取有用的信息来支持业务决策。数据分析可以应用于各种不同的领域,如营…

性能测试如何做?性能测试-稳定性场景设计详细,晋升之路...

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

liunx服务器安装kafka

liunx服务器安装kafka 1. 初始化安装环境1.1 安装jdk1.1.1 找到对应的jdk版本1.1.2 下载并安装1.1.2.1 配置jdk环境变量 1.2 安装 zookeeper1.2.1 查找kafka对应zookeeper版本启动 2. 下载kafka 安装包 kafka 3.0.0 之前 (包括3.0.0版本)支持jdk 8 &…

浏览器唤醒本地应用

我们在使用一些应用的时候,需要通过本地浏览器来唤醒本地应用的需求。 就像我们以前使用QQ一样,在网页上点击了某个按钮,会唤醒本地安装的QQ应用。 这里来介绍一下怎么使用自定义协议来唤醒本地的Electron应用(其他框架写的应用同…

汽车电子Autosar之以太网SOME/IP(续)

前言 首先,请问大家几个小小问题,你清楚: 你知道什么是SOME/IP SD吗?SOME/IP-SD有何作用呢?SOME/IP-SD 包含哪些内容呢?SOME/IP-TP 为什么会存在? 今天,我们就来一起探索并回答这…

Mysql数据库表管理和用户管理与授权

一、表结构管理 1. 修改表名 ALTER TABLE 旧表名 RENAME 新表名 2.扩展表结构(增加字段) ALTER TABLE 表名 ADD 字段名 数据类型; 3.修改字段名,添加唯一健 change ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束]; 4.删除字段…

Linux 多路转接 —— select

目录 传统艺能😎select😍fd_set 结构😒timeval 结构🤣 socket 就绪条件😁读条件🤣写就绪😍异常就绪😒 select 工作流程😘select 服务器实现😂socket 类&#…

极致呈现系列之:Echarts饼图的千变万化

目录 创建一个最简单的饼图美化饼图修改颜色修改饼图的边框线条样式修改饼图的标签样式添加饼图的阴影效果添加修改饼图的图例样式 添加交互饼图的变化环形图动画装饰仪表盘 创建一个最简单的饼图 这个没什么好说的,懂的都懂,直接上代码 //安装 Echart…

LlamaIndex 简介:LLM 应用程序的数据框架

LlamaIndex 是一个非凡的工具,创建为一个全面的“数据框架”,以促进 LLM(大型语言模型)应用程序的开发。该框架与 ChatGPT 集成,充当大型语言模型和用户私人数据之间的桥梁。 借助 LlamaIndex,用户可以轻松…

Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存

背景 在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中,如果遇到非常复杂的sql,查询效率是非常慢 比如: select dt,count(*) from table group by dt做过数据开发的同学都知道,在hive sql查询过程中,hive…

MySQL - 第1节 - MySQL数据库基础

1.数据库的概念 数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 虽然单纯的使用文件也可以存储数据,但会存在如下缺点: • 安全性问题:数据误操…

深搜-选数类问题

目录 1.问题引入 2.知识讲解 3.例题解析 【例题1】全排列。 【例题2】素数环Ⅱ。 【样例3】素数分解。 1.问题引入 上一节探讨了迷宫类问题,和平时遇到的迷宫小游戏类似,可以使用搜索程序求得迷宫的路径和最短路。本小节继续研究深搜的另一类问…

MySQL数据库的认识及基础命令操作

目录 一、数据库的基本概念 1、数据库定义 (1) 数据 (2)表 (3) 数据库 2、 数据库管理系统(DBMS) 3、 数据库系统(DBS) 二、数据库系统发展史 1、 第一…