(ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类

文章目录

  • 相关论文
  • 摘要
  • 引言
    • 类别嵌入局限性——问题1
    • 普通ZSL模型局限性——问题2
    • 自动属性注释过程——对应问题1
    • 深度语义-视觉对齐(DSVA)模型——对应问题2
  • 基于遥感多模态相似性的自动属性标注
    • 属性词汇表构造
    • 使用CLIP模型自动标注属性
    • 对CLIP模型进行训练和微调
  • 用于zero-shot学习的深度语义-视觉对齐模型
    • 问题定义
    • Vision transformer
    • Visual-attribute mapping module视觉属性映射模块
    • Attention concentrating (AC) module注意力聚焦模块
    • 训练损失

相关论文

(ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
(CVPR,2022)ZegFormer:基于解耦的zero-shot语义分割
(CVPR,2023)PADing:通用zero-shot分割的基元生成与语义对齐
(CVPR,2023)ZegCLIP: 使用CLIP进行单阶段零样本语义分割
(NeurIPS,2019)【代码复现】Zero-Shot Semantic Segmentation零样本语义分割

摘要

深度神经网络在遥感图像分类方面取得了令人期待的进展,其中训练过程需要大量的每个类别样本。然而,考虑到遥感目标数据库的动态增长,为每个遥感类别注释标签是耗时且不切实际的。零样本学习(ZSL)允许识别在训练过程中未见过的新类别,为上述问题提供了有希望的解决方案。

然而,先前的ZSL模型主要依赖于手动标注的属性从语言模型中提取的词嵌入来将知识从已见类别转移到新类别。这些类别嵌入可能在视觉上不可检测,而且标注过程耗时且劳动密集。此外,先驱性的ZSL模型使用在ImageNet上预训练的卷积神经网络,这些网络主要关注图像中出现的主要对象,忽视了在遥感场景分类中也很重要的背景上下文

为了解决上述问题,我们提出了自动收集可视检测属性的方法。我们通过描述属性与图像之间的语义-视觉相似性来为每个类别预测属性。通过这种方式,属性注释过程由机器自动完成,而不是像其他方法中那样由人工完成。此外,我们提出了一种深度语义-视觉对齐(DSVA)模型,利用Transformer中的自注意机制将局部图像区域关联起来,整合背景上下文信息进行预测。DSVA模型进一步利用属性注意力图来关注在ZSL中进行知识转移所必需的信息丰富的图像区域,并将视觉图像映射到属性空间进行ZSL分类。

通过大量实验证明,我们的模型在一个具有挑战性的大规模遥感场景分类基准测试中明显优于其他最先进的模型。此外,我们定性验证了由我们的网络注释的属性既具有类别区分性又具有语义相关性,这有利于零样本知识转移。

引言

在这里插入图片描述
通过学习每个已见类别的语义知识所展示的视觉属性(例如,“水”,“道路”和“绿色”),该模型能够识别由该语义知识组成的未见类别,例如公园。样本学习的两个关键因素是类别嵌入ZSL模型

类别嵌入局限性——问题1

以往改进类别嵌入的尝试有两个方面,手动标注的属性来自预训练语言模型的语义嵌入。属性是物体的特征属性,既可人类解释,又能在不同类别之间进行区分。因此,描述每个类别特征的属性嵌入已成为ZSL中最常用和最强大的类别嵌入。手动标注属性通常是一个两步过程,耗时且劳动密集
一些先驱者通过用从预训练语言模型(例如word2vec、glove和BERT)中提取的语义类别嵌入或为RS场景构建的知识图中提取的语义嵌入替换属性来解决这个问题。然而,这些嵌入的每个维度都不包含具体的语义属性,也不能被视觉检测到,因此导致ZSL性能较差

普通ZSL模型局限性——问题2

普通ZSL模型在RS场景分类任务中的泛化能力有限,这是由于RS场景具有以下特点:

  • 与通常关注局部对象的普通光学图像不同,全局上下文和局部对象之间的交互信息都很重要。
  • RS图像具有高的类间差异和类内相似性,因此要求ZSL模型集中于类内区分特征和类间共享特征。
  • CNN网络天然具有较小的感受野,其设计侧重于局部对象特征,无法充分相关全局和局部信息以用于大规模RS场景。

自动属性注释过程——对应问题1

使用CLIP模型预测遥感多模态属性(RSMM-Attributes)用于遥感场景分类。
我们首先构建一个包含具有丰富语义和视觉信息的属性的属性词汇,用于RS场景分类。为了确保每个类别的属性嵌入在视觉上可检测,属性标注过程通过计算属性和示例图像之间的语义-视觉相似性来完成。CLIP模型是使用包含图像和相应文本描述的大规模RS数据集进行预训练的,因此能够将语义文本和视觉RS图像关联在一个共同的空间中。通过这种方式,用于标注的劳动密集型过程被自动模型取代,大大减少了时间消耗。

深度语义-视觉对齐(DSVA)模型——对应问题2

使用RSMM-Attributes在已见和未见类别之间转移知识,并在考虑图像的局部细节和全局上下文的情况下执行ZSL。我们采用了一个视觉Transformer,它使用局部图像区域之间的长程交互来提取图像表示。
为了将语义属性与视觉特征关联起来,我们学习编码每个属性的视觉特性的属性原型。同时,通过计算原型与视觉图像特征之间的相似性,生成属性注意力图,并通过计算图像-属性相似性准确地将图像映射到属性空间。我们进一步提出了一个注意力集中模块,以关注信息丰富的属性区域。

基于遥感多模态相似性的自动属性标注

在这里插入图片描述

我们提出采用CLIP模型来将语义和视觉空间联系起来,为每个遥感场景类别注释遥感多模态属性(RSMM-Attribute)。
给定一个遥感场景类别 y y y和一个属性 a ∈ A a∈A aA ,我们的目标是为该类别注释属性值,表示属性𝑎在类别 y y y中出现的可能性,即 r a ( y ) ∈ R r_a(y) ∈ ℝ ra(y)R。利用CLIP模型,我们可以衡量属性 a a a和类别 y y y之间的关联强度 r a ( y ) r_a(y) ra(y)。最终,我们将获得一个包含每个类别的所有属性值的类别嵌入,表示为 r A ( y ) ∈ R N a r_A(y)∈ ℝ^{N_a} rA(y)RNa,其中 N a N_a Na是属性词汇表的大小。

属性词汇表构造

为了发现具有丰富语义和视觉信息的属性,我们考虑了以下六类属性
在这里插入图片描述

  1. "颜色"组包括场景中出现的颜色(例如绿色、棕色)。
  2. "物体存在"组列出了可能出现的物体(例如树木、土壤)。
  3. "材料"组描述构成场景的材料(例如水泥、金属)。
  4. "纹理"组描述每个类别的纹理和图案(例如对称、平坦)。
  5. "形状"组指示每个场景中显示的主要形状(例如圆形、矩形)。
  6. "功能"组指示每个类别的社会经济功能(例如工业、农业)。

然后,我们遍历与遥感场景相关的所有属性和对象,以填充每个组,并最终获得一个带有二进制的 a a a属性的属性词汇表 N a N_a Na

使用CLIP模型自动标注属性

如图3(右侧)所示,我们采用的CLIP模型由语义编码器 E t ( ⋅ ) E_t(⋅) Et()和视觉编码器 E v ( ⋅ ) E_v(⋅) Ev()组成,将属性名称和探测图像映射到一个共享的语义-视觉空间中。然后,通过相似度度量函数 f s i m f_{sim} fsim计算实值置信度 r a ( y ) r_a(y) ra(y),如下所示:
在这里插入图片描述
属性值 r a ( y ) r_a(y) ra(y)表示属性 a a a在类别 y y y中出现的可能性。按照CLIP的方法,我们将单个属性名称(例如,“狭窄道路”)转化为包含属性的句子(例如,“这张照片包含狭窄道路”),作为 E t ( ⋅ ) E_t(⋅) Et()的输入。相似度度量采用点积进行计算:
在这里插入图片描述
通过这种方式,我们可以很容易地代替人工将每个属性和相应的类别关联起来,并预测每个类的类语义属性为 r A ( y ) ∈ R N a r_A(y)∈ ℝ^{N_a} rA(y)RNa。我们将CLIP模型标注的属性表示为遥感多模态属性(RSMM-Attribute)

对CLIP模型进行训练和微调

CLIP采用对比学习的范式,优化正样本图像-文本对(即 x i x_i xi t i t_i ti,其中𝑖 ∈ {1, 2, …, 𝐵})之间的余弦相似度为1,而负样本图像-文本对(即 x i x_i xi t j t_j tj,其中𝑖 ≠ 𝑗)之间的相似度优化为接近0。
在这里插入图片描述
在这里插入图片描述
我们使用RSICD数据集中的遥感场景图像和相应描述对CLIP模型进行微调。微调过程如图3(左侧)所示,其中一批图像和相应的文本描述使用视觉编码器 E v ( ⋅ ) E_v(⋅) Ev()和语义编码器 E t ( ⋅ ) E_t(⋅) Et()编码到一个共同的空间中。然后,通过优化两个InfoNCE损失函数 L N C E L_{NCE} LNCE的和来训练编码器。

用于zero-shot学习的深度语义-视觉对齐模型

在这里插入图片描述

如图4所示,DSVA模型利用一种带有自注意力层的Transformer来提取图像表示,然后使用Visual-Attribute Mapping (VAM)模块将表示映射到属性空间,并根据属性相似性为每个图像预测类别标签。此外,我们提出了Attention Concentration (AC)模块,通过属性相关的注意力来集中关注信息丰富的图像区域。

问题定义

训练集 S = { x , y , r A ( y ) ∣ x ∈ X , y ∈ Y s } S=\{x,y,r_A(y)|x \in X,y \in Y^s\} S={x,y,rA(y)xX,yYs}

  • x x x:来自RGB图像空间 X X X遥感图像
  • y y y:来自可见类别 Y s Y^s Ys的标签
  • r A ( y ) r_A(y) rA(y):上一步获得的属性嵌入向量 r A ( y ) ∈ R N a r_A(y)∈ ℝ^{N_a} rA(y)RNa

未见类别标签用 Y u Y^u Yu表示,未见类别的属性嵌入向量 { r A ( y ) ∣ y ∈ Y u } \{r_A(y)|y\in Y^u\} {rA(y)yYu}也是已知的。
zero-shot学习任务旨在预测来自未见类别的图像的标签,即 X → Y u X\rightarrow Y^u XYu
广义zero-shot学习(GZSL)旨在对来自可见和未见类别的图像进行分类,即 X → Y u ∪ Y s X\rightarrow Y^u \cup Y^s XYuYs

Vision transformer

在这里插入图片描述
输入图像 x ∈ R H × W × C x ∈ℝ^{H×W×C} xRH×W×C,其中 H , W , C H,W,C H,W,C分别表示高度、宽度和通道数,被重塑为图像块的序列 { x ~ n } n = 1 N \{\tilde{x}_n\}^N_{n=1} {x~n}n=1N,且 x ~ n ∈ R H k × W k × C \tilde{x}_n\in ℝ^{\frac{H}{k}×\frac{W}{k}×C} x~nRkH×kW×C k k k是图像块的行数(或列数), N = k × k N=k×k N=k×k
为了提取图像表示,我们首先学习一个线性嵌入层 f 0 ( ⋅ ) f_0(⋅) f0(),将图像块映射到𝐷维度的块嵌入 Z 0 ∈ R N × D Z^0 ∈ℝ^{N×D} Z0RN×D
在这里插入图片描述
然后,图像块嵌入将被传递到Transformer编码器,它由 L L L层的多头自注意力(MHSA)子网络和多层感知器(MLP)子网络组成:
在这里插入图片描述
其中, l = 1 , 2 , . . . , L l=1,2,...,L l=1,2,...,L表示层的索引,每个潜在嵌入 Z 0 , Z 1 , . . . , Z L Z^0,Z^1,...,Z^L Z0,Z1,...,ZL的形状为 R N × D ℝ^{N×D} RN×D。其中,第一个输入向量 Z 0 Z^0 Z0来自以下公式。
在这里插入图片描述
对于每个子网络,我们采用残差连接并进行层归一化(LN)操作。

在每个多头自注意力模块中,对于归一化的输入向量 L N ( Z l − 1 ) ∈ R N × D LN(Z^{l-1})\inℝ^{N×D} LN(Zl1)RN×D(为简单起见,我们使用 Z Z Z表示),我们计算输入序列中每个元素的加权和,其中权重基于序列中两个元素之间的相似度。输入序列 Z ∈ R N × D Z\in ℝ^{N×D} ZRN×D通过线性层映射为三个张量,即查询(Q)、键(K)和值(V)。随后计算自注意力:
在这里插入图片描述
在这里插入图片描述
输出多头注意力:
在这里插入图片描述

Visual-attribute mapping module视觉属性映射模块

在这里插入图片描述
我们构建了一个视觉属性映射层,用于学习 N a N_a Na个原型向量 p 1 , p 2 , . . . P N a p_1,p_2,...P_{N_a} p1,p2,...PNa。第 i i i个原型向量 p i ∈ R D p_i\in ℝ^{D} piRD编码了第 i i i个属性 a a a的视觉线索。需要注意的是,原型向量是可训练的向量

由于原型向量应该编码每个属性的视觉特性,我们使用点积作为属性原型向量 p i p_i pi和每个局部图像嵌入 z n z_n zn之间的相似度,其中 z n z_n zn表示图像区域 x ~ n \tilde{x}_n x~n包含特定属性的可能性:
在这里插入图片描述
我们将第 i i i个属性与 N = k × k N=k×k N=k×k个局部图像嵌入之间的相似性值重新整形,形成一个注意力图 M i ∈ R k × k M_i\in ℝ^{k×k} MiRk×k,表示属性 a i a_i ai在图像 x x x中出现的可能性:
在这里插入图片描述
然后,我们通过最大化每个图像patch与属性原型之间的相似性来预测属性值得分:
在这里插入图片描述
其中 f a ( x ) ∈ R f_a(x) ∈ℝ fa(x)R是预测的属性值。总体而言,图像 x x x的预测属性嵌入是 f A ( x ) f_A(x) fA(x)。为了将图像分配到特定的类别,我们计算预测属性嵌入与所有训练类别中的真实属性嵌入之间的兼容性得分,如下所示:
在这里插入图片描述

Attention concentrating (AC) module注意力聚焦模块

在这里插入图片描述
注意力图 M i M_i Mi指示与属性原型具有相似特性的图像区域,因此利用这些注意力图有助于模型定位属性信息并在类别之间传递属性知识。为此,我们提出了一个注意力聚焦模块,用于裁剪和突出属性信息丰富的图像区域,并再次使用裁剪后的图 x ^ \hat{x} x^来训练DSVA网络。

给定从VAM模块生成的 N a N_a Na个属性注意力图 { M i } i = 1 N a \{M_i\}^{N_a}_{i=1} {Mi}i=1Na,目标是集中关注与属性相关的图像区域并裁剪原始图像 x x x。我们首先对注意力图求和,以得到平均注意力:
在这里插入图片描述
在这里插入图片描述
α \alpha α β \beta β为平均注意力的空间坐标。生成一个浓度掩模,其大小为 k × k k×k k×k,以突出显示信息图像区域:
在这里插入图片描述
其中,属性注意力高于平均 m ˉ \bar{m} mˉ的区域被标记为1,属性注意力低 m ˉ \bar{m} mˉ的区域被标记为0。然后我们使用最小的边界框来包含 C C C中所有非零值,将原始图像 x x x裁剪成裁剪图 x ^ \hat{x} x^,并将裁剪后的图像再次输入到视觉转换器和VAM模块中。我们在每个批次中迭代运行VAM模块和AC模块,其中AC模块将帮助网络聚焦于指出不同类别之间区分性细节的有信息属性区域

训练损失

  1. 语义兼容性损失
    使用交叉熵损失,鼓励图像与其对应的属性标签具有较高的兼容性得分,如下所示:
    在这里插入图片描述
    在这里插入图片描述
  2. 语义回归损失
    为了促进视觉-语义映射模块的训练,我们进一步将属性预测视为回归问题,并最小化预测属性与真实属性嵌入之间的均方误差(Mean Square Error,MSE),如下所示:
    在这里插入图片描述
    在这里插入图片描述

总损失如下:
在这里插入图片描述

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

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

相关文章

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--初尝php

初尝php 打开你下载的wordpress文件夹&#xff0c;如果你用的xampp那它就在xampp安装的文件夹–htdocs文件夹–你可以新建一个test文件夹–新建一个test.php文件 <html><head><title>First attempt at PHP</title></head><body><?ph…

52岁TVB前绿叶退隐8年转做司仪晒流利英文。

现年52岁的陈霁平&#xff08;Maria&#xff09;在1995年参选港姐后加入TVB&#xff0c;离巢后转型做专业司仪&#xff0c;精通多国语言的她更成为司仪界的抢手货。 日前陈霁平分享了担任活动主持的近照&#xff0c;身穿高衩晚装的她身形Fit爆&#xff0c;皮肤依然白滑紧致&…

2024最新在线工具箱/ 站长IT工具箱/网站系统源码下载

2024最新在线工具箱/ 站长IT工具箱/网站系统源码下载- 更多详情及下载地址请访问https://a5.org.cn/a5_ziyuan/39525.html 转载请注明出处!

前端与后端协同:实现Excel导入导出功能

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

详解 Redis 在 Ubuntu 系统上的安装

在 Ubuntu 20.04 安装 Redis 1. 先切换到 root 用户 在 Ubuntu 20.04 中&#xff0c;可以通过以下步骤切换到 root 用户&#xff1a; 输入以下命令&#xff0c;以 root 用户身份登录&#xff1a; sudo su -按回车键&#xff0c;并输入当前用户的密码&#xff08;即具有 sudo…

解决nginx代理后,前端拿不到后端自定义的header

先说结论&#xff0c;因为前端和nginx对接&#xff0c;所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回&#xff0c;前后端本地联调没有问题 response.s…

Java_自定义实体类的列表List<T>调用remove()失败讲解

示例1 前提&#xff1a; 新建一个主类Demo1。 需求&#xff1a; 在一个列表中有三条String的数据&#xff0c;想要使用remove(Object o)删掉其中一条。 结果&#xff1a; remove(Object o)成功把数据删掉。 示例2 前提&#xff1a; 新建一个自定义实体类DataExample和一个主…

ObjectiveC-10-OOP面向对象程序设计-分类/类别

类别(Category)是OjectiveC的一个特性&#xff0c;主要目的是让开发者可以以模块的形式向类添加方法&#xff08;扩展&#xff09;&#xff0c;创建标准化的方法列表供给其他人实现。 有些文档也会翻译成类别&#xff0c;其实是一个意思。 概述 语法说明 类别提供了一个简单的…

Vue3从入门到实战:掌握状态管理库pinia(下部分)

1.storeToRefs 在Count.vue文件中 显的冗余了&#xff0c;如何更加优雅简化代码。用storeToRefs 补充&#xff1a; 为什么不用ToRefs呢&#xff1f; 使用的话会将所有数据都用ref引用包裹&#xff0c;其实方法等是没必要包裹的&#xff0c;具有一定风险 2.getters的使用 …

使用Arcpy进行数据批处理-批量裁剪

时空大数据使我们面临前所未有的机遇和挑战&#xff0c;尤其在地学、遥感或空间技术等专业领域&#xff0c;无疑是一个全新的时代。 伴随着时空大数据的到来&#xff0c;海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据&#xff08;主要指空间数据&#x…

选择企业邮箱,扬帆迈向商务新纪元!

企业邮箱和个人邮箱不同&#xff0c;它的邮箱后缀是企业自己的域名。企业邮箱供应商一般都提供手机app、桌面端、web浏览器访问等邮箱使用途径。那么什么是企业邮箱&#xff1f;如何选择合适的企业邮箱&#xff1f;好用的企业邮箱应具备无缝迁移、协作、多邮箱管理等功能。 企…

后端开发框架Spring Boot快速入门

写在前面 推荐将本文与Spring Boot 相关知识和工具类一文结合起来看&#xff0c;本文为主&#xff0c;上面那篇文章为辅&#xff0c;一起食用&#xff0c;以达到最佳效果&#xff0c;当然&#xff0c;大佬随意。 IDEA创建Spring Boot工程 关于Spring Boot框架项目&#xff0…

Go协程池gopool源码解析

1、gopool简介 Repository&#xff1a;https://github.com/bytedance/gopkg/tree/develop/util/gopool gopool is a high-performance goroutine pool which aims to reuse goroutines and limit the number of goroutines. It is an alternative to the go keyword. gopool的…

数的基础概念

数的基本概念 结点 每一个圆圈就表示一个结点&#xff0c;每个结点里而会存放一些数据(点权值) 边 连接两个结点的一条线&#xff0c;我们认为上面的是父亲&#xff0c;下面的是儿子&#xff0c;边也可以存储权值(边权)。在树中&#xff0c;边的条数严格等于点…

探索未来智慧酒店网项目接口架构

在数字化时代&#xff0c;智慧酒店已成为酒店业发展的重要趋势之一。智慧酒店网项目接口架构作为支撑智慧酒店运营的核心技术之一&#xff0c;其设计和优化对于提升用户体验、提高管理效率具有重要意义。本文将深入探讨智慧酒店网项目接口架构的设计理念和关键要素。 ### 智慧…

备战蓝桥杯---线段树应用2

来几个不那么模板的题&#xff1a; 对于删除&#xff0c;我们只要给那个元素附上不可能的值即可&#xff0c;关键问题是怎么处理序号变化的问题。 事实上&#xff0c;当我们知道每一个区间有几个元素&#xff0c;我们就可以确定出它的位置&#xff0c;因此我们可以再维护一下前…

Unity 代码控制播放序列帧动画的实现

在Unity中有些应用场景的动画是通过序列帧实现的。 如下图即为一个英雄攻击的一个动画&#xff1a; 那么如何实现该序列帧动画的播放呢&#xff0c;我们可以通过代码来控制播放。 1、把以上序列帧导入编辑器中&#xff0c;并修改图片属性&#xff0c;如下图所示&#xff0c;其…

利用Idea实现Ajax登录(maven工程)

一、新建一个maven工程&#xff08;不会建的小伙伴可以参考Idea引入maven工程依赖(保姆级)-CSDN博客&#xff09;&#xff0c;工程目录如图 ​​​​​​​ js文件可以上up网盘提取 链接&#xff1a;https://pan.baidu.com/s/1yOFtiZBWGJY64fa2tM9CYg?pwd5555 提取码&…

UI自动化测试重点思考(上)--元素定位/验证码/测试框架

UI自动化测试重点思考--元素定位 Selenium定位元素selenium中如何判断元素是否存在&#xff1f;定位页面元素webdriver打开页面id定位name定位class_name定位tag_name 定位xpath定位css_selector定位link_text 定位partial_link 定位总结 selenium中元素定位的难点&#xff1f;…

K8S - Deployment 的版本回滚

当前状态 先看deployment rootk8s-master:~# kubectl get deploy -o wide --show-labels NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES …