(ISPRS,2023)RS-CLIP: 基于对比视觉-语言监督的zero-shot遥感场景分类

文章目录

  • 相关资料
  • 摘要
  • 引言
  • 方法
    • CLIP回顾
    • 伪标签生成
    • 课程学习策略
  • 实验
    • 数据集
    • 不同文本提示
    • 失败案例分析
    • 课程学习
    • zero-shot分类

相关资料

论文:RS-CLIP: Zero shot remote sensing scene classification via contrastive vision-language supervision

摘要

零样本遥感场景分类旨在解决未见类别的场景分类问题,在遥感领域吸引了大量研究关注。现有方法大多使用浅层网络进行视觉和语义特征学习,并且在零样本学习过程中,语义编码器网络通常是固定的,因此无法捕获强大的特征表示进行分类。
在这项工作中,我们介绍了一种基于对比视觉-语言监督的遥感场景分类的视觉-语言模型。我们的方法能够使用对比视觉-语言损失在嵌入空间中学习语义感知的视觉表示。通过在大规模图像-文本数据集上预训练,我们的基线方法在遥感场景上显示出良好的迁移能力。为了在零样本设置中启用模型训练,我们引入了一种伪标记技术,可以自动从未标记的数据中生成伪标记。开发了一种课程学习策略,通过多阶段模型微调来提高零样本遥感场景分类的性能。
我们在四个基准数据集上进行了实验,并展示了在零样本和少样本遥感场景分类上都取得了显著的性能提升。所提出的RS-CLIP方法在UCM-21、WHU-RS19、NWPU-RESISC45和AID-30数据集的新类别上分别达到了95.94%、95.97%、85.76%和87.52%的零样本分类准确率。我们的代码将在https://github.com/lx709/RS-CLIP上发布。

引言

然而,现有方法大多使用在 Wikipedia 语料库上预训练的 word2vec 模型来从类别名称或描述中提取语义嵌入。在零样本学习过程中,语义嵌入被预处理并固定,而不与要对齐的视觉特征进行适应。这可能导致提取的语义嵌入的表示能力不足,以及视觉和语义特征之间的相当大的差异。以前的方法提出的另一个挑战是,它们通常使用浅层网络来学习视觉和语义特征。
为了解决这些问题,我们在本文中引入了一个用于遥感场景理解的视觉-语言模型。近年来,视觉-语言模型在计算机视觉中得到了广泛探索,并且为各种视觉识别任务构建了众多基础模型,特别是对于零样本和少样本学习。与自监督视觉特征学习方法不同,视觉-语言模型可以学习强大的视觉特征表示,并直接将视觉表示与自然语言在整体框架中连接起来,从而在语义知识的引导下实现更好的零样本迁移。
为了使模型适应遥感领域,我们引入了一种伪标记技术,可以自动从未标记的数据集中生成伪标记,从而在遥感领域上对模型进行微调。此外,开发了一种课程学习策略,通过多阶段模型微调来提高零样本遥感场景分类的性能。

方法

CLIP回顾

CLIP模型使用语言监督学习视觉表示,如图1所示。给定一批 N N N图像-文本对,CLIP模型试图预测图像和文本输入之间的正确对应关系。为了实现这一点,CLIP模型使用视觉编码器网络 E i E_i Ei来学习视觉表示,使用语言编码器网络 E t E_t Et来学习文本表示。在训练期间,CLIP模型预测一个相似度矩阵 S ∈ R N × N S∈ \mathbb{R}^{N×N} SRN×N,其中每一行表示一个图像与所有 N N N文本匹配的概率。CLIP模型通过最大化 N N N正对的相似度得分和最小化 N 2 − N N^2-N N2N负对的相似度得分来优化。这是通过优化相似度矩阵上的对称交叉熵损失来实现的。
在这里插入图片描述

对于下游分类任务的 C C C个类别,{1, 2, … , C C C},CLIP使用预定义的提示,例如,“an image of a [CLASS]”,来构建文本输入 I I I,其中[CLASS]标记表示每个类别的名称/描述。然后,可以使用文本编码器网络生成所有类别的语义特征,即 F t = E t ( T ) ∈ R C × d F_t= E_t(T) \in \mathbb{R}^{C \times d} Ft=Et(T)RC×d,其中 d d d表示特征维度。给定一批输入图像表示为 I ∈ R B × H × W × 3 I \in \mathbb{R}^{B \times H \times W \times 3} IRB×H×W×3,其中 B B B H H H,和 W W W分别表示批量大小、图像高度和宽度,我们可以通过图像编码器网络生成它们的视觉特征,即 F i = E i ( I ) ∈ R B × d F_i = E_i(I) \in \mathbb{R}^{B \times d} Fi=Ei(I)RB×d。之后,可以通过以下方式获得分类概率矩阵:

[ P = \text{Softmax}(\frac{A^v A^l}{\sigma}) ]

其中 F i F_i Fi F t F_t Ft是L2归一化的,它们的矩阵乘法等同于计算它们的余弦相似度。在类别维度上应用Softmax层,得到一个概率矩阵表示为 P ∈ R B × C P \in \mathbb{R}^{B \times C} PRB×C P P P的每一行表示将一张图像分配给所有可能类别的概率。最终的分类预测可以通过选择概率最大的类别来获得:

[ \hat{y} = \text{argmax}(P) ]

伪标签生成

在这里插入图片描述

我们采用伪标记技术来启用模型在目标领域数据集上的训练,这在半监督学习中常用于自动从未标记数据生成伪样本。伪标记背后的直觉是,如果模型对某些样本给出了高置信度分数,我们可以使用预测的标签作为伪标签来重新训练模型并提高性能。
我们使用CLIP作为一个先验模型,为我们的零样本分类任务生成遥感图像的伪标签。我们遵循(Huang等人,2022)为每个类别选择相同数量的样本作为伪标签,这在在选择伪样本时防止了类别压倒性问题。
具体来说,对于每个类别 c c c,我们从概率矩阵中的方程(1)中选择置信度分数最高的top-K样本,可以表示为:
在这里插入图片描述
其中 P c P_c Pc表示概率矩阵 P P P的第 c c c列。通过所有可能类别的伪样本的并集,可以获得整体的伪标记样本,计算为:
在这里插入图片描述

课程学习策略

在这里插入图片描述

我们采用课程学习策略,在多轮中逐步选择更多样本进行模型训练。在早期的几轮中,模型对目标数据集的调整较少,因此,只有少数可信样本被选择作为伪数据进行训练。在后面的几轮中,模型对目标数据集的分类变得更有信心,从而可以选择更多未标记的样本作为伪标签。更具体地说,在迭代 r r r时,我们选择 K r K_r Kr样本作为伪标签,其中 K r K_r Kr是根据伪精度确定的。一般我们设 K r ≥ K r − 1 K_r≥K_{r-1} KrKr1,表示后期会选择更多的伪样本。.

实验

数据集

在这里插入图片描述

不同文本提示

在这里插入图片描述

失败案例分析

在这里插入图片描述

课程学习

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

zero-shot分类

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

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

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

相关文章

【GeoServer系列】——安装与发布shapefile数据

GeoServer是一个基于java的服务器,它允许用户查看和编辑地理空间数据。使用OGC制定的开放标准,GeoServer在地图创建和数据共享方面具有极大的灵活性。 功能概述: Open and Share Your Spatial Data GeoServer允许您向世界显示您的空间信息。G…

【STL】C++ queue队列(包含优先级队列) 基本使用

目录 一 queue 1 常见构造 1 空容器构造函数 2. 使用指定容器构造 3 拷贝构造函数 2 empty 3 size 4 front && back 5 push && pop 6 emplace 7 swap 二 优先级队列( priority_queue) 1 常见构造 2 其他操作 3 大堆和小堆 1. 大小堆切换 2 自…

scGPT实验解读

本篇内容为发表在Nature Methods上的scGPT的部分实验内容 来自:scGPT: toward building a foundation model for single-cell multi-omics using generative AI, Nature Methods, 2024 目录 scGPT揭示特定细胞状态的基因网络缩放法则和迁移学习中的上下文效应 scGP…

寄存器、缓存、内存(虚拟、物理地址)、DDR、RAM的关系

寄存器、缓存、内存、DDR、RAM的关系 1. 主要概念内部存储器:2.1 寄存器,register2.2 主存储器,内存,memory2.3 缓存,高速缓冲存储器,cache 外部存储器2.4 快闪存储器,闪存,flash Me…

AI图书推荐:使用GPT-4和ChatGPT开发AI应用APP

这本书是面向想要学习如何使用大型语言模型构建应用程序的 Python 开发人员的全面指南。作者 Olivier Caelen 和 Marie-Alice Blete 涵盖了 GPT-4 和 ChatGPT 的主要特征和好处,并解释了它们的工作原理。您还将获得使用 GPT-4 和 ChatGPT Python 库开发应用程序的逐…

多台相同IP产品如何组网?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Unity协程详解

什么是协程 协程,即Coroutine(协同程序),就是开启一段和主程序异步执行的逻辑处理,什么是异步执行,异步执行是指程序的执行并不是按照从上往下执行。如果我们学过c语言,我们应该知道&#xff0…

【零基础AI】Windows下最易懂的Cuda+cudnn+PyTorch配置教程

【零基础AI】最易懂的Windows下CUDAcuDNNPyTorch配置教程 本文面向零基础的AI初学者以及迁移DL开发环境的相关人员,旨在通过最直观、最简洁的一条龙式图文配置教程,最大程度地降低学习门槛与迁移环境的成本。在配置工作开始之前,请务必检查确…

U-boot、linux内核、根文件系统移植以及程序

终于这几天把这个移植的流程过了一遍,所以特此回来总结。 U-boot移植 首先是U-boot移植。Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Li…

算法-堆结构和堆排序

文章目录 本节大纲1. 堆结构2. 堆排序本节的代码实现合集 本节大纲 1. 堆结构 堆结构是为集合类里面的优先级队列来服务的 优先级队列其实就是顺序存储的二叉树结构, 我们的底层的源码里面是没有链式存储的二叉树的,二叉树的实现的细节是通过我们的数组来模拟实现的 底层的实现…

TFTP服务器

软件,客户端,服务器。是简单的文件传输文件。 1.TFTP服务器介绍 是简单的文件传输协议,是tcp/IP协议的一个用来在客户端与服务器之间进行简单文件传输的协议。端口号为69。每个服务器都有自己都端口号。 2.TFTP文件传输特点 3. 二:TFTP环境…

c++异常处理exception

// c中的异常处理 // 1.throw : 专门用于抛出异常,做出提示 // 2.try : 尝试运行可能会异常的代码 // 3.catch : 用于接收前面跑出来的异常并进行解决// 执行循序为: // try // { // throw ...; // 执行的代码中必须直接或者…

VRTK4教程 二:基本追踪

文章目录 untiyXR和UnityXRPluginFramwork使用方法: TrackedAlias使用方法使用技巧 untiyXR和UnityXRPluginFramwork 这两个用于跟踪头盔位置,其中UnityXR使用的是旧版API,另一个是新版API,两个我我们选一个即可 使用方法&#…

6.3 Go 结构体(Struct)

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【计算机毕设】SpringBoot校园资料分享平台的设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的校园资料分享平台,以满足学生在学习过程中对资料分享和获取的需求。具体目标包括&#xff1a…

Java学习笔记 集合的使用

在实际的项目中开发过程中,会有很多的对象,如何高效、方便的管理这些对象,是影响程序性能与可维护性的重要环节。在Java语言中为这个问题提供了一套完美的解决方案,也就是接下来要介绍的集合框架。 1.1 集合框架的结构 从Collect…

都说美国去工业化了,那美国人都做什么工作啊?

美国,这个全球经济的重要参与者,经历了一场深刻的变革——去工业化。这一过程意味着,曾经以制造业为荣的美国,逐渐将重心转移到了其他领域。那么,美国人都做什么工作呢?让我们走近这位“经济体巨人”&#…

MySql 查询缓存

前言 MySQL的查询缓存(Query Cache)是一个在内存中存储SELECT语句及其结果集的机制,目的是避免对相同的查询进行重复的解析、编译和执行,从而提高数据库性能。 Mysql 结构图如下: 查询缓存的工作流程大致如下&#…

Java中连接Mongodb进行操作

文章目录 1.引入Java驱动依赖2.快速开始2.1 先在monsh连接建立collection2.2 java中快速开始2.3 Insert a Document2.4 Update a Document2.5 Find a Document2.6 Delete a Document 1.引入Java驱动依赖 注意&#xff1a;启动服务的时候需要加ip绑定 需要引入依赖 <dependen…

【魅力网页的背后】:CSS基础魔法,从零打造视觉盛宴

文章目录 &#x1f680;一、css基础知识⭐1. 认识css &#x1f308;二、选择器初级❤️id与class命名 &#x1f680;一、css基础知识 ⭐1. 认识css 概念 CSS(英文全称&#xff1a;Cascading Style Sheets)&#xff0c;层叠样式表。它是网页的装饰者&#xff0c;用来修饰各标签…