Paper Reading: RSPrompter,基于视觉基础模型的遥感实例分割提示学习

news2024/11/26 7:45:45

在这里插入图片描述

目录

  • 简介
  • 目标
  • 工作重点
  • 方法
  • 实验
  • 总结

简介

题目:《RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model 》,基于视觉基础模型的遥感实例分割提示学习

日期:2023.6.28

单位:北航、北京数字媒体重点实验室、虚拟现实技术与系统国家重点实验室、上海人工智能实验室

论文地址:https://arxiv.org/abs/2306.16269

GitHub:https://github.com/KyanChen/RSPrompter

作者:

陈科研

个人主页:https://kyanchen.github.io/
在这里插入图片描述
谷歌学术
在这里插入图片描述
其他作者


  • 摘要
    利用大量的训练数据(SA-1B), Meta AI Research提出的基础分段任意模型(SAM)显示出卓越的泛化和zero-shot能力。尽管如此,作为一种与类别无关的实例分割方法,SAM在很大程度上依赖于涉及点、框和粗粒度掩码的先前手动指导。此外,其在遥感图像分割任务上的性能还有待充分的探索和论证。在本文中,我们考虑设计一种基于SAM基础模型,结合语义分类信息的遥感图像实例自动分割方法。受prompt learning的启发,我们提出了一种学习生成合适的Prompt来作为 SAM 的输入。这使得SAM能够为遥感图像产生语义上可辨的分割结果,我们将其称为RSPrompter。我们还基于SAM社区的最新发展,为实例分割任务提出了几个正在进行的衍生工具,并将它们的性能与RSPrompter进行比较。在WHU building、NWPU VHR-10和SSDD数据集上的大量实验结果验证了我们提出的方法的有效性。

目标

  • 背景
    由于其交互式框架,SAM 需要提供先验的Prompt,例如点、框或掩模来表现为一种类别无关分割方法, 如下图(a)所示。显然,这些限制使 SAM 不适用于遥感图像的全自动解译。
    在这里插入图片描述

(a)描述了基于点的提示、基于框的提示、SAM的“一切”模式(对图像中的所有对象进行分割)和RSPrompter的实例分割结果。SAM执行与类别无关的实例分割,依赖于手动提供的先前提示。(b)给出了不同位置的点提示、两点提示和框提示的分割结果。提示的类型、位置和数量严重影响SAM的结果。

此外,我们观察到遥感图像场景中的复杂背景干扰和缺乏明确定义的物体边缘对 SAM 的分割能力构成重大挑战。SAM 很难实现对遥感图像目标的完整分割,其结果严重依赖于prompt类型、位置和数量。在大多数情况下,精细的手动prompt对于实现所需效果至关重要,如上图(b)所示。这表明 SAM 在应用于遥感图像的实例分割时存在相当大的限制。

  • 目标动机
    增强SAM在图像分割任务上的能力。每一组prompt能够得到一个的实例化mask,若能自动生成多个与类别相关的prompt,SAM 的解码器就能够产生带有类别标签的多个实例级掩码。由此,本文提出了RSPrompter,用于学习如何生成可以增强 SAM 框架能力prompt。
    其中,
    1. 类别相关的prompt来源:提取SAM ViT backbone的中间层的特征,输入一个轻量级的特征聚合器
    2. 生成的prompt的输出形式为prompt embeddings(不生成坐标,作者认为生成坐标会限制优化空间;还避免了从高维到低维再返回到高维特征的梯度流的障碍,即从高维图像特征到点坐标,然后再到位置编码。)

工作重点

  1. 一种自动化的实例分割方法同时融入语义信息
  2. 基于SAM的prompt工程
  3. 对SAM社区进行了研究,就SAM的实力分割任务提出了一些变体
  4. 实验方面,使用了3个遥感数据集进行了验证(在数据量、数据类别、模态上都有一些差别)

方法

在这里插入图片描述描述了SAM的示意图,它包括一个图像编码器、一个提示编码器和一个掩码解码器。SAM根据提供的输入提示生成相应的对象掩码。

除了本文提出的RSPrompter之外,还介绍了另外三种基于SAM的实例分割方法进行比较,如图3 (a)、(b)和©所示,以评估它们在遥感图像实例分割任务中的有效性,并为未来的研究提供启发。这些方法包括:外部实例分割头、对掩码类别进行分类、使用检测到的目标框,分别对应图3 (a)、(b)、( c )。在接下来的部分中,我们将分别将这些方法称为SAMseg、SAM-cls和SAM-det。
在这里插入图片描述

