遥感图像之多模态检索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.rhkb.cn/news/217152.html

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

相关文章

从零构建属于自己的GPT系列6:模型部署2(文本生成函数解读、模型本地化部署、文本生成文本网页展示、代码逐行解读)

🚩🚩🚩Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1:数据预处理 从零构建属于自己的GPT系列2:模型训…

电子取证中Chrome各版本解密Cookies、LoginData账号密码、历史记录

文章目录 1.前置知识点2.对于80.X以前版本的解密拿masterkey的几种方法方法一 直接在目标机器运行Mimikatz提取方法二 转储lsass.exe 进程从内存提取masterkey方法三 导出SAM注册表 提取user hash 解密masterkey文件(有点麻烦不太推荐)方法四 已知用户密…

剧本杀小程序成为创业者新选择,剧本杀小程序开发

剧本杀作为现下年轻人最喜欢的新兴行业,发展前景非常乐观,即使剧本杀目前处于创新发展阶段,但剧本杀行业依然在快速发展中。 根据业内数据,预计2025年剧本杀市场规模能达到四百多亿元。市场规模的扩大自然也吸引来了不少的创业者…

蓝桥杯航班时间

蓝桥杯其他真题点这里👈 //飞行时间 - 时差 已过去的时间1 //飞行时间 时差 已过去的时间2 //两个式子相加会发现 飞行时间 两段时间差的和 >> 1import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public cl…

如何学习Kubernetes,学习K8S入门教程

学习 Kubernetes(K8s)确实不容易 你的硬件资源有限时,不过别担心,我帮你理清思路,让你在学习 K8s 的路上更加从容。 1、资源限制下的学习方法 当硬件资源有限时,一个好的选择是使用云服务提供的免费层或者…

最新鸿蒙HarmonyOS4.0开发登陆的界面2

登陆功能 代码如下: import router from ohos.router; Entry Component struct Index {State message: string XXAPP登陆State userName: string ;State password: string ;build() {Row() {Column({space:50}) {Image($r(app.media.icon)).width(200).interpol…

【EI会议征稿】第三届电力系统与电力工程国际学术会议(PSPE 2024)

第三届电力系统与电力工程国际学术会议(PSPE 2024) 2024 3rd International Conference on Power System and Power Engineering(PSPE 2024) 第三届电力系统与电力工程国际学术会议(PSPE 2024)于2024年3月29-31日在中国三亚隆重召…

DM8/达梦 数据库管理员使用手册详解

1.1DM客户端存放位置 Windows:DM数据库安装目录中tool文件夹和bin文件夹中。 Linux:DM数据库安装目录中tool目录和bin目录中。 1.2DM数据库配置助手 1.2.1Windows创建数据库 打开数据库配置助手dbca 点击创建数据库实例 选择一般用途 浏览选择数据库…

Shrio 安全框架

目录 前言 1.介绍 2.整合 Shiro 到 Spring Boot 3.Shiro 相关配置 总结 前言 几乎所有涉及用户的系统都需要进行权限管理,权限管理涉及到一个系统的安全。Spring Boot 的安全框架整合方案中还有一个璀璨的明珠:Shrio。 1.介绍 Shiro是一款由Java 编…

SQL自学通之函数 :对数据的进一步处理

目录 一、目标 二、汇总函数 COUNT SUM AVG MAX MIN VARIANCE STDDEV 三、日期/时间函数 ADD_MONTHS LAST_DAY MONTHS_BETWEEN NEW_TIME NEXT_DAY SYSDATE 四、数学函数 ABS CEIL 和FLOOR COS、 COSH 、SIN 、SINH、 TAN、 TANH EXP LN and LOG MOD POW…

大数据云计算之OpenStack

大数据云计算之OpenStack 1.什么是OpenStack,其作用是什么?OpenStack主要的组成模块有哪些?各自的主要作用是什么? OpenStack是一个开源的云计算平台,旨在为企业和服务提供商提供私有云和公有云的建设和管理解决方案…

c语言堆排序(详解)

堆排序 堆排序是一种基于二叉堆数据结构的排序算法,它的基本概念包括: 建立堆:将待排序的列表构建成一个二叉堆,即满足堆的性质的完全二叉树,可以是最大堆或最小堆。最大堆要求父节点的值大于等于其子节点的值&#x…

LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

​论文地址:https://arxiv.org/pdf/2311.04254.pdf 一、当前Prompt技术的局限性 LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而,大多数现有的Prompt技术都有局限性: 输入输出(I…

智能优化算法应用:基于正余弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于正余弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于正余弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.正余弦算法4.实验参数设定5.算法结果6.参考文…

网络协议疑点记录

1.RIP, OSPF,BGP 搞清RIP和OSPF的区别,这是我见过最好的总结! - 知乎 首先什么是自治系统:治系统就是几个路由器组成了一个小团体 ?,小团体内部使用专用的协议进行通信,而小团体和小团体之间也使用专用的协议进行通信。 IGP RIP 距离矢量路由算法,bellman-ford算法,…

【Spring教程28】Spring框架实战:从零开始学习SpringMVC 之 请求与请求参数详解

目录 1 设置请求映射路径1.1 环境准备 1.2 问题分析1.3 设置映射路径 2 请求参数2.1 环境准备2.2 参数传递2.2.1 GET发送单个参数2.2.2 GET发送多个参数2.2.3 GET请求中文乱码2.2.4 POST发送参数2.2.5 POST请求中文乱码 欢迎大家回到《Java教程之Spring30天快速入门》&#xff…

【Python网络爬虫入门教程2】成为“Spider Man”的第二课:观察目标网站、代码编写

Python 网络爬虫入门:Spider man的第二课 写在最前面观察目标网站代码编写 第二课总结 写在最前面 有位粉丝希望学习网络爬虫的实战技巧,想尝试搭建自己的爬虫环境,从网上抓取数据。 前面有写一篇博客分享,但是内容感觉太浅显了…

three.js(二)

three.js(二) 参考前言正文简单开始(不使用任何框架)补充 粗略带过(使用Vue框架)细致讲解(比如我使用react框架)App.jsx 的进阶版 项目打包补充打包遇到的问题:原因:解决办法: 参考 https://threejs.org/docs/ 前言 上一集中,我们用到了three.js的一个…

Qt优秀开源项目之十九:跨平台记事本Notes

官网:https://www.get-notes.com github:https://github.com/nuttyartist/notes 一.特性 1.完全基于Qt和C 2.完全开源和跨平台(Linux、macOS、Windows) 3.运行速度快,界面美如画 4.支持Markdown 5.支持使用嵌套文件夹…

数据清洗、特征工程和数据可视化、数据挖掘与建模的主要内容

1.4 数据清洗、特征工程和数据可视化、数据挖掘与建模的内容 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.4节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学…