遥感图像之多模态检索AMFMN(支持关键词、句子对图像的检索)论文阅读、环境搭建、模型测试、模型训练

一、论文阅读

1、摘要背景

遥感跨模态文本图像检索以其灵活的输入和高效的查询等优点受到了广泛的关注。然而,传统的方法忽略了遥感图像多尺度和目标冗余的特点,导致检索精度下降。为了解决遥感多模态检索任务中的多尺度稀缺性和目标冗余问题,提出了一种新的非对称多模态特征匹配网络(AMFMN)该模型可适应多尺度特征输入,支持多源检索方法,并能动态过滤冗余特征
AMFMN采用多尺度视觉自注意(MVSA)模块提取RS图像的显著特征,并利用视觉特征指导文本表示。此外,为了缓解RS图像中由于类内相似性强而导致的正样本模糊,我们提出了一种基于样本对先验相似性的动态可变裕度三元组损失函数最后,与传统的文本粗糙、类内相似度较高的遥感图像文本数据集不同,我们构建了一个粒度更细、更具挑战性的遥感图像文本匹配数据集(RSITMD)该数据集支持通过关键词和句子单独或联合进行遥感图像检索。

2、难点

一般来说,RS图像检索方法可分为单模态检索和多模态检索两种。在RS单模态检索中,查询数据和RS数据属于同一模态。与RS单模态检索相比,RS多模态检索需要将不同的模态数据映射到统一的可测量空间中,因此更具挑战性。近年来,遥感多模态检索已成为研究热点之一。

跨模态遥感文本图像检索在遥感多模态检索中占有重要地位。在过去的几十年里,通常使用手动字幕为每张RS图像提供标签,然后将查询文本与标记的字幕进行匹配。随着遥感图像的快速增长,人工字幕越来越耗时,自动字幕越来越受到研究者的关注。例如,Shi和Zou[12]利用全卷积网络构建了一个RS图像标题框架。生成字幕的检索方法虽然解决了人力资源标注的问题,但仍然存在一定的检索缺陷。一方面,两阶段检索模式难以避免中间阶段大量信息的丢失另一方面,机器生成的粗字幕可能不能很好地表示RS图像
由于生成的句子相对粗糙,在标题生成阶段和文本相似度匹配阶段不可避免的信息丢失降低了检索精度。因此,传统的RS文本图像检索方法可能不是跨模态RS图像检索任务的最佳选择。

近年来,一些基于深度学习的检索方法被提出,它们直接计算图像和文本之间的相似度。然而,当这些方法完全应用于跨模态RS文本图像检索时,仍然存在三个挑战。

首先,具有众多目标的RS图像往往包含大量与描述主体无关的背景内容。然而,与RS图像相比,自然场景图像往往有突出的物体。自然场景的文本图像检索方法忽略了冗余特征的过滤,阻碍了模型对遥感图像内容的理解。因此,如何在遥感图像中获取显著特征已成为一个迫切需要解决的问题。同时,自然场景下的方法没有充分考虑RS的多尺度信息,导致对多尺度特征的利用不足,检索精度不理想。由于RS图像的多尺度和目标冗余性,我们尝试使用具有多尺度和动态滤波功能的网络来提取显著特征为了获得更好的文本特征,我们首先使用过滤后的图像特征来动态引导文本表示,然后将该方法应用于不同的检索任务中,以获得更灵活的输入。

第二,与自然场景不同,RS场景具有很强的类内相似性。一个文本可能对应多个与基础真值非常相似的负样本图像。我们称这种负样本为软正样本。由于软正样本的存在,模型在训练过程中会对优化目标产生模糊。我们把这个问题定义为正样本歧义。为了解决上述问题,我们将传统方法中的硬边界转化为基于样本对之间先验相似性的软边界,可以自适应地改变传统三元损失函数中的固定边界,进一步提高检索性能
第三,传统RS场景数据集中的文本通常与自然场景进行粗压缩,这使得传统数据集类内相似度高,不适合文本图像检索任务。为了解决这个问题,我们构建了一个细粒度和更具挑战性的数据集来最小化类内相似性。同时,我们在数据集中加入了关键词属性,增强了对多个检索任务的泛化能力。

3、创新点

1)为了解决遥感多模态检索任务中的多尺度稀缺性和目标冗余问题,设计了一种非对称多模态特征匹配网络(AMFMN)。该方法适应多尺度特征输入,支持多源检索方法,并能动态过滤冗余特征。AMFMN利用多尺度视觉自注意(MVSA)模块提取RS图像的显著特征,并利用视觉特征指导文本表示,在多个RS图像-文本数据集上取得了比较好的结果。

2)针对RS图像中由于类内相似性较强而导致的正样本模糊,基于样本对的先验相似性,设计了具有动态变量裕度的三元组损失函数。实验结果验证了我们工作的可行性。

3)与文本粗糙、类内相似度较高的传统遥感图像文本数据集相比,构建了一个粒度更细、更具挑战性的遥感图像文本匹配数据集(RSITMD)。RSITMD有更多的场景变化和更高细粒度的字幕。此外,新的关键词属性可以进一步应用于RS文本检索任务中

4、前人的一些研究

近年来,人们提出了一些直接计算自然场景跨模态相似度的方法。Faghri在对图像和文本进行编码后,使用三元组损失函数最小化相似图像和文本之间的距离。Lee等尝试将图像中的区域与标题中的单词对齐来计算相似度。Wang等[36]提出了一种基于秩分解的融合模型来计算图像和文本之间的相似度。即使直接计算图像和文本之间相似度的方法在自然领域已经成熟,但在RS场景中这种方法还是很少见的。Abdullah等[37]提出了一种用于RS文本图像嵌入相似度计算的深度双向三重网络。据我们所知,这是RS领域唯一的跨模态文本图像检索方法。

1、code

2、Exploring a Fine-Grained Multiscale Method for Cross-Modal Remote Sensing Image Retrieval、

在这里插入图片描述

三、文件结构

File Structure:
-- checkpoint    # savepath of ckpt and logs
-- data          # soorted anns of four datesets-- rsicd_precomp-- train_caps.txt     # train anns-- train_filename.txt # corresponding imgs-- test_caps.txt      # test anns-- test_filename.txt  # corresponding imgs-- images             # rsicd images here-- rsitmd_precomp...
-- exec         # .sh file
-- layers        # models define
-- logs          # tensorboard save file
-- option        # different config for different datasets and models
-- Rct           # calc Lct, which is not published this time
-- util          # some script for data processing
-- vocab         # vocabs for different datasets
-- seq2vec       # some files about seq2vec-- bi_skip.npz-- bi_skip.npz.pkl-- btable.npy-- dictionary.txt-- uni_skip.npz-- uni_skip.npz.pkl-- utable.npy-- data.py       # load data
-- engine.py     # details about train and val
-- test.py       # test k-fold answers
-- test_single.py    # test one model
-- train.py      # main file
-- utils.py      # some tools
-- vocab.py      # generate vocabNote:
1. In order to facilitate reproduction, we have provided processed annotations.
2. We prepare some used file::(1)[seq2vec (Password:NIST)][https://pan.baidu.com/s/1FOPldSGO6ctETiXMlPGC8g](2)[RSICD images (Password:NIST)](https://pan.baidu.com/s/1lH5m047P9m2IvoZMPsoDsQ)
3. We found that the split method of the UCM and Sydney datasets has a greater impact on performance due to their small size, so we no longer provide performance support for the above two datasets.

二、环境搭建与测试

在这里插入图片描述

InstallationWe recommended the following dependencies:
Python 3
PyTorch > 0.3
Numpy
h5py
nltk
yamlpip install tensorboard_logger -i https://pypi.tuna.tsinghua.edu.cn/simple
# CUDA 10.2
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=10.2 -c pytorch# CUDA 10.2
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=10.2 -c pytorchpip install torch==1.11.0+cu102 torchvision==0.12.0+cu102 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu102 -f https://download.pytorch.org/whl/torch_stable.html -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

Step1:Put the images of different datasets in ./data/{dataset}_precomp/images/

--data--rsitmd_precomp-- train_caps.txt     # train anns-- train_filename.txt # corresponding imgs-- test_caps.txt      # test anns-- test_filename.txt  # corresponding imgs-- images             # images here--img1.jpg--img2.jpg...

在这里插入图片描述

Step2:Modify the corresponding yaml in ./option。

Regard RSITMD_AMFMN.yaml as opt, which you need to change is:
opt[‘dataset’][‘data_path’] # change to precomp path
opt[‘dataset’][‘image_path’] # change to image path
opt[‘model’][‘seq2vec’][‘dir_st’] # some files about seq2vec

修改完毕的配置文件
在这里插入图片描述

Step3:Bash the ./sh in ./exec.

Note the GPU define in specific .sh file.
  cd execbash run_amfmn_rsitmd.sh

Note: We use k-fold verity to do a fair compare. Other details please see the code itself.

train
CUDA_VISIBLE_DEVICES=0 python train.py --path_opt option/RSITMD_AMFMN.yaml
test
CUDA_VISIBLE_DEVICES=0 python test.py --path_opt option/RSITMD_AMFMN.yaml

在这里插入图片描述

问题

pip install protobuf==3.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
问题2、

在这里插入图片描述
pyyaml版本过高,安装低版本pyyaml

pip install pyyaml==5.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
问题3、

在这里插入图片描述
解决:

pip install skipthoughts  -i https://pypi.tuna.tsinghua.edu.cn/simple
问题4、 return inverse_modes_mapping[i] KeyError: 90

在这里插入图片描述
解决:

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

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

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

相关文章

CSS3 2D变形 过渡 动画

​​​​​ transform(2D变形)概述translate()平移scale()缩放skew()倾斜rotate()旋转transform-origin中心原点 CSS3 2D变形 3D变形 过渡 动画 在CSS3中,动画效果包括4个部分:变形(transform)、3D变形、过渡(transit…

PMP项目管理 - 采购管理

系列文章目录 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in…

专业面试刷题网站程序源码

介绍: 一个干净的面试刷题网站!专业面试刷题网站,助你成为面试达人!支持自由组卷、在线刷题、校招社招斩获大厂offer,求职必备! 用这个刷题代码,助你早日打进狼厂、鹅厂等各大厂,薪水直接等级…

【剪映】点滴剪时光

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

C# 如何控制多线程同步执行

写在前面 使用Task类来控制多线程的同步执行,可应用于多任务分发执行后,再做归并处理。Tas既拥有线程池的优点,同时也解决了使用ThreadPool不易控制的弊端;可以非常简便并可靠地实现多线程的顺序执行。 代码实现 public class …

王道考研--》单链表课后习题C语言代码实现(冲刺)

考研是许多计算机科学专业学生追求高学历、寻求更好就业前景的途径。在考研过程中,数据结构是一个非常重要的科目,而代码实现题更是其中的难点之一。在这篇文章中,我们将探讨如何通过实现数据结构代码问题来提升考研成绩。无论您是否有编程经…

硬件基础:光耦、可控硅、继电器、达林顿管、干簧管

光耦 光电耦合器(optical coupler,英文缩写为OC)亦称光电隔离器,简称光耦。 光电耦合器是一种把发光器件和光敏器件封装在同一壳体内, 中间通过电→光→电的转换来传输电信号的半导体光电子器件。其中,发光…

re:Invent2023大会隆重推出自研芯片Graviton4和Trainium2

目录 一、前言 二、体验Graviton系列产品 (一)创建普通的EC2实例 (二)创建Graviton处理器的EC2实例 (三)远程到服务器 方式1:创建成功时连接 方式2:SSH客户端 方式3:正确…

基于FPGA的视频接口之高速IO(SATA)

简介 本章节是对于高速IO接口应用的一个扩展,目前扩展为SATA(SSD硬盘,机械硬盘不能使用)。通俗易懂的讲,即把SSD硬盘当做大型的Nand Flash来处理,不格式化硬盘,直接以地址和数据的格式,在SATA盘中写入数据,该数据不能被Window和linux直接识别,需单独编写App来查看SSD…

创建型模式之工厂模式

​ 本质: 实例化对象不直接使用new,而是用工厂代替 工厂模式分为: 简单工厂模式:用来生产同一等级结构中的任意产品(增加新产品需要修改已有代码)工厂方法模式:用来生产同一等级结构中的固定产…

关于找不到XINPUT1_3.dll,无法继续执行代码问题的5种不同解决方法

一、xinput1_3.dll的作用 xinput1_3.dll是Windows操作系统中的一款动态链接库文件,主要用于支持游戏手柄和游戏输入设备。这款文件属于Microsoft Xbox 360兼容性库,它包含了与游戏手柄和其他输入设备相关的功能。在游戏中,xinput1_3.dll负责…

C语言——预处理详解(#define用法+注意事项)

#define 语法规定 #define定义标识符 语法: #define name stuff #define例子 #include<stdio.h> #define A 100 #define STR "abc" #define FOR for(;;)int main() {printf("%d\n", A);printf("%s\n", STR);FOR;return 0; } 运行结果…

JRT实现在线打印预览

在JRT打印元素绘制协议一篇已经介绍过打印把绘图和打印逻辑进行了分离&#xff0c;这是和老设计最大的不同。因为老的设计时候没想着做在线预览功能&#xff0c;是后面硬性扩出来的。这次从最初设计就考虑绘图逻辑各处共用&#xff0c;包括打印预览&#xff0c;在线打印预览等、…

JS代码输出题:return Promise.resolve() 情况

题目&#xff1a; Promise.resolve().then(() > {console.log(0);return Promise.resolve(4);}).then((res) > {console.log(res)})Promise.resolve().then(() > {console.log(1)}).then(() > {console.log(2)}).then(() > {console.log(3)}).then(() > {con…

MDK编译过程和文件类型

MDK是一款IDE软件&#xff0c;具有&#xff0c;编辑&#xff0c;编译&#xff0c;链接&#xff0c;下载&#xff0c;调试等等的功能。 1.编译器介绍&#xff1a; MDK可以编译C/C文件和汇编文件&#xff0c;MDK只是一款IDE软件&#xff0c;那他内部使用的是什么编译器呢&#x…

Python-折线图可视化

折线图可视化 1.JSON数据格式2.pyecharts模块介绍3.pyecharts快速入门4.创建折线图 1.JSON数据格式 1.1什么是JSON JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据JSON本质上是一个带有特定格式的字符串 1.2主要功能json就是一种在各个编程语言中流…

JavaSE第7篇:封装

文章目录 一、封装1、好处:2、使用 二、四种权限修饰符三、构造器1、作用2、说明3、属性赋值的过程 一、封装 封装就是将类的属性私有化,提供公有的方法访问私有属性 不对外暴露打的私有的方法 单例模式 1、好处: 1.只能通过规定的方法来访问数据 2.隐藏类的实例细节,方便…

CSS篇之圆角梯形

附上一篇文章&#xff1a;梯形tab按钮-基于clip-path path函数实现 - JSRUN.NET 他这个区别在于&#xff0c;收尾两侧都是直角的&#xff0c;如图 下面这个是圆角&#xff1a; 思路&#xff1a; 代码如下&#xff1a; <template><div class"wrap"><…

时序数据库选型TimescaleDB

最近要做一个数字车间的物联网项目&#xff0c;数据存储成了首先要解决的问题&#xff0c;整个车间一共104台数控机床&#xff0c;1s钟采集1次数据&#xff0c;360024365*1043,279,744,000 &#xff0c;一年要产生32亿条记录&#xff0c;这个数据量用常见的关系型数据库肯定是不…

【C语言加油站】qsort函数的模拟实现

qsort函数的模拟实现 导言一、回调函数二、冒泡排序2.1 冒泡排序实现升序 三、qsort函数3.1 qsort函数的使用3.2 比较函数 四、通过冒泡排序模拟实现qsort函数4.1 任务需求4.2 函数参数4.3 函数定义与声明4.4 函数实现4.4.1 函数主体4.4.2 比较函数4.4.3 元素交换 4.5 my_qsort…