【论文阅读笔记】PA-SAM: Prompt Adapter SAM for High-Quality Image Segmentation

1.论文介绍

PA-SAM: Prompt Adapter SAM for High-Quality Image Segmentation
PA-SAM:用于高质量图像分割的提示适配器SAM
2024年 ICME
Paper Code

2.摘要

Segment Anything Model,SAM在各种图像分割任务中表现出了优异的性能。尽管SAM接受了超过10亿个mask的训练,但在许多场景中,尤其是在现实世界的背景下,SAM在面具预测质量方面面临着挑战。本文在SAM中引入了一种新颖的提示驱动适配器,即Prompt Adapter Segment Any Model(PA-SAM),旨在提高原有SAM的分割掩码质量。通过专门训练提示适配器,PA-SAM从图像中提取详细信息,并在稀疏和密集提示级别优化掩码解码特征,提高SAM的分割性能,以生成高质量的掩码。

Keywords

3.Introduction

SAM能够根据提示为任意图像生成多个准确而合理的掩码,展示了分割任务中的实质性影响和潜在的进步。随后的研究已经将SAM的应用扩展到不同的领域。然而,实际应用揭示了SAM在高质量分割性能方面的局限性,其显著特征是网球拍和椅子等对象的掩码边界粗糙,以及对风筝线和昆虫触角等细节的错误预测。为了解决上述问题,HQ-SAM引入了一个高质量的令牌来捕获图像中的更多细节,通过只添加几个参数来极大地提高SAM的分割质量。然而,HQ-SAM中使用的隐式学习方法使得提高SAM的分割能力具有挑战性,因为它主要专注于提取SAM的掩码译码特征来进行分割训练,而该特征是独立于SAM的整体框架的。一些基于提示查询的方法利用图像特征生成固定的稀疏提示,可以有效地获取目标对象的位置,但难以捕获详细的对象信息。此外,集成或扩充方法重复使用原始的输入稀疏提示,在具有挑战性的领域产生有限的收益。因此,开发一种能够直接向SAM提供详细信息并提高掩码译码性能的网络是非常必要的。直觉上,实现这一目的的最直接方法是提供更详细的注释,例如附加点或更精确的掩码。受到这种天真直觉的启发,作者想知道该模型是否可以自动提取细节并将其传达给SAM,从而显著提高SAM的分割质量,而不需要额外的用户输入。

作者在本文中引入了Prompt Adapter Segment Anything Model(PA-SAM),这是一个旨在调查图像中不确定区域并将低级别详细信息纳入密集和稀疏提示中的网络,以增强SAM对细节的学习能力。为了捕捉细节,提出了一种提示驱动的适配器来执行自适应细节增强和硬点挖掘。与传统适配器不同,提示适配器不优化图像特征,而是优化提示特征以提取关于网络焦点区域的详细信息。将模板求精的过程转化为求精令牌和不确定令牌的学习,使模型对具有挑战性的区域中的图像细节更敏感。此外,还提出了一种基于Gumbel top-k操作的硬点挖掘方法,为模型提供了直接详细的指导。在训练过程中,PA-SAM冻结SAM组件,只训练提示适配器,从而在生成高质量分割图的同时保留了原始SAM强大的目标定位能力。

4.模型结构详解

在这里插入图片描述

为了捕捉高质量的细节信息,本文将图像细节转换为多粒度的提示特征,并将它们传递给掩码解码器。也就是说,以即时驱动的方式对SAM进行微调。基于这一思想,本文提出了一种可训练的提示驱动适配器,并将其集成到SAM中,形成了提示适配器SAM(PA-SAM)。PA-SAM的总体架构如图所示。PA-SAM将图像特征与密集提示相结合,并将其与稀疏提示一起发送到掩码解码器,在掩码解码器中,所提出的提示适配器根据每个块的自注意将图像特征和稀疏提示分别转换为密集和稀疏适配器提示。随后,将输出的提示特征以残差的方式重新整合到PA-SAM中,以优化掩码解码器的特征表示。

提示适配器(PA)
在这里插入图片描述

为了提高网络在不确定领域学习细节的能力,PA-SAM在SAM的掩码解码器中提出了一种可训练的提示驱动适配器,如图所示。该模块通过自适应细节增强和硬点挖掘将详细信息集成到网络中,以基于原始提示自适应地捕获相关细节信息。

自适应细节增强:为了捕获高质量的细节信息,Prompt适配器执行自适应细节增强,通过密集提示补偿稀疏提示优化从图像及其梯度中探索细节信息。
密集提示补偿。在图像编码过程中,由于其16×16的下采样,SAM经历了大量细节信息的损失。为了解决这个问题,本文设计了一个简单的补偿模块,它将原始图像I及其梯度∇I(如坎尼算子)编码misc.generalized_image_grad为引导信息。然后,通过使用一致表示模块(CRM)作为交叉注意或引导门,它可以保持输出特征和图像特征之间的一致性。通常,PA密集提示xpa可以由以下公式来表示:
xpa=Cm(Wg[i,∇i],x)(1)
其中,CRM是一致表示模块,并且Wg表示卷积运算。

这里密集提示通过原始图像I和特征梯度∇I补偿。首先cat两者,然后经过卷积,再通过交叉注意力或者引导门控机制(即文中的一致表示模块CRM)对齐密集提示x与卷积后的信息。

稀疏提示优化。PA-SAM进一步优化了稀疏提示特征,使详细信息能够流向稀疏提示,增强了模型对高质量图像分割的指导性。给定原始稀疏提示TIN,通过令牌到图像的交叉注意将它们转换为详细的稀疏提示Tpa:
TPA=注意(q=TIN,k=xpa,v=xpa)。(2)
这使得可以在保留原始的弱标记指导的同时优化稀疏提示表示。

稀疏提示优化的主要思路是使用稀疏提示作为查询(query),图像特征作为键(key)和值(value),通过注意力机制(attention)来更新稀疏提示,使其能够更好地指导分割任务。基于token-to-image跨注意力机制,将稀疏提示与图像特征结合。

此外,本文定义了不确定令牌UPA来识别具有挑战性的领域,并精炼令牌RPA来分割它们。这些令牌是在将掩码令牌与其各自的静态令牌连接起来之后通过MLP获得的。然后得到了三种不同的掩码:粗掩码MC、精化掩码MR和不确定掩码MU。用于监督PA-SAM的中间掩码Mpa如下:
在这里插入图片描述

掩码令牌是通过图像编码器和掩码编码器生成的特征表示,包含了图像中的初步分割信息。
静态令牌是一些固定的特征表示,用于辅助掩码令牌的处理。
生成不确定令牌和精炼令牌:通过一个多层感知机(MLP),将掩码令牌和静态令牌结合起来,生成不确定令牌和精炼令牌。
不确定令牌用于标识图像中不确定区域。精炼令牌用于对这些不确定区域进行进一步处理和优化。

困难点挖掘:在自适应细节增强的基础上,本文进一步提出将纹理细节的直接指导与稀疏提示结合起来。为此,提出了困难点挖掘,它利用稀疏提示优化中提到的MC、MR和MU来构造对挑战点进行采样的指导。以正点抽样为例,首先构造了初始抽样制导ϕ0。在训练阶段,为了确保采样点的多样性,将Gumbel-Softmax操作扩展到Gumbel top-k操作。在采样N个正点的情况下,具体过程如下:
在这里插入图片描述
其中γ∼Gumbel(0,1)、n∈N Sample和Gn表示当前样本的Softmax输出,定义如下:
在这里插入图片描述
将所有gn相加以获得g‘(g’=Pn∈N样本gn),其表示前k个softmax。然后,使用直通技巧获得最终的Gumbel top-k输出,如下所示:
在这里插入图片描述
其中sg是停止梯度运算符。
使用ˆg对PA密集提示xpa进行点采样,得到N个采样正点。同样,负点采样也使用Gumbel top-k操作,通过将ϕ0替换为Flatten(MU◦(MC−MR))来指导初始采样。这最终会产生新的点提示pSample。
通过稀疏提示优化和困难点挖掘,将PA稀疏提示TPA更新为:TPA=[ioupa,rpa,ppa,pSample,bpa],其中rpa表示精化的标记,pSample表示新的点提示。

硬点挖掘的核心思想是在训练过程中找到那些难以预测或误差较大的区域,并通过重点学习这些区域来提升模型的整体性能。1.首先通过模型生成不确定掩码(Uncertain Mask)和精炼掩码(Refined Mask),这些掩码帮助模型识别和处理图像中不确定和精细的区域。
2.使用不确定掩码和精炼掩码计算误差图(Error Map),误差图标识了模型在分割任务中预测误差较大的区域。误差图的计算公式如下:error_map=𝑀𝑈⋅∣𝑀𝑅−𝑀𝐶∣ 其中,𝑀𝐶是初步生成的粗略掩码(Coarse Mask)。
3.将误差图展平,以便于后续的采样操作。展平后,误差图变成一维张量,每个元素代表一个像素的误差。
Gumbel Top-k采样:使用Gumbel-Softmax或Gumbel Top-k操作,从展平后的误差图中采样那些误差较大的点(即“困难点”)。
4.在后续的训练过程中,对采样到的困难点给予更高的权重或更多的关注,以帮助模型更好地学习和处理这些复杂区域。

说明

代码写得好复杂。。
这篇文章通过image和image-encoder中的特征生成提示,入mask-decoder中。
生成提示的模块叫Prompt adapter。它将图像梯度和图像与密集提示通过交叉注意力对齐,使用token-to-image跨注意力机制将稀疏提示与图像特征结合。还定义了不确定token和精炼token辅助不确定区域生成。在稀疏提示上,还使用了困难点挖掘,计算出误差高的点,对密集提示进行点采样和Gumbel top-k操作生成新的点提示,以更新点提示。

代码太复杂了看得不是特别懂,可以结合代码阅读文章。

在encoder中:

early embedding:vit中在第一个全局注意力块(global attention block)之后提取早期层的特征
guiding embedding:图像梯度与图像cat后卷积
final embedding:image-encoder中输出结果
image record:图像信息 (有mask生成的边界框,所以它是有提示的)

mask decoder:
传入上面的信息和Prompt adapter和prompt encoder。
在decoder中,保留原来的结构,在transformer块的token to image计算中,再计算prompt adapter得到一系列结果。
prompt adapter会更新transformer块的atten、key 和 value。

计算网络输出的掩码与真实标签之间的损失(包括掩码损失和Dice损失),初步损失为掩码损失和Dice损失之和。
计算粗略掩码、精炼掩码和不确定性地图的损失(包括掩码损失和Dice损失),将最终掩码损失和Dice损失加到总损失中。
计算不确定性地图与真实标签之间的损失,将不确定性地图损失加到总损失中。

prompt adapter:
通过对 guiding_embedding 和 keys 进行乘法操作来生成新的指导嵌入;
使用交叉注意力机制将令牌和图像特征结合起来,更新查询张量;
通过连接静态嵌入令牌和查询张量的特定部分,并使用MLP生成不确定性令牌和精炼令牌;
计算不确定性掩码、精炼掩码和粗略掩码,并结合它们生成最终的掩码;
计算点的采样参考图:使用Gumbel-Softmax或Top-k操作来采样正点和负点,生成这些点的位置信息和内容,并更新查询张量和位置编码。

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

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

相关文章

揭秘“湖仓一体”——Flink+Paimon+StarRocks,打造实时分析新纪元

1.湖仓一体 数据湖仓是 Flink 流批一体发挥重要作用的场景,使用 Flink Paimon starRocks 来构建湖仓一体数据分析. Apache Paimon 是一个专为实时数据处理而设计的湖表格式,它最大的亮点是使用了 LSM Tree 技术。与 Hudi 相比,Paimon 在更新插入&…

中国星网时空信息集团春招Offer面经

本文介绍2024届春招中,中国卫星网络集团有限公司下属中国时空信息集团有限公司中,业务助理岗位1场面试的基本情况、提问问题等。 2024年04月投递了中国卫星网络集团有限公司下属中国时空信息集团有限公司中的业务助理岗位,所属部门为运营中心…

第9章 类

第9章 类 9.1 创建和使用类9.1.1 创建 Dog 类9.1.2 根据类创建实例 9.2 使用类和实例9.2.1 Car 类9.2.2 给属性指定默认值9.2.3 修改属性的值 9.3 继承9.3.1 子类的方法__init__()9.3.2 给子类定义属性和方法9.3.3 重写父类的方法9.3.4 将实例用作属性9.3.5 模拟实物 9.4 导入类…

短URL服务设计

引言 在营销系统里,为了增加系统的活跃用户数,经常会有各种各样的营销活动。这类活动几乎都是为了充分利用存量用户的价值,促使他们分享产品或App以达到触达到更多用户的目的。又或者是出于营销目的,群发优惠券触达短信这种场景。…

充电学习—3、Uevent机制和其在android层的实现

sysfs 是 Linux userspace 和 kernel 进行交互的一个媒介。通过 sysfs,userspace 可以主动去读写 kernel 的一些数据,同样的, kernel 也可以主动将一些“变化”告知给 userspace。也就是说,通过sysfs,userspace 和 ker…

欣九康诊疗系统助力诊所向数字化转型

数字化已经成为各行各业转型的重点方向,而为了不被时代所淘汰,医疗机构也势必要紧跟潮流,本人作为门诊部的负责人深知医疗机构要想实现数字化转型那么拥有一款便捷实用的医疗平台是必不可少的,近几年,随着国家大力支持…

Ubuntu 在线或离线安装docker

查看自己的ubuntu版本 在终端中执行以下命令: lsb_release -a 终端中的复制粘贴: ctrl shift c ctrl shifr v 在线安装docker(不需要外网): 命令行安装:Ubuntu Docker -- 从入门到实践 看完…

Ollama:本地部署大模型 + LobeChat:聊天界面 = 自己的ChatGPT

本地部署大模型 在本地部署大模型有多种方式,其中Ollama方式是最简单的,但是其也有一定的局限性,比如大模型没有其支持的GGUF二进制格式,就无法使用Ollama方式部署。 GGUF旨在实现快速加载和保存大语言模型,并易于阅读…

香港Web3时代:比特币可以成为「收益性资产」吗?

原文标题:《CAN BITCOIN BE A PRODUCTIVE ASSET?》撰文:Pascal Hgli编译:Chris,Techub News本文来源香港Web3媒体 Techub News 比特币正在经历一场大的变化,人们对其性质有不同的看法。有些人将其视为日常交易的货币…

ANSYS EMC解决方案与经典案例

EMC问题非常复杂,各行各业都会涉及,例如航空、航天、船舶、汽车、火车、高科技、物联网、消费电子。要考虑EMC的对象很多,包含整个系统、设备、PCB、线缆、电源、芯片封装。而且技术领域覆盖广,涉及高频问题、低频问题&#xff1b…

AI大模型系统从入门到精通,看这一篇就够了

前言 2023 年,人工智能发展达到新的里程碑。自 GPT 系列和 LLaMA 系列等大规模语言模型及应用问世以来,AI 内部技术突飞猛进,能力迅速超越以往。这些“超级 AI 助手”看似便捷强大,但其背后复杂原理及潜在影响值得深入思考。 这些…

充电学习—5、healthed 电池服务

1、healthed服务监听接收内核kernel的电池事件,然后上传数据给framware层的batterysevice,BatteryService计算电池的电量,显示,绘制动画等 android电池系统框架: 2、healthd服务入口:android/system/cor…

本地安装nightingale监控分析服务并发布公网详细流程

文章目录 前言1. Linux 部署Nightingale2. 本地访问测试3. Linux 安装cpolar4. 配置Nightingale公网访问地址5. 公网远程访问Nightingale管理界面6. 固定Nightingale公网地址 前言 本文主要介绍如何在本地Linux系统部署 Nightingale 夜莺监控并结合cpolar内网穿透工具实现远程…

怎么把两个音频合成一个?将两个音频合成一个的四种方法

怎么把两个音频合成一个?在当今数字化的时代,音频处理已经成为我们生活中不可或缺的一部分。有时候,我们会希望将两段音频合成为一个,无论是为了制作音乐混音、创作声音效果,还是为了编辑播客节目或视频配音。合成音频…

Qt第三方库QHotKey设置小键盘数字快捷键

一、看了一圈没有找到可以设置小键盘的情况。 这两天在研究快捷键的使用。发现qt的里的快捷键不是全局的。找了两个第三方快捷键QHotKey,还有一个QxtGlobalShortcut。但是这两个都不能设置小键盘的数字。 比如QKeySequenceEdit (Ctrl1) 这个…

springboot小型超市商品展销系统-计算机毕业设计源码01635

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…

onnx基本概念

onnx基本概念 参考 文章目录 onnx基本概念Input, Output, Node, Initializer, AttributesSerialization with protobuf元数据List of available operators and domains支持的类型Opset版本Subgraphs, tests and loopsExtensibilityFunctionsShape (and Type) Inferencetools O…

Fiddler抓包工具介绍

下载 下载:Web Debugging Proxy and Troubleshooting Tools|Fiddler 进去要填一个表 汉化版 百度网盘 请输入提取码 提取码:xq9t 下载过附件之后分别把两个文件 点开fiddler就ok了 配置https fiddler要想抓到https包(解密的),点击tools->options勾选三个对…

数据结构之“双向链表”

前言 前面我们介绍了单向链表,我们这里的双向链表是为了弥补单向链表只能从头节点开始单向遍历,插入和删除节点时需要更多的操作,因为无法直接访问前一个节点。 目录 前言 一、双向链表的结构 二、实现双向链表 2.1符号定义 2.2节点创…

半监督学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 介绍一、Self Training自训练1、介绍2、代码示例3、参数解释 二、Label Propagation(标签传播)1、介绍2、代码示例3、参数解释 三、Label Spread…