(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 命令都能提供灵活的搜…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
【Pandas】pandas DataFrame dropna
Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)…...
ABB馈线保护 REJ601 BD446NN1XG
配电网基本量程数字继电器 REJ601是一种专用馈线保护继电器,用于保护一次和二次配电网络中的公用事业和工业电力系统。该继电器在一个单元中提供了保护和监控功能的优化组合,具有同类产品中最佳的性能和可用性。 REJ601是一种专用馈线保护继电器…...
