跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)
Dissecting Deep Metric Learning Losses for Image-Text Retrieval
剖析图像文本检索中的深度度量学习损失
2022.10
视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性。三元组损失与硬负值的挖掘已经成为大多数VSE方法的事实目标。
图像领域深度度量学习(DML)产生了新的损失函数,超越了三元损失。 尽管在设计基于梯度运动的损失方面做了一些尝试,但大多数DML损失是在嵌入空间中根据经验定义的。
本文提出了一个新的基于梯度的目标分析框架,即GOAL,以系统地分析现有DML函数中梯度的组合和重新加权,而不是直接应用这些损失函数,这可能导致模型参数的次优梯度更新。在这个分析框架的帮助下,我们进一步提出了梯度空间中新的目标系列,探索不同的梯度组合。在梯度不能与有效的损失函数积分的情况下,我们实现了我们提出的目标,使它们在梯度空间而不是在嵌入空间的损失上直接运作。 综合实验表明,我们的新目标在不同的视觉/文本特征和模型框架中都比基线有持续的性能提高。 我们还展示了GOAL框架的通用性,将其扩展到其他使用三元损失的模型,包括具有严重跨模式交互的视觉-语言模型,并在COCO和Flick30K的图像-文本检索任务中取得了最先进的结果。
简介
视觉语义嵌入(VSE)是在图像和自然语言之间建立联系的主要课题之一。它旨在将图像和它们的描述性文本信息映射到一个联合空间中,这样,一对相关的图像和文本应该被映射到彼此附近,而一对不相关的图像和文本应该被映射到彼此远处。本文专注于图像-文本匹配和检索任务的视觉-语义嵌入,但我们的方法可以推广到其他使用三重损失系列的图像-文本检索模型(如X-VLM)。
一个VSE模型通常由图像和文本的特征提取器、特征聚合器和训练期间的目标函数组成。尽管VSE在特征提取器和特征聚合器方面取得了重大进展,但人们对训练模型的损失函数关注较少。
基于铰链的三联体排名损失与硬负抽样已经成为许多VSE方法的事实训练目标。许多损失函数被提出来以提高图像嵌入任务的训练性能,显示出三重损失对于一般的度量学习来说不是最佳的。早期的损失,如triplet loss和contrastive loss的定义是,在嵌入空间中,正对应该接近,而负对应该分开。然而,这种定义的损失函数可能不会导致理想的特征,这可能会明确地影响模型参数的更新。
Triplet loss是一种常用的深度度量学习损失函数,用于学习样本间的距离度量,其基本思想是使得同类样本之间的距离尽可能小,异类样本之间的距离尽可能大。
具体来说,在训练过程中,Triplet loss需要输入一个样本三元组(anchor,positive,negative),其中anchor表示锚样本,positive表示与anchor同类的样本,negative表示与anchor不同类的样本。Triplet loss的目标就是最小化锚样本和同类样本之间的距离,同时最大化锚样本和不同类样本之间的距离。
本文提出了基于梯度的目标分析框架,即GOAL,一个新的基于梯度的VSE问题分析框架。我们首先提出了一个新的梯度框架,以剖析梯度层面的损失,并提取其关键梯度元素。然后,我们探索了一种新的训练思路,即在每个训练步骤中直接定义梯度来更新模型,而不是定义损失函数,如图1所示。这个新的框架允许我们简单地将DML损失中的关键梯度元素结合起来,形成一个新的梯度家族,避免了将梯度整合到损失函数中的问题。最后,新的梯度继续改善了现有的VSE在图像文本检索任务上的表现。
图1。为了实现所需的视觉语义嵌入空间,一种常见的方法是设计一个损失函数,该函数可以在PyTorch或TensorFlow等深度学习平台上计算。这些平台上的自动梯度机制自动计算梯度以更新模型参数,形成所需的嵌入空间。在实践中,视觉语义嵌入的目标是优化从图像和文本中提取的特征点的聚类或分离,而损失函数在某种程度上是实现该目标的间接方法,而梯度更直接地影响嵌入空间的更新。我们提出了一种直接设计梯度来训练模型的方法。
本文贡献
- 提出了一个通用框架GOAL来全面分析现有深度度量学习损失函数的梯度更新,并应用这个框架来帮助寻找VSE问题的更好目标。
- 提出了一种新的方法,通过用梯度目标家族来优化模型,而不是使用损失函数,直接处理图像-文本检索任务。
- 展示了对现有方法的持续改进,在COCO数据集的图像-文本检索任务中取得了最先进的结果。
相关工作
用于图像-文本匹配的视觉语义嵌入:
VSE++是一种基本的VSE模式,其中视觉和文本嵌入是单独训练的,然后在投射到一个共享空间后用AvgPool进行聚合,之后通过硬负挖掘的三倍损失来联合优化。 与使用特征图的局部网格作为视觉特征的主流相比,自下而上的注意力被引入到学习图像-文本匹配的视觉语义内联,这通常是通过堆叠预先训练好的物体检测器的区域表征来实现的。通用集合运算符(GPO)来学习最佳集合策略,它优于具有复杂图像聚合器的方法。受语言模型大规模预训练的成功启发,最近出现了一种趋势,即在大规模图像-文本对上进行任务无关的视觉-语言预训练(VLP),以获得通用的表达,然后在特定任务的数据和损失上进行微调,以在下游任务(包括图像-文本检索)中获得最先进的结果。然而,与我们提出的方法相比,流行的方法选择优化三联体损失作为图像-文本匹配任务的事实目标。 在本文中,我们将努力重新审视为视觉语义嵌入寻找更好的训练目标的问题。
深度度量学习在极端的分类环境中很有用,比如细粒度识别。其目的是训练网络将语义相关的图像映射到附近的位置,将不相关的图像映射到嵌入空间中的远处位置。有许多损失函数被提出来解决深度度量学习问题。三元损失函数及其变体,如圆圈损失,形成一个包含锚、正和负实例的三元组,其中锚和正实例共享相同的标签,而锚和负实例共享不同的标签。成对的损失函数,如对比性损失、二项式偏差损失、解除结构损失和多重相似性损失,当一对具有相同标签的实例之间的距离很大时,以及一对具有不同标签的实例之间的距离很小时,就会受到惩罚。所有这些损失函数都鼓励正面图像对的距离要小于负面图像对的距离。由于DML的训练目标与VSE问题相似,本文借用DML的这些损失设计思想来改进VSE问题。
梯度修改:
最近在DML方面的工作,如Multi-Similarity Loss和Circle Loss,从标准的三元损失公式开始,调整损失函数的梯度,通过非常简单的代码修改就可以得到明显的改进。这些工作都找到了明确的损失函数,其梯度是理想的。 其他的策略是从一个理想的梯度加权函数开始,然后整合理想的梯度,得出一个带有适当属性的梯度的损失函数。这通常仅限于简单的加权策略,如简单线性形式和当三联体包含硬负数时对正数的简单梯度去除,因为它可能难以找到梯度与复杂加权策略一致的损失函数。 最相关的工作是P2Sgrad,它分析了基于边际的softmax损失家族中的梯度,并直接用余弦相似度修改梯度以达到更好的优化效果。与P2Sgrad相比,我们的工作侧重于三联体损失及其变体损失函数。
本文的框架直接探索了所需梯度更新的空间。通过不局限于用适当的梯度去除损失函数,我们可以更明确地在实验中剖析梯度的不同部分的影响。此外,我们还可以将实验中最有用的梯度项重新组合成一种梯度条件,稍微改变现有的算法以提高性能。
基于梯度的目标设计框架工作
我们为一批图像和文本如何影响网络定义了一系列的术语。 设X是一批输入图像,Y是一批输入文本,x是用图像提取器提取的图像的L2标准化特征向量,y是用文本提取器提取的文本的L2标准化特征向量,l是这批图像的损失值、 θ是图像提取器的参数,φ是文本提取器的参数,η是学习率,fθ(·)是图像提取器的映射函数,gφ(·)是文本提取器的映射函数,L(·)是损失函数。在前向训练步骤中,表达式为:

这两个方程强调,提取器参数的更新与两组导数项相结合。第一组导数项∂l/∂x和∂l/∂y代表了图像和文本嵌入特征的变化对损失的影响,这也是本工作中最详细探讨的术语。第二组导数项∂x/∂θ和∂y/∂φ表示模型的参数变化如何影响嵌入特征。由于导数链规则的存在,在具有多层的现代深度网络中,这个项总是可以用每层的多个项的乘法来扩展,这在工作中没有讨论。
第一组导数项总是受到损失函数的分析形式的制约。例如,由于提升结构损失和二项式偏差损失的指数形式,它们的导数也包含一个指数项。这样的项可能会导致梯度不稳定,这也是损失函数的设计最多只能隐含地控制提取器的学习行为的一个例子。
通过最新的深度学习平台,如Pytorch,它支持前向模块的定制梯度反向计算,而不是依赖于损失的导数,我们可以明确地定义基于所提出的GOAL框架的梯度更新,以直接影响提取器的学习行为。 在下面的讨论中,我们重点讨论了DML文献中许多三重损失函数中第一组术语的特殊形式,然后提出直接定义模型训练的第一组术语。
Gradient Components
给定一对图像和文本特征x和y,当图像特征x被当作锚点时,我们表示其在文本批次Y中挖掘的文本硬负面特征y′;当文本特征y被当作锚点时,我们表示其在图像批次X中挖掘的图像硬负面特征x′。然后,我们可以得到两个三联体(x, y, y′)和(y, x, x′)。在第一个三联体中,Sx,y = xTy和Sx,y′ = xTy′是作为归一化图像特征和归一化文本特征的正负对的点积计算的余弦相似度。类似的余弦相似度是为第二个三联体计算的,Sy,x = yTx和Sy,x′ = yTx′。最后,这些余弦相似度被输入一个对称的三联体损失函数l = L(Sx,y, Sx,y′) + L(Sy,x, Sy,x′)。
与图像和文本特征有关的梯度是:

三联体损失及其变体的区别主要来自标量。在DML文献中,主要有两组标量形式:与三联体的正负对相似性都有关的标量,我们表示为(Triplet Weight T ),与三联体的正或负对相似性有关的标量,我们表示为(Pair Weight P )。
Triplet Weights
对于标准的三联体损失函数与硬性负向开采,梯度可推导为:
Pair Weight
除了三联体权重,许多 DML 工作也提出了损失函数中的配对权重。为了详细讨论对权重P,我们表示正数对的权重为P+,负数对的权重为P-。让一个恒定的缩放参数作为公平比较的基线。在这种情况下,两对权重都设置为常数1。
最近的工作认为,当负数对彼此接近时,负数对的权重应该很大。否则,正如[36]中提到的,对DML的优化任务会很快收敛到一个糟糕的局部最小值。Circle loss中的解决方案是应用线性配对权重Plin:对于负的配对,如果相似度大,权重就大,如果相似度小,权重就小;对于正的配对,如果相似度小,权重就大,如果相似度大就小:
Combinations of Gradient Components
在这一节中,我们从DML的三元权重和配对权重方面剖析了许多以前的损失函数。表1显示了如何将Gradient Components的不同组合映射到现有的损失函数中。除了这些组合之外,其余标注为 "新 "的组合都是未曾探索过的。如果训练需要损失函数,这些gradient component组合就很难被探索,如果它们不是可整合的,就几乎不可能的。然而,在我们的GOAL框架下,我们能够用这些梯度训练一个模型。

表1. 将三联体权重和成对权重的不同梯度组合映射到现有的DML损失函数中。在我们的GOAL框架下,标记为 "新 "的组合是可以被探索的
实验
我们直接用梯度目标取代三个开源作品中的损失模块: VSE++、VSE∞和X-VLM,并保持所有其他训练设置与他们的原始工作相同。我们在前面测试了这三个作品中由三联体权重和成对权重组合形成的所有可能梯度目标。每个目标运行3次,以消除来自批次随机抽样和联合空间映射层随机初始化的随机性造成的影响。我们报告了两种常见的检索结果,即图像到文本检索和文本到图像检索,用Recall@1的平均值和标准偏差作为两个数据集的衡量标准。
我们在最新的最先进的方法X-VLM[40]中应用了相同的梯度目标,在下游微调中替换了其对比性损失项。这个结果被称为 “X-VLM ours”。我们继续在MSCOCO 5K测试和Flickr 1K测试中推动最先进的结果的边界。

