当前位置: 首页 > news >正文

【论文阅读】Progressive Spatio-Temporal Prototype Matching for Text-Video Retrieval

资料链接

论文链接:https://openaccess.thecvf.com/content/ICCV2023/papers/Li_Progressive_Spatio-Temporal_Prototype_Matching_for_Text-Video_Retrieval_ICCV_2023_paper.pdf
代码链接:https://github.com/imccretrieval/prost

背景与动机

文章发表于ICCV 2023,来自中科大IMCC实验室。
文本-视频检索是近年来比较新兴的领域,随着多模态和大模型的发展,这一领域也迸发出了前所未有的潜力。目前的主流方法是学习一个joint embedding space,将视频和文本编码成特征向量,在空间中含义相近的向量的位置也是相近的,从而通过计算向量间相似度实现检索。本文梳理了近期的一些工作,主要分为以下三个方向:
细粒度匹配:单一的特征向量难以编码丰富的细节信息,需要进行更细粒度的视频文本匹配。
多模态特征:视频有着丰富的多模态信息,使用多种多模态特征可增强检索性能。
大规模预训练:近年来大规模预训练广泛应用,经过预训练的模型检索能力得到显著提升。
作者团队在这一问题上,主要着重于第一个方向的研究。

典型的解决方案是直接对齐整个视频与句子的特征,这会忽视视频内容与文本的内在关系。因此,匹配过程应当同时考虑细粒度的空间内容和各种时间语义事件。这就是细粒度的匹配。
为此,作者团队提出一种具有渐进式时空原型匹配的文本-视频学习框架。它的大致框架如下:

方法

给定一个由n个视频以及它们对应的m个文本描述组成的数据集,文本-视频检索(TVR)旨在学习一个函数,以有效地衡量模态之间的相似性。

对于文本查询,应当有:

 因此,需要强大的文本编码网络和视频编码网络来生成高质量的特征,从而实现有效的匹配。

采用 CLIP 作为骨干网络。给定输入视频,均匀地选择L个帧作为关键帧,提取连续特征:

其中是全局帧token特征,KPatch数量,D是特征维数,XiShape(K+1) × D

给定查询文本,添加开始token和结束token,输出文本token特征可以定义为:

其中,是全局文本token特征,MD分别是单词和特征维数,yiShape(M+2) × D

方法 - 总体框架

对象-短语原型匹配阶段

空间原型生成机制预测关键Patch或单词,这些Patch或单词被聚合成对象或短语原型。重要的是,优化对象-短语原型之间的局部对齐有助于模型感知空间细节。

事件-句子原型匹配阶段

设计了一个时间原型生成机制,将帧内对象与帧间时间关系相互关联。这样逐步生成的事件原型可以揭示视频中的语义多样性,用于动态匹配。

方法 - 对象短语原型匹配

相较于现有方法学习一个单一的Patch-Event投影,作者团队使用分而治之的方式解耦时空建模过程。

首先进行Patch-对象和单词-短语的空间原型聚合,来揭示关键的局部细节。

分为两个步骤:

空间原型生成 Spatial Prototype GenerationSPG

对于Patch特征,首先需要生成它们的空间对象原型:

使用两个全连接(FC)层和ReLU函数来预测稀疏权重,其中No是对象原型的数目,这样就可以避免对象原型受到冗余Patch的影响,从而使得对象原型更准确、集中。

其中,Po为对象原型, ShapeNo×D

对于文本,同样借鉴SPG机制,并设计了一个类似的网络结构来聚合单词标记,生成短语原型

对象-短语匹配 Object-Phrase Matching

基于上一步骤生成的对象、文本原型,实现对象-短语原型匹配。

计算每个帧内的对象-短语原型的最大相似度,将最相似的短语原型和每个对象原型关联起来,反映了跨模态的细粒度分配。

然后,对于多帧对象相似度矩阵,找到跨帧序列的最大相似度分数,得到置信度更高的对象-短语匹配概率。最后将匹配得分求和,得到最终的相似性Sop

