跨模态检索:带你领略图文检索的魅力

2024-02-15 17:10

本文主要是介绍跨模态检索:带你领略图文检索的魅力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

跨模态检索:带你领略图文检索的魅力

引子

作为经常“百度一下”的众多网民中的一份子,我们经常使用百度,输入要搜索的关键词,来检索要想的文本信息,此时是使用文本来检索文本;有时我们又会使用百度图片检索的功能,上传图片来寻找相似的图片,此时是以图来检索图;但我们也经常使用文本来搜索相应的图片,此时我们输入信息的类型和获得的信息的类型就不同了,我们称之为“跨模态”。

简 介

来下个专业点的定义:跨模态检索就是寻找不同模态样本之间的关系,实现利用某一种模态样本,搜索近似语义的其他模态样本。比如:利用图像来检索相应的文本,或者利用文本来检索想要的图像。当然这里模态也不仅仅限于图像和文本,如语音,生理信号,视频都可以作为跨模态检索的组成成分。

我们知道,网络的发展,让我们多媒体数据种类急速增多,比如:文本,图像,视频等,每种数据可以看作时一种模态,在同一模态中进行检索相对是简单的。如何利用一种模态,对另一种模态进行检索,就比较复杂了。

方法

想要寻求解决的方法,首先要知晓其特点。对于跨模态检索,不同的模态之间呈现出底层特征异构,高层语义相关的特点。听起来好难理解,举个例子:我们现在有个网页的主题是“老虎“,网页中文本上描述是“猫科动物,身上有条纹,爱吃肉肉blablabla”;而网页上的图片直接给出了“老虎”。这两者从语义上讲,都在描述同一主题——老虎;但是从特征上讲,文本通过字典向量来描述,而图片可以通过SIFT特征、LBP特征等等来表示,从特征描述上讲两者的类型是完全不同的。

于是,跨模态检索的主要方法就是:寻找不同模态之间的关系,将不同模态映射到同一子空间中,在此空间中我们就可以度量不同模态间的相似性了。具体而言:

  1. 首先,我们有一些训练的实列,每个实例都是一个有着标签的image-text对;
  2. 然后,将这些实列划分为source set(即训练集)和target set(即测试集),每个set中有着不相关的image-text对,但都有着同样的类别(即训练集和测试集不存在相同的image-text对,但类别是相同的);
  3. 接着,在训练时,我们从source set中学习一个公共的语义空间;
  4. 进而,将该公共的语义空间应用到target set中,从而对target set中的实列产生公共的特征表示;
  5. 最后,利用公共的特征表示就可以比对两种模态的样本的相似程度,从而进行匹配。

实例

我们以ICMR2018的一篇文章“Modal-adversarial Semantic Learning Network for Extendable Cross-modal Retrieval” 为例来具体的看利用深度学习是如何实现跨模态检索的。

在上面的方法中,source set的类别包含target set中的类别,如图1中的(a)所示:

source set中的类别是:艺术,生物,运动,战争等等,包含target set中的类别(艺术,生物,运动,战争等等)。我们称解决此问题的方法为非可扩展的跨模态检索。但是实际中往往会出现这种尴尬的情况,source set的种类并不能完全覆盖target set中的种类。我们称解决此问题的方法为可扩展的跨模态检索方法,如图1中的(b)所示。

这里写图片描述

本文旨在解决可扩展的跨模态检索问题。提出的网络结构如图2所示:

这里写图片描述

网络的输入是成对的Image-Text。然后是编码器,其中隐藏层的Code Layer用于关联两个网络的分支,意在挖掘不同模态间的关系。换言之,对于成对的输入样例,两个子网络学到的特征应该是相似的,通过一个相似度损失(Similarity loss)来实现:

fcorr(vi,ti)=fv(vi;Θr)ft(ti;Θr)22 f c o r r ( v i , t i ) = ‖ f v ( v i ; Θ r ) − f t ( t i ; Θ r ) ‖ 2 2

则,对于所有source set样例有:
Lcorr=i=1Nsfcorr(vi,ti) L c o r r = ∑ i = 1 N s f c o r r ( v i , t i )

通过优化该损失,可以减少不同模态对之间的差异。接下来我们看到了Class Embedding:将输入对的类别信息进行编码,输入网络,与Code Layer的输出特征进行拼接,构成新的特征,输入到后面的解码器中。该Class Embedding是本文解决可扩展跨模态检索问题的关键,受启发于零样本学习(Zero-shot Learning)。零样本学习的一个重要理论基础是:利用样本的高维的语义特征,使得训练得到的模型具有可迁移性。比如:一个物体的高维语义是“四条腿,喵喵叫,宠物的一种”,我们可以轻松地断定这是猫咪。实际上,作者的想法很类似与CVPR2017的一篇文章(Semantic Autoencoder for Zero-Shot Learning),使用Class Embedding作为高维的语义特征,对生成的低维的特征进行约束,使低维特征能够保留高维的语义特征。

前面拼接构成的新的特征,有两种类型,即从文本中构造的特征以及从图像中构造的特征,因为经过Code Layer层,该两种特征趋向于同一子空间,所以可以分别输入后面不同的解码器,进行重构。换言之,每个进行重构的解码器都有两种模态的输入。重构的损失为:

Lrec(vi,ti,Θr)=LI(vi,ti;Θr)+LT(vi,ti;Θr) L r e c ( v i , t i , Θ r ) = L I ( v i , t i ; Θ r ) + L T ( v i , t i ; Θ r )