图中从左到右分别展示了SAM-seg、SAM-cls、SAM-det和RSPrompter作为将SAM应用于遥感图像实例分割任务的备选解决方案。(a)在SAM图像编码器后添加实例分割头。(b) SAM的“一切”模式为图像中的所有物体生成掩码,随后由分类器将其分类为特定类别。©首先由目标检测器产生目标边界框,然后将其作为SAM的先验提示输入,以获得相应的掩码。(d)本文提出的RSPrompter为即时分割掩码创建与类别相关的提示嵌入。图中雪花符号表示该部分的模型参数被冻结。

  • SAM产生mask的过程表达式:

在这里插入图片描述

  • SAM-seg

在这里插入图片描述

SAM-seg利用了 SAM 图像编码器存在的知识,同时保持编码器不变。它从编码器中提取中间层特征,使用卷积块进行特征融合,然后使用现有的实例分割(Mask R-CNN和 Mask2Former)执行实例分割任务。

  • SAM-cls

在这里插入图片描述

在 SAM-cls 中,首先利用 SAM 的“全图像”模式来分割图像中的所有潜在实例目标。其实现方法是在整个图像中均匀分布点并将每个点视为实例的prompt输入。在获得图像中所有实例掩码后,可以使用分类器为每个掩码分配标签。

为了便捷,本文直接使用轻量级的 ResNet18 来标记掩码。其次,可以利用预训练的 CLIP 模型,使 SAM-cls 能够在不进行额外训练的情况下运行以达到零样本的效果。

  • SAM-det

在这里插入图片描述

SAM-det 方法更加简单直接,已经被社区广泛采用。首先训练一个目标检测器来识别图像中所需的目标,然后将检测到的边界框作为prompt输入到 SAM 中。


  • RSPrompter

在这里插入图片描述

图像通过冻结的SAM图像编码器处理生成Fimg ,{Fi}是从backbone中抽取的一些富含语义信息的特征(中间层);{Fi}通过一个轻量级的特征聚合器Φaggregator,得到一个稠密的特征图Fagg ;Fagg输入prompter,生成多组prompt imbedding(Tj)以及对应的类别(cj);最后Tj输入mask decoder中生成实例mask

  • Feature Aggregator

在这里插入图片描述

如图所示,所提出的轻量级特征聚合器从大型ViT主干中提取语义信息并执行轻量级融合过程。

在这里插入图片描述

对ViT backbone中提取的各种中间特征层的语义特征Fi进行下采样:64×64×1280–>32×32×32;通过残差连接使信息可以流动;最后通过融合卷积ΦFusionConv得到稠密特征Fagg

两种不同类别的prompter

  • Anchor-based Prompter,锚点式

在这里插入图片描述

使用RPN head对稠密特征中的目标进行召回,生成一些proposal;proposal通过RoI Pooling生成一些视觉向量,再通过3个感知头:语义头、定位头和提示头。用于定于目标类别、建立生成的提示表示与目标实例掩码之间的匹配标准(IoU)、生成prompt imbedding

在这里插入图片描述

在生成prompt imbedding的过程中通过了一个sin变换,目的是为了对齐SAM的prompt encoder和生成的prompt imbedding的空间(原始的prompt encoder是一种高频的信号,而通过mlp生成的prompt是一种平稳的信号,使用sin函数将低频映射至高频,使之对齐两个表达空间)

Loss Function:该模型的损失包括RPN网络的二元分类损失和定位损失,语义头的分类损失,定位头的回归损失以及冻结的SAM掩码解码器的分割损失。总损失可以表示为:
在这里插入图片描述

  • Query-based Prompter,查询式

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

Loss Function:

训练过程主要涉及两个关键步骤:

(1)N个mask于k个ground-truth进行匹配(使用匈牙利匹配算法)

在这里插入图片描述

(2)监督训练(主要包括多类分类和二进制掩码分类)
在这里插入图片描述

实验

  • 数据集

    1. WHU building extraction dataset:1 class, RGB,5K, training
    2. NWPU VHR-10 dataset:10 clas, RGB,600 training
    3. SAR Ship Detection dataset:1 class, SAR,900 training

    三个公共的遥感实例分割数据集:WHU建筑提取数据集,NWPU VHR-10数据集和SSDD数据集。WHU数据集是单类建筑物目标提取分割,NWPU VHR-10是多类目标检测分割,SSDD是SAR船只目标检测分割。

  • 评估指标:mAP(box & mask)

  • Comparison with the SOTA: WHU
    在这里插入图片描述

该表给出了在whu数据集上提出的方法与其他最先进方法之间的比较。它在不同的阈值下显示框和掩码的AP(%)值

  • Comparison with the NWPU:
    在这里插入图片描述

  • Comparison with the SOTA: SSDD
    在这里插入图片描述

观察Tab1-3:(1)AP显著提升;(2)在小数据集上和不同领域(domain)有强泛化性;(3)基于anchor和query的prompter在不同数据集上有不同的表现(中、大型数据集上query好于anchor)


  • 消融实验

在这里插入图片描述
给出了各种图像编码器及其对应的参数数量,以及它们在nwpu数据集上的分割性能。

在这里插入图片描述
强调了将sam的主干中的不同层次特征合并到特征聚合器中对分割性能的影响。表示法[start: end: step]指定以步长间隔从开始到结束返回的特征映射的索引。

在这里插入图片描述
特征聚合器中下转和残差连接对分割性能的影响。第一行描述了最终采用的方法。Rs:降低空间维度;Rc:减小通道尺寸;电弧:添加残余连接;Pc:具有特征连接的并行架构。

在这里插入图片描述
显示了改变提示器中变压器编码器和解码器层数对分割性能的影响。

在这里插入图片描述突出显示了提示器中不同的查询数和提示嵌入数对分割性能的影响

在这里插入图片描述
展示了正弦正则化对提示器的影响,在掩码解码器中加入了额外的可训练组件,并采用了多尺度训练机制对分割性能的影响

总结

  • conclusion
    在本文中,我们介绍了RSPrompter,这是一种用于遥感图像实例分割的prompt learning方法,利用了SAM基础模型。RSPrompter的目标是学习如何为SAM生成prompt输入,使其能够自动获取语义实例级掩码。相比之下,原始的SAM需要额外手动制作prompt,并且是一种类别无关的分割方法。RSPrompter的设计理念不局限于SAM模型,也可以应用于其他基础模型。基于这一理念,我们设计了两种具体的实现方案:基于预设锚点的RSPrompter-anchor和基于查询和最优传输匹配的RSPrompter-query。此外,我们还调查并提出了SAM社区中针对此任务的各种方法和变体,并将它们与我们的prompt learning方法进行了比较。通过消融实验验证了RSPrompter中每个组件的有效性。同时,三个公共遥感数据集的实验结果表明,我们的方法优于其他最先进的实例分割技术,以及一些基于SAM的方法。

  • discussions

    1. decoder的计算量大:考虑重新设计head
    2. 基于query的prompter直接、轻量且在中大型数据集上表现更好,但是收敛速度慢,考虑优化
    3. 当数据集较小时,在大模型上上使用pompt learning会有比较好的表现

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

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

相关文章

接口测试学习

1、curl 命令 无参:curl -X POST -H"Authorization: abcdefghijklmn" https://xxx.xxxxx.com/xxxx 有参:curl -X POST -H"Authorization:abcdefghijklmn " -H"Content-Type:application/json" https://xxx.xxxxx.com/…

synchronized锁详解

本文主要是对synchronized使用各个情况,加解锁底层原理的讲解 一,重量级锁 对象头 讲重量级锁之前,先了解一下一个对象的构成,一个对象是由对象头和对象体组成的,本文主要讲对象头,对象体其实就是对象的…

核心实验21_BGP高级(了解)(配置略)_ENSP

项目场景: 核心实验21_BGP基础_ENSP 通过bgp实现省市互通。 实搭拓扑图: 具体操作: 其他基础配置略(接口地址,ospf) 1.BGP邻居建立: R1: [R1]bgp 200 [R1-bgp]peer 10.2.2.2 as-number 200 …

Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流

第13章 IO流 文章目录 一、File类的使用1.1、如何创建File类的实例1.2、常用方法1.2.1、File类的获取功能1.2.2、File类的重命名功能1.2.3、File类的判断功能1.2.4、File类的创建功能1.2.5、File类的删除功能 二、IO流原理及流的分类2.1、Java IO原理2.2、流的分类/体系结构 三…

LINUX内核启动流程-2

向32位模式转变,为main函数的调用做准备 1、关中断并将system移动到内存地址起始位置0x00000 1.1 关中断:将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0。 main函数中能够适应保护模式的中断服务体系被重建完毕才会打开中断,而那时候响应中断的服务程序将不再是…

【数据结构与算法】不就是数据结构

前言 嗨喽小伙伴们你们好呀,好久不见了,我已经好久没更新博文了!之前因为实习没有时间去写博文,现在已经回归校园了。我看了本学期的课程中有数据结构这门课程(这么课程特别重要),因为之前学过一点&#xf…

天宇微纳芯片测试软件如何测试电源芯片的持续电流?

持续电流(连续电流)是指元器件在工作状态下内部电流持续流动的状态,一般都是用于对元器件允许连续通过电流限制的一种描述。比如电源芯片允许的持续电流,就表示该芯片可连续通过的最大电流。 通过上面的描述我们可以知道&#xff…

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…

zabbix学习1--zabbix6.x单机

文章目录 1. 环境2. MYSQL8.02.1 单节点2.2 配置主从 3. 依赖组件4. zabbix-server5. agent5.1 yum5.2 编译 附录my.cnfJDK默认端口号 1. 环境 进入官网查看所需部署环境配置以及应用版本要求https://www.zabbix.com/documentation/current/zh/manual/installation/requiremen…

机器学习(11)---降维PCA

目录 一、概述1.1 维度1.2 sklearn中的降维算法 二、降维实现原理2.1 PCA与SVD2.2 降维实现2.3 降维过程 三、鸢尾花数据集降维3.1 高维数据的可视化3.2 探索降维后的数据3.3 累积可解释方差贡献率曲线 四、选n_components参数方法4.1 最大似然估计自选超参数4.2 按信息量占比选…

期权开户流程、交易时间和规则详解清晰易懂

本文将介绍期权开户流程、交易时间和规则详解清晰易懂则,包括期权的定义、期权交易的时间、期权交易的规则和期权交易的风险。本文的结论是,期权交易的时间和规则非常重要,应该遵守交易规则,并且要注意风险。本文来源:…

VB求组合数

VB求组合数 求组合数C(m,n)n!/(m!(n-m)!) m6,n10 Private Function fact(x As Integer) As LongDim i As Integer, f As Longf 1For i 1 To xf f * iNext ifact f End Function Private Sub Command1_Click()Dim m%, n%, u As Long, v As Long, w As Longm 6: n 10u fa…

Maven的介绍和使用

Maven的作用 项目构建 依赖管理:避免资源间版本冲突问题 统一开发结构:提供统一的项目结构 Maven的使用 下载完压缩包之后放在合适的目录下,其中apache-maven-3.8.8文件夹是安装的maven,下面的repository是本地仓库&#xff…

手写一个springboot starter,并使用starter

文章目录 前言一、starter的作用和意义二、自定义一个starter并使用1.starter本体问题: 2.创建另外一个项目,引入自定义的starter 总结spring-configuration-metadata.json 前言 你一定用过很多starter , 例如 spring-boot-starter,spring-boot-starter-test等等,那么如何实现…

微信群发超过5000人是怎么办到的?

你是否好奇,微信官方对于普通用户的群发限制是500人,但是有些大佬的微信账号怎么能群发突破这个限制,甚至超过5000人,其实他们有可能都用到了这一款软件: https://youwokeji.feishu.cn/docx/RpybdOWpzo9tlqxlMk7c0VZb…

从键盘任意输出一个整数n,若n不是素数,则计算并输出其所有因子(不包括1),否则输出该数为素数

#include<stdio.h> int main() {int i 0;int j 0;int n 0;int tag 0;//设置一个标志位&#xff0c;不为素数时令tag1&#xff1b;printf("输入一个数&#xff1a;");scanf("%d", &n);for (i 2; i < n; i){if (n % i 0){printf("该…

让小爱同学播放本地/远程歌曲的方案 | 小爱音箱播放本地歌曲

环境:HACS+Python 问题:小爱同学不能播放本地歌曲或者群晖中的歌曲 解决办法:HACS + Http Server 背景:冲绿砖是不可能的,DLNA也被阉割了,只能曲线救国了 解决思路:通过HACS监控小爱事件,推送媒体链接并随机播放,具体看下面的流程图 文章目录 1.安装HACS:2.安装HACS…

操作系统的体系结构

一、内核结构 操作系统内核也有两种类别&#xff1a;大内核结构、微内核结构 大内核结构&#xff1a;也叫宏内核/单内核。将操作系统的主要功能模块都作为操作系统内核。大内核结构包括进程管理、存储器管理、设备管理等功能&#xff08;第四层&#xff09;和时钟管理、中断处理…

SpringSecurity 初始化解析

文章目录 前言加载SpringSecurity配置解析配置SpringSecurity 解析器security:http 解析FilterChainProxy的注册过程创建 SpringSecurity 过滤器总结 前言 通过上文分析知道了SpringSecurity对一个请求的具体处理流程。不知道大家是否跟我一样都有几个疑问&#xff1a; Filte…