表6. 我们在MS-COCO 5K和Flickr 1K测试中使用所提出的GOAL框架设计的新型损失函数进行的最先进的图像-文本检索结果
结论
我们提供了一个新的框架GOAL,用从深度度量学习损失函数中剖析出来的梯度成分组合来训练图像-文本匹配任务。在实践中,所提出的梯度目标可以很容易地应用于替代损失函数的训练。对三重权重和一对权重的详尽组合进行的实验表明,三重权重和一对权重对检索性能都有各自的影响,一般来说,Tcir和Psig-ms的组合在图像-文本检索中取得了最佳性能。这个框架有助于找到更好的梯度目标,这些梯度目标在这一领域从未被探索过,并在多种既定方法上提供了一致的检索改进,包括取得新的最先进的结果。
相关文章:
跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)
Dissecting Deep Metric Learning Losses for Image-Text Retrieval 剖析图像文本检索中的深度度量学习损失 2022.10 视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性…...
贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序,再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...
IMX6ULL裸机篇之SPI实验-ICM20608代码实现
一. SPI 实验 SPI实验:学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中,涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写,如下所示: IMX6ULL…...
51单片机读取DS18B20温度传感器
1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。 图一&…...
set/map学习
我们要开始学习map和set的使用,虽然使用更加复杂,但是STL整体的设计,本身就具有很强的前瞻性和延续性,比如说迭代器等,我们顺着文档来看。这也是除了vector之外最重要的容器,当然还有unordered_map 和 unor…...
JavaScript Web APIs学习总结
以后声明变量我们有限使用哪一个? const 有了变量先给const,如果发现它后面是要被修改的,再改为let 为什么const声明的对象可以修改里面的属性? 因为对象是引用类型,里面存储的是地址,只要地址不变&…...
萤石摄像头RTSP流获取(黑屏解决)
前言 在获取萤石摄像头RTSP视频流时,视频流获取不成功,黑屏并且一直显示缓冲中。下面对获取过程中查阅的资料和解决方案做一下汇总。 打开RTSP 在萤石云视频APP中打开RTSP,【我的】-【工具】-【局域网设备预览】-【开始扫描】-【选择摄像头…...
ThreadLocal引发的内存泄漏分析
预备知识(引用) Object o new Object(); 这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时,只是表示o不再指向堆中object的对象实例,不代表这个…...
银行数据治理:数据质量管理实践
现代商业银行日常经营活动中积累了大量数据,这些数据除了支持银行前台业务流程运转之外,越来越多地被用于决策支持领域,风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后,实质…...
2.7V至25V宽输入电压15A 峰值电流
HT7179是一款高功率异步升压转换器,集成 20mΩ功率开关管,为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围,可为 采用单节或两节锂电池,或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…...
Vue 父子组件应用指南:从基础到实战
文章目录 一、创建父组件二、创建子组件三、在父组件中使用子组件四、父子组件之间的通信1. 数据传递2. 事件传递 Vue.js 是一种流行的 JavaScript 框架,用于构建用户界面。其中,父子组件的概念是 Vue 开发中非常重要的一部分。本文将介绍如何使用 Vue 创…...
todotodo
todotodo...
创建autotool项目
GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理,只要知道他们…...
计算机概念
计算机的体系结构 计算机俗称“电脑”computer(kəmˈpjuːtə(r))哈哈,本质上就是一台在各个领域被广泛使用的设备,主要由硬件和软件两大部分组成。 常见的硬件:CPU、内存、硬盘、显卡、主板、键盘、显示器、鼠标、... CPU - 中央处理…...
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现
文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…...
网络安全(黑客)工具
1.Nmap 它是网络管理员 必用的软件之一,以及用以评估网络系统安全。正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子 )爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器ÿ…...
探究前后端数据交互方式
前端和后端在 Web 开发中扮演着不同的角色,两者需要进行数据的传递和交互。本篇文章将主要讨论前后端数据交互方式的不同类型和应用场景。 一、什么是前后端数据交互? 在 Web 开发中,前端负责用户界面的设计和交互,后端负责数据…...
Yolov5轻量化:CVPR2023|RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构
1.RIFormer介绍 论文:https://arxiv.org/pdf/2304.05659.pdf 本文基于重参数机制提出了RepIdentityFormer方案以研究无Token Mixer的架构体系。紧接着,作者改进了学习架构以打破无Token Mixer架构的局限性并总结了优化策略。搭配上所提优化策略后,本文构建了一种极致简单且…...
Spring-Retry实现及原理
前言 重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中断等情况。还有在现在流行的微服务治理框架中࿰…...
Java中的锁
为什么会有这些锁呢? 因为一种类型的锁很难应对线程操作同步资源的情况。 乐观锁和悲观锁 自旋锁和适应性自旋锁 无锁、偏向锁、轻量级锁和重量级锁 公平锁和非公平锁 可重入锁和非可重入锁 乐观锁和悲观锁 悲观锁认为当它操作数据的时候,必然用一…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