其中,
LI(vi,ti;Θr)=viv^Ii22+tit^Ii22,LT(vi,ti;Θr)=viv^Ti22+tit^Ti22 L I ( v i , t i ; Θ r ) = ‖ v i − v ^ i I ‖ 2 2 + ‖ t i − t ^ i I ‖ 2 2 , L T ( v i , t i ; Θ r ) = ‖ v i − v ^ i T ‖ 2 2 + ‖ t i − t ^ i T ‖ 2 2

分别表示两个重构子网络对于两种模态的损失。实际上即约束重构的样本与原先的样本相似 ,使用欧式距离来衡量。

最后我们来看如图2所示网络结构中红色的部分。首先我们使用对抗学习的思想,引入一个简单的只有全连接层的识别器,使其无法区分输入的特征是属于哪一种模态的,从而进一步减少模态间的差异。在训练时,给每一个实例附上一个one-hot编码的标签来表示它属于哪一种模态。对抗损失为:

Ladv=1Nsi=1Nsfcross(zj,p(zj),Θa) L a d v = 1 N s ∑ i = 1 N s f c r o s s ( z j , p ( z j ) , Θ a )

其中 p() p ( ⋅ ) 表示标签指示器, fcross(x,p,θ) f c r o s s ( x , p , θ ) :是sigmoid交叉熵损失函数
fcross(x,p,θ)=p(x)log(p^(x,θ))+[1p(x)]log[1p^(x,θ)] f c r o s s ( x , p , θ ) = p ( x ) l o g ( p ^ ( x , θ ) ) + [ 1 − p ( x ) ] l o g [ 1 − p ^ ( x , θ ) ]

通过最大化该对抗损失即可进一步促使两种模特的低维特征无法区分,趋向于同一子空间。

然后对于Code Layer得到的低维特征,还是要保留语义的,即是可以用来进行分类的,与通常的多分类任务一样。使用一个带有softmax层的全连接层作为一个公共的分类层。其分类损失为:

Ldis=1Nsi=1Ns(fsoftmax(vi,yi;Θd)+fsoftmax(ti,yi;Θd))(5) (5) L d i s = 1 N s ∑ i = 1 N s ( f s o f t m a x ( v i , y i ; Θ d ) + f s o f t m a x ( t i , y i ; Θ d ) )

其中:
fsoftmax(x,y;θ)=k=1c1{y=k}log[p^(x,k,θ)](6) (6) f s o f t m a x ( x , y ; θ ) = ∑ k = 1 c 1 { y = k } l o g [ p ^ ( x , k , θ ) ]

博主觉得,如何将类别的属性信息进行编码嵌入网络是这篇文章的亮点。关于零样本学习,是个诱人深入学习的领域呢。

大家如果感兴趣可以结合论文进一步理解,传送门:
https://dl.acm.org/citation.cfm?id=3206033

这篇关于跨模态检索:带你领略图文检索的魅力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712001

相关文章

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

CentOS 7 x64下安装MySql5.7图文详解

参考: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ http://www.jianshu.com/p/7cccdaa2d177 http://www.linuxidc.com/Linux/2016-09/135288.htm 最近搞了台阿里云服务器,搭载的是CentOS 7系统,这里记录下mysql5.7的安装流程 查

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

Jenkins+Svn+Vue自动化构建部署前端项目(保姆级图文教程)

目录 介绍 准备工作 配置jenkins 构建部署任务 常见问题 介绍 在平常开发前端vue项目时,我们通常需要将vue项目进行打包构建,将打包好的dist目录下的静态文件上传到服务器上,但是这种繁琐的操作是比较浪费时间的,可以使用jenkins进行自动化构建部署前端vue 准备工作 准备vue项目,服务器,linux,ubuntu,centos等都可以,服务器上已经

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

利用PL/SQL工具连接Oracle数据库的时候,报错:ORA-12638: 身份证明检索失败的解决办法

找到相对应的安装目录:比如:E:\oracle\product\10.2.0\client_1\NETWORK\ADMIN 在里面找到:SQLNET.AUTHENTICATION_SERVICES= (NTS) 将其更改为:SQLNET.AUTHENTICATION_SERVICES= (BEQ,NONE) 或者注释掉:#SQLNET.AUTHENTICATION_SERVICES= (N

Python高效实现支持最小元素检索的栈

Python高效实现支持最小元素检索的栈 在Python面试中,考官通常会关注候选人的编程能力、问题解决能力以及对Python语言特性的理解。一个常见的面试题目是实现一个栈,支持 push、pop、top 操作,并能在常数时间内检索到最小元素。本文将详细介绍如何实现这个功能,确保代码实用性强,条理清晰,操作性强。 1. 引言 栈是一种后进先出(LIFO)的数据结构,常用于解决递归、表达式求值

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

当天审稿,当天上线,9月检索!

各领域CNKI知网普刊,最快一期预计下周送检,最快1天上线 领域广,计算机,社科,医学等各个方向都能收 包检索,可提供期刊部发票 知名出版社英文普刊 NO.1、Food Science and Nutrition Studies ISSN: 2573-1661 审稿周期:1个工作日内 录用通知:投稿后1个工作日 检索时间:9月份 接收范围: 公共医学、社会医学 1-4周

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了!微软开源三连发!一口气发布了 Phi 3.5 针对不同任务的 3 个模型,并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出,小参数也能展现出强大的推理能力,代码生成、多语言理解等任务信手拈来。而 Phi-3.5-vision-instruct 则是多模态领域的翘楚,能同时处理文本和视觉信息,图像理解、视频摘要