(CVPRW,2024)可学习的提示:遥感领域小样本语义分割
文章目录
- 相关资料
- 摘要
- 引言
- 方法
- 训练
- 基础类别
- 新类别
- 推理
相关资料
论文:Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain
代码:https://github.com/SteveImmanuel/OEM-Few-Shot-Learnable-Prompt
摘要
小样本分割是一项任务,它要求在只有少量标注示例的情况下,对图像中新类别的对象或区域进行分割。在一般设置中,任务扩展到同时分割基础类别和新类别。主要挑战在于如何训练模型,以便新增新类别不会损害基础类别的性能,这也被称为灾难性遗忘。为了缓解这个问题,我们使用SegGPT作为我们的基线模型,并在基础类别上对其进行训练。然后,我们使用独立的可学习提示来处理每个新类别的预测。为了处理通常在遥感领域出现的多种对象大小,我们执行基于补丁的预测。为了解决补丁边界处的不连续性问题,我们提出了一种通过重新构建问题为图像修复任务的补丁和拼接技术。在推理过程中,我们还利用图像相似性搜索在图像嵌入上进行提示选择和新类别过滤,以减少误报预测。根据我们的实验,我们提出的方法将简单微调的SegGPT在小样本OpenEarthMap数据集的验证集上的加权mIoU从15.96提升到35.08。
引言
目前解决广义小样本分割问题的战略主要围绕两种方法:1)单独预测每个新类别,然后使用融合技术合并结果;2)重新学习分类器,使其能够同时预测基础类别和新类别。我们的方法遵循第一种方法,但与现有方法不同,我们只使用基础类别的数据对模型进行一次训练。对于新类别的分割,我们仅通过仅在支持集上训练获得的每个类别的提示。
我们选择这样做的原因是由于具有强大泛化能力的新型基础模型的出现。**每个新类别的提示作为适应层,以处理特定新类别的特征。**因此,我们的方法能够处理任意数量的新类别,而不会降低基础类别的性能。这种方法既简单直接,又高度适用于现实生活场景。此外,这项挑战呈现了遥感中常见的特点,尤其是变化的对象大小。
方法
训练
我们遵循图像掩码建模(MIM)方法,目标是重建输入图像的掩蔽区域。为此,模型接收一对图像而不是单个图像。提示图像 X p X^p Xp 和目标图像 X t X^t Xt,以及它们对应的语义图 Y p Y^p Yp 和 Y t Y^t Yt 被提供,其中语义图的某些补丁被掩蔽,如图1所示。所有 X p , X t , Y p , X^p, X^t, Y^p, Xp,Xt,Yp, 和 Y t Y^t Yt 需要具有相同的维度 H × W × 3 H \times W \times 3 H×W×3。因此,语义图通过使用颜色映射 M : R → R 3 M : \mathbb{R} \rightarrow \mathbb{R}^3 M:R→R3 将每个类别标签映射到颜色来转换到图像空间。对于每个数据样本,颜色是随机的。目的是迫使模型学习上下文信息以重建掩蔽区域,而不是利用颜色。这在小样本设置中特别有用,因为它防止了对基础类别的过拟合。
基础类别
基础类别遵循标准的MIM方法进行训练。每个数据样本包括 X p , X t , Y p , X^p, X^t, Y^p, Xp,Xt,Yp, 和 Y t Y^t Yt。为了选择 X p X^p Xp 和 X t X^t Xt,我们最初生成训练集中所有可能的图像对组合。然后,我们根据每张图像中出现的类别采用不同的掩蔽策略。如果 X p X^p Xp 和 X t X^t Xt 至少包含一个不同类别,我们随机掩蔽 Y p Y^p Yp 和 Y t Y^t Yt 的 α \alpha α 部分补丁,如图1a所示。或者,如果 X p X^p Xp 和 X t X^t Xt 包含完全相同的类别,我们掩蔽整个 Y t Y^t Yt ,如图1b所示。如果 X p X^p Xp 和 X t X^t Xt 包含相同类别,那么给定 Y p Y^p Yp,模型应该能够预测整个 Y t Y^t Yt。相反,如果它们的类别不同,模型应该通过利用未掩蔽区域的上下文信息来重建掩蔽的补丁。
新类别
由于样本数量有限,新类别不能以与基础类别相同的方式进行训练。SegGPT通过将 k k k 个样本作为分割上下文输入,具有强大的小样本能力。然而,正如我们在表1中所示,这仍然不足以应对这一挑战。小样本设置中的主要障碍是如何使模型能够在只有少量样本的情况下预测新类别,同时保持对基础类别的性能。
推理
推理与训练中的半掩蔽策略类似。图像 X p X^p Xp 及其语义图 Y p Y^p Yp 作为提示提供上下文信息。然后,给定目标图像 X t X^t Xt,模型预测 Y ^ t \hat{Y}^t Y^t。我们生成一个固定的颜色映射 M M M 并使用它将 Y p Y^p Yp 转换到图像空间,以及它的逆 M − 1 M^{-1} M−1 将预测 Y ^ t \hat{Y}^t Y^t 转换回类别标签空间。 Y ^ t \hat{Y}^t Y^t 中第 i , j i,j i,j 个像素的类别可以按如下方式确定:
其中 c c c 在类别标签集合 C C C 上迭代, d d d 是余弦相似度距离。图像相似性搜索。提示 X p X^p Xp 和 Y p Y^p Yp 的质量极大地影响预测结果 Y ^ t \hat{Y}^t Y^t。通常, X ^ p \hat{X}^p X^p 和 X ^ t \hat{X}^t X^t 越相似,结果越好。此外,SegGPT可以结合多个提示以生成更准确的结果。我们利用CLIP-ViT [23]提取训练集中每个图像的嵌入。然后,我们使用余弦相似度检索与 X t X^t Xt 最相似的前 l l l 个图像,并将其用作提示。
补丁和拼接。在遥感领域,对象通常较小且分散在图像中。直接处理整个图像通常会导致对象未被检测到。因此,我们将图像分割成2x2个相等的不重叠补丁,并独立地对这些补丁进行预测。要获得整个图像的结果,我们可以直接组合这些补丁上的预测结果。然而,补丁边缘可能会有一些不连续性导致的伪影(见图4第3列)。为了缓解这个问题,我们执行额外的预测,预测相邻补丁重叠的中间区域,如图2所示。我们不是预测整个重叠区域,而是仅专注于预测中间部分,而其余区域则使用来自非重叠补丁的先前预测填充,以提供更多上下文。这个过程有效地将任务构建为图像修复任务,实现了不重叠补丁预测的无缝集成。
要获得包含基础类别和新类别的最终预测,我们首先对基础类别进行预测。对于每个新类别,我们不使用图像相似性搜索来获取相似的图像作为提示,因为提示本质上被 Z Z Z 替换。相反,我们计算目标图像 X t X^t Xt 与给定的 k k k 个样本之间的相似性,类似地使用CLIP-ViT和余弦相似度距离。如果相似性不超过某个阈值,我们就完全跳过处理目标图像对应的新类别。这个想法是,如果 X t X^t Xt 与给定的 k k k 个样本不相似,那么它不太可能包含新类别。这种方法有助于进一步减少新类别的误报预测。随后,我们简单地将新类别的预测叠加在基础类别预测之上。
相关文章:

(CVPRW,2024)可学习的提示:遥感领域小样本语义分割
文章目录 相关资料摘要引言方法训练基础类别新类别推理 相关资料 论文:Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 代码:https://github.com/SteveImmanuel/OEM-Few-Shot-Learnable-Prompt 摘要 小样本分割是一项…...

tinyrenderer-切线空间法线贴图
法线贴图 法线贴图分两种,一种是模型空间中的,一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz,与顶点坐标处于一个空间,图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz,是切线…...

C++的vector使用优化
我们在上一章说了如何使用这个vector动态数组,这章我们说说如何更好的使用它以及它是如何工作的。当你创建一个vector,然后使用push_back添加元素,当当前的vector的内存不够时,会从内存中的旧位置复制到内存中的新位置,…...

关于stm32的复用和重映射问题
目录 需求IO口的复用和重映射使用复用复用加重映射 总结参考资料 需求 一开始使用stm32c8t6,想实现pwm输出,但是原电路固定在芯片的引脚PB10和PB11上,查看了下引脚的功能,需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。…...
遍历数组1
package demo; import java.util.ArrayList; public class Arrilist { public static void main(String[] args) { ArrayList<String>listnew ArrayList<>(); list.add("汤神"); list.add("yyx"); list.add("hong go…...
Go语言 一些问题了解
一、读取文件数据,是阻塞还是非阻塞的? 分两种情况:常规读取文件数据,和网络IO读取数据 1. 常规读取文件数据: io.Reader 和 bufio.Reader 是阻塞进行的。 bufio.Reader 提供缓冲的读取操作,意味着数据是…...

C++ Primer 第五版 第15章 面向对象程序设计
面向对象程序设计基于三个基本概念:数据抽象、继承和动态绑定。 继承和动态绑定对编写程序有两方面的影响:一是我们可以更容易地定义与其他类相似但不完全相同的新类;二是在使用这些彼此相似的类编写程序时,我们可以在一定程度上…...

finebi或者finereport发邮件
我们二次开发中,如果想利用产品自带的发邮件的功能,来发送自己的邮件内容。 首先 决策系统中邮件相关信息要配置好之后: 这里配好了发件人,以及默认发件人后, private void sendEmail(String content,String subject)…...

基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 背景数据说明数据来源思考 正文数据预处理数据读取数据预览数据处理 相关性分析聚类分析数据处理确定聚类数建立k均值聚类模型 多元线性回…...

【数据结构】从前序与中序遍历,或中序与后序遍历序列,构造二叉树
欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 首先,根据先序遍历可以确定根节点E,再在中序遍历中通过E确定左树和右数 ; 设立inBegin和inEnd,通过这两个参数的游走,来进行子树的创建&a…...

ARM公司发展历程
Arm从1990年成立前开始,历经漫长岁月树立各项公司里程碑及产品成就,一步步成为全球最普及的运算平台。 添加图片注释,不超过 140 字(可选) Acorn 时期 1978年,Chris Curry和Hermann Hauser共同创立了Acorn…...

C# :IQueryable IEnumerable
文章目录 1. IEnumerable2. IQueryable3. LINQ to SQL4. IEnumerable & IQueryable4.1 Expression4.2 Provider 1. IEnumerable namespace System.Collections: public interface IEnumerable {public IEnumerator GetEnumerator (); }public interface IEnumerator {pubi…...
三、生成RPM包
文章目录 1、编译生成so、bin 通过此工程编译生成so\bin文件 2、将so\bin打包到rpm中 ###### 1.生成可执行文件、库文件 ######### cmake_minimum_required(VERSION 3.15)project(compute) set(target zls_bin) set(target2 libcompute.so) # 依赖的头文件 include_directori…...

单实例11.2.0.4迁移到11.2.0.4RAC_使用rman异机恢复
保命法则:先备份再操作,磁盘空间紧张无法备份就让满足,给自己留退路。 场景说明: 1.本文档的环境为同平台、不同版本(操作系统版本可以不同,数据库版本相同),源机器和目标机器部分…...
MySQL之查询性能优化(二)
查询性能优化 慢查询基础:优化数据访问 查询性能低下最基本的原因是访问的数据太多。某些查询可能不可避免地需要筛选大量数据,但这并不场景。大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化。对于低效的查询,我们发现通过下面两个步骤…...
The Best Toolkit 最好用的工具集
The Best Toolkit 工欲善其事,必先利其器,整理过往工作与生活中遇到的最好的工具软件 PDF合并等 PDF24 Tools PDF查看器 SumatraPDF 可以使用黑色来查看,相对不伤眼睛,也有电子书相关的阅读器 Kindle pdf裁边工具 briss 软件卸载…...
使用C#反射中的MAKEGENERICTYPE函数,来为泛型方法和泛型类指定(泛型的)类型
MakeGenericType 是一个在 C# 中用于创建开放类型的实例的方法。开放类型是一种未绑定类型参数的泛型类型。当你有一个泛型类型定义,并且想要用特定的类型实例化它时,你可以使用 MakeGenericType 方法。 public Type MakeGenericType (params Type[] ty…...

sql注入 (运用sqlmap解题)
注:level参数 使用–batch参数可指定payload测试复杂等级。共有五个级别,从1-5,默认值为1。等级越高,测试的payload越复杂,当使用默认等级注入不出来时,可以尝试使用–level来提高测试等级。 --level 参数决定了 sql…...
HTML5 Canvas 绘图教程二
在本教程中,我们将探讨 canvas 的高级用法,包括复杂的绘图 API、坐标系统和变换操作、平滑动画技术以及复杂应用和游戏开发的实践。 1. 绘图 API 高级方法 1.1 二次贝塞尔曲线 (quadraticCurveTo) 二次贝塞尔曲线需要两个点:一个控制点和一…...
Linux 命令 find 的深度解析与使用
Linux 命令 find 的深度解析与使用 在 Linux 系统中,find 命令是一个功能强大的工具,用于在文件系统中搜索文件或目录。无论是基于文件名、文件类型、文件大小、文件权限,还是基于文件的最后修改时间等,find 命令都能提供灵活的搜…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...