其中,No是对象原型的数量、Np是短语原型的数量、L是帧的数量。

这一部分的矩阵处理细节如下所示:

Pp与Po相乘以后,得到的矩阵首先按列取最大值,得到下面的矩阵:

它的含义是,对于每个对象原型,其与短语原型的最大相似度。

然后,对于每个关键帧都有一个上述的矩阵,在跨帧之间再取对于每个对象原型与短语原型的最大相似度,从而得到置信度更高的对象-短语匹配分数

方法 事件句子原型匹配

接下来,到了事件句子原型匹配阶段。

时间原型生成 Temporal Prototype GenerationTPG

直接基于全局帧特征获得视频级特征会导致模型不能感知局部细节,并且只能得到单一的视频级特征。

作者团队提出一种渐进式的方法,逐步将对象原型聚合到帧原型中,然后进行帧间交互,以生成各种事件原型。

首先设计一个帧解码器,将所有对象原型聚合到帧级原型中:

其中,是帧Query(Learnable),KoVo是对象原型Po的线性变换后的特征。

注意力掩码的定义是:

这一部分的矩阵处理细节如下所示:

注意观察Mf与的关联,可以理解它的作用是使得注意力仅存在于同一帧的对象原型之间,从而不受到其他帧的对象原型的干扰。

Softmax后的权重再乘以对应帧的𝑣𝑜从而得到帧原型矩阵Pf,形状为(L × D

后面使用全局帧信息Qf进行一个Residual Connection。

将帧原型pf和相应帧的原始全局特征xc相加,以增强模型的稳健性:

然后,使用一个动态事件解码器来学习Pf中的帧间关系,它可以获得不同的事件原型 来展示视频的丰富信息。

其中,是事件Query(Learnable),KfVf是帧原型Pf的线性变换后的特征。

在训练过程中,每个事件Query都学习如何自适应地聚焦于视频帧原型,而多个Query隐含地保证了一定的事件多样性。

事件句子匹配 Event-Sentence Matching

由于同一个视频通常对应多个文本语义描述,我们直接使用全局文本表示yE作为句子原型与事件原型Pe进行对齐,找到句子原型与事件原型的最大相似度,作为最终的相似性Ses

方法 – 训练与推断

训练阶段

采用InfoNCE损失函数来优化batch内的原型匹配。将文本-视频对视为正样本,同时考虑batch内的其他成对组合作为负样本:

其中,SopSes分别为来自 对象短语原型匹配 和 事件句子原型匹配阶段 的 对象-短语原型相似度 和 句子-事件原型相似度 。

推理阶段

直接对最终相似度匹配加权了时空匹配得分:
其中是空间匹配因子。

实验 评价指标与结果

Recall@K (R@K)

这个指标衡量在前K个检索结果中正确匹配的比例。

Median Rank (MdR)

中位数排名指标表示正确匹配项在所有检索结果中的中位数排名。

Mean Rank (MnR)

平均排名指标表示所有正确匹配项在所有检索结果中的平均排名。

实验 消融实验

此外,作者进行了消融实验并做出了以下分析:
  • 只使用ESPM时,R@1下降了2.6个点,证实了细粒度空间细节对于ESPM的补充作用。
  • 只使用OPPM时,模型性能仍然较差,因为其缺乏对时间的理解,无法解决关系模糊性。
  • SPG替换为TPG,性能下降说明了原始视频标记中存在冗余,SPG能够有效地过滤冗余信息。
  • TPG替换为SPG,性能下降说明了帧间信息的交互对于生成更好得到事件原型是很重要的

  • -F-M-R(移除帧解码器、attention mask、残差连接)的结果下降,表明帧内的局部对象关系和全局帧特征共同补充了全面的帧级空间信息。
  • P-PO-W(使用patch-phraseobject-word,而不是原型)表明使用原型匹配能减缓模态对齐问题。
  • F-WF-S(直接使用CLS或直接使用平均池化获得帧token)会影响信息的细节,从而降低性能。
  • 在原型数量的设置上,也进行了实验,最后确定了最好的原型配置。表明在原型太多时会引入局部噪音,而太少时则无法表达语义。
  • 同时也针对空间匹配因子β做了测试,找到了最合适的β值。表明需要同时合理地利用底层细粒度的空间信息和时间原型匹配,才能得到好的结果。

实验 定性分析

原型可视化

通过对象原型和时间原型的可视化图片,可以看见它们之间具体的匹配关系。可以看到不同的事件原型在不同帧上的权重差异很大,说明模型能够学习到时间关系。

检索结果

通过举例分析说明了对象-短语原型匹配提供了重要的细粒度空间知识,从而能够给出更好的查询结果。

总结

提出了一种新颖的文本-视频检索框架,称为ProST,将匹配过程分解为互补的对象-短语和事件-句子原型对齐。

在对象-短语原型匹配阶段,设计了空间原型生成机制,以便专注于重要的视频内容并加强精细的空间对齐。

在事件-句子原型匹配阶段,他们使用时间原型生成机制逐渐生成多样化的事件原型,并学习动态的一对多关系。

希望通过这篇论文不仅能够提供有关互补的时空匹配的重要性的见解,还能够促进未来的研究,通过解决设计缺陷而不是主要是尝试和错误来推动文本-视频检索领域的进展。

个人感受

读完这篇文章,唯一的感觉就是太花了,实在是太花了。学习之路任重而道远!

相关文章:

【论文阅读】Progressive Spatio-Temporal Prototype Matching for Text-Video Retrieval

资料链接 论文链接:https://openaccess.thecvf.com/content/ICCV2023/papers/Li_Progressive_Spatio-Temporal_Prototype_Matching_for_Text-Video_Retrieval_ICCV_2023_paper.pdf 代码链接:https://github.com/imccretrieval/prost 背景与动机 文章发…...

python --- 类与对象(二)

类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。 类的方法 在类的内部,使用 def 关键字来定义一个方法&#xf…...

任正非说:华为以前还出现过可笑的工号文化,看官大官小的指令

你好!这是华研荟【任正非说】系列的第33篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 一、要把可以规范化的管理都变成扳铁路道岔,使岗位操作标准化、制度化。 来源于任正非先生2003年的讲话《在理性与…...

用Python舞动数据的魔力:探索数据分析的艺术之路

用Python舞动数据的魔力:探索数据分析的艺术之路 前言什么是Python数据分析Python介绍数据分析介绍Python和数据分析的关系 python数据分析的作用金融领域社交媒体领域电子商务领域医疗领域物流和供应链管理领域 Python数据分析教材 前言 打开招聘网站,…...

iOS 让界面元素的文字随着语言的更改而变化——本地化文字跟随

在我的 App 内置的设置中,修改了语言,这时需要让当前界面的文本跟着改变语言。 解决方法是:添加一个观察者,观察 localize 本地语言的通知,然后一有变化就调用自定义的方法执行操作。(而设置中其实是改变了…...

Xcode15更新内容

参考博客: 【WWDC 2023】Xcode 15 更新内容 文章目录 1. xcode15起,项目内创建的图片可以使用点语法访问2.2. UIKit项目也可以使用预览功能3. Xcode新增标签功能4.Log分类 1. xcode15起,项目内创建的图片可以使用点语法访问 2.2. UIKit项目也…...

【数据集标注制作】视频剪切标注1——类DarkLabel软件

视频标注 用于从视频中标注数据,用于YOLO网络的目标检测。旨在实现单次鼠标标注能生成多张被标注图像,实现数据集快速制作! 从视频中,通过鼠标框选指定区域,形成掩码box鼠标选定区域后,根据设定的成像尺寸…...

一体化HIS医疗信息管理系统源码:云HIS、云电子病历、云LIS

基于云计算技术的B/S架构的HIS系统,为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势,建立统一的云HIS、云病历、云LIS,…...

NSSCTF逆向题解

[SWPUCTF 2021 新生赛]简简单单的逻辑 直接把key打印出来,然后整理一下result,让key和result进行异或 key[242,168,247,147,87,203,51,248,17,69,162,120,196,150,193,154,145,8] data[0xbc,0xfb,0xa4,0xd0,0x03,0x8d,0x48,0xbd,0x4b,0x00,0xf8,0x27,0x…...

广域网加速的作用:企业为什么需要广域网加速?

由于局域网与广域网之间巨大的带宽鸿沟,通过增加带宽来满足膨胀的流量需求是不切实际的。 并且广域网带宽成本较高,增加广域网带宽对任何企业都意味着巨大的成本负担。这些使得控制 管理广域网带宽使用成为必需。 企业为什么要加速广域网? 对重要的企…...

SQL SERVER Inregration Services-OLE DB、Oracle和ODBC操作

OLE DB链接器 OLE DB插件下载:https://learn.microsoft.com/zh-cn/sql/connect/oledb/download-oledb-driver-for-sql-server?viewsql-server-ver16 配置OLE DB Connection Manager 在点击“新建”时,会弹出警告信息“不支持指定的提供程序&#xff0…...

尚硅谷大数据项目《在线教育之实时数仓》笔记006

视频地址:尚硅谷大数据项目《在线教育之实时数仓》_哔哩哔哩_bilibili 目录 第9章 数仓开发之DWD层 P041 P042 P043 P044 P045 P046 P047 P048 P049 P050 P051 P052 第9章 数仓开发之DWD层 P041 9.3 流量域用户跳出事务事实表 P042 DwdTrafficUserJum…...

Linux-源码安装go

使用go 1.14 版本 #wget https://golang.org/dl/go1.14.15.linux-amd64.tar.gz #tar zxvf go1.14.15.linux-amd64.tar.gz #mv go /usr/local/ #vim /etc/profile export GOROOT/usr/local/go export GOBIN$GOROOT/bin export GOPKG$GOROOT/pkg/tool/linux_amd64 export GO…...

如何检测小红书账号是否被限流?哪些原因会导致账号被限流?

hi,同学们,本期是第5期AI运营技巧篇,文章底部准备了粉丝福利,看完后可领取! 最近好多新手学员运营小红书账号,可能会遇到这样的问题:发布的内容小眼睛少得可怜?搜索不到自己的笔记&…...

[动态规划] (十三) 简单多状态 LeetCode 740.删除并获得点数

[动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数 文章目录 [动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 740. 删除并获得点数 题目解析 (1) 给定一个整数数组。 (2) 选…...

【K-means聚类算法】实现鸢尾花聚类

文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类,并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言 例如:随着人工智能的不断发展,机器…...

什么是代理IP池?如何判断IP池优劣?

代理池充当多个代理服务器的存储库,提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务,而无需担心被检测或阻止的风险。代理池为各种在线活动(例如网页抓取、安全浏览等)提高后勤保障。 读完…...

【面经】讲一下线程池的参数和运行原理

线程池是Java中一种重要的并发工具,它可以帮助我们更好地管理线程,避免线程过多导致的系统开销和性能问题。线程池通过预先创建一定数量的线程,并将任务提交给这些线程执行,从而避免了频繁创建和销毁线程的开销。 线程池的参数主…...

针对图像分类的数据增强方法,离线增强,适合分类,无标签增强

针对图像分类的数据增强方法,离线增强,适合分类,无标签增强 代码: 改变路径即可使用 # 本代码主要提供一些针对图像分类的数据增强方法# 1、平移。在图像平面上对图像以一定方式进行平移。 # 2、翻转图像。沿着水平或者垂直方向…...

润色论文Prompt

你好,我现在开始写论文了,我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx,我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...