论文笔记:LAFF 文本到视频检索的新基准
整理了ECCV2022 Lightweight Attentional Feature Fusion: A New Baseline for Text-to-Video Retrieval 论文的阅读笔记
- 背景
- 模型
- 问题定义
- LAFF(Lightweight Attention Feature Fusion)
- LAFF Block
- 实验
- 消融实验
- 可视化
- 对比试验
这篇文章提出了一种新颖灵活的特征融合方式,尽管很简单,但似乎是这一领域的经典基准之一,读了很多遍,感觉还是很有可取之处,所以写了这篇笔记。不过论文中提到的融合方法在其他领域不一定有效,需要根据实际情况调整。
背景
文本到视频检索是指从大量未标记的视频中直接检索到文本查询的视频。视频和文本都必须嵌入到一个或多个跨模态公共空间,以进行文本到视频的匹配。本文讨论如何融合来自不同模型提取的视频/文本表示,来获取最佳的匹配表示,这是文本到视频检索的一个重要但尚未充分探索的主题。
给定由不同特征表示的视频/文本样本,特征融合旨在回答一个基本的研究问题,即什么是组合这些特征的最佳方式?所谓最优,是指融合后的检索性能达到最大。同时,融合过程应该是可解释的,以解释单个特征的重要性。
模型
问题定义
本文提出了视频端和文本端的可训练特征融合。具体来说,对于一个特定的视频 x x x,可能获得一组 k 1 k_1 k1个视频级特征表示 f v , 1 ( x ) , … , f v , k 1 ( x ) {f_{v,1}(x),…,f_{v,k_1} (x)} fv,1(x),…,fv,k1(x),这些表示是使用不同的网络提取的。相似的,对于一个特定的文本查询 q q q,由一组 k 2 k_2 k2个句子级特征 f t , 1 ( q ) , … , f t , k 2 ( q ) {f_{t,1}(q),…,f_{t,k_2} (q)} ft,1(q),…,ft,k2(q)。作者的目标是构建两个特征融合块,融合这些特征形成视频和查询文本的 d d d维跨模态嵌入 e ( x ) e(x) e(x)和 e ( q ) e(q) e(q),这样,我们可以通过计算 e ( x ) e(x) e(x)和 e ( q ) e(q) e(q)之间的语义相似度进行文本-视频匹配,即:
e ( x ) : = f u s i o n v ( f v , 1 ( x ) , … , f v , k 1 ( x ) ) e(x):=fusion_v({f_{v,1}(x),…,f_{v,k_1} (x)}) e(x):=fusionv(fv,1(x),…,fv,k1(x)) e ( q ) : = f u s i o n t ( f t , 1 ( q ) , … , f t , k 2 ( q ) ) e(q):=fusion_t({f_{t,1}(q),…,f_{t,k_2} (q)}) e(q):=fusiont(ft,1(q),…,ft,k2(q)) s ( x , q ) : = s i m i l a r i t y ( e ( x ) , e ( q ) ) s(x,q):=similarity(e(x),e(q)) s(x,q):=similarity(e(x),e(q)) 对给定查询 q q q的文本到视频检索是通过根据 s ( x , q ) s(x, q) s(x,q)降序对测试集合中的所有视频进行排序来实现的。
LAFF(Lightweight Attention Feature Fusion)
本文提出了一个非常简化的特征融合块,称为轻量级注意特征融合(LAFF)。其结构如图所示,LAFF是通用的,可用于视频和文本端。

在特定的LAFF块中,使用学习到的组合权重来优化跨模态文本到视频的匹配。在特征级别进行融合,可以被视为一种早期的融合方法。同时,使用多头注意的技巧,可以在单个网络中部署多个LAFFs,并以后期融合方式将其产生的相似性组合在一起,进一步提升网络性能。
LAFF Block
对于要进行融合操作的 k k k个不同特征 f 1 , … , f k {f_1,…, f_k} f1,…,fk,由于不同的提取器可能具有不同的维度,首先要使用特征转换层将不同的特征校正为相同的长度。要将 i i i维特征转换为新的 d d d维特征,使用: f i ′ = σ ( L i n e a r d i × d ( f i ) ) f'_i=\sigma(Linear_{d_i×d}(f_i)) fi′=σ(Lineardi×d(fi)) 虽然转换后的特征{f ’ i}现在是可比较的,但它们对于表示视频/文本内容并不同等重要。因此我们考虑加权融合,即: f ^ = ∑ i k α i f i ′ \hat f=\sum^k_i\alpha_if'_i f^=i∑kαifi′,这些权重是通过一个线性变换和softmax函数得到的: { α 1 , . . . , α k } = s o f t m a x ( L i n e a r d × 1 ( { f 1 ′ , . . . , f k ′ } ) ) \{\alpha_1,...,\alpha_k\}=softmax(Linear_{d×1}(\{f'_1,...,f'_k\})) {α1,...,αk}=softmax(Lineard×1({f1′,...,fk′})) 如图1所示,当将权重强制为均匀时,即 a i = 1 / k a_i = 1/k ai=1/k时,无注意力特征融合块是LAFF的一种特殊情况。相对于这种情况(Attention-free), LAFF需要学习的参数更多,见表2。
LAFF可以作为融合函数被直接应用在文本到视频检索中。然而,由于视频和文本内容的高度复杂性,作者假设单一配置对于跨模态表示和匹配是次优的。借用MHSA的多头思想,通过部署 h h h对LAFFs,其中每对LAFFs共同确定视频文本匹配的潜在公共空间,设计了多头LAFF。具体来说,一个特定的LAFFs对,表示为 < L A F F v , i , L A F F t , i > <LAFF_{v,i}, LAF F_{t,i}> <LAFFv,i,LAFFt,i>,将视频/文本特征聚合到一个d维跨模态嵌入向量 e i ( x ) / e i ( q ) e_i(x)/e_i(q) ei(x)/ei(q)中,即: e i ( x ) : = L A F F v , i ( x ) e_i(x):=LAFF_{v,i}(x) ei(x):=LAFFv,i(x) e i ( q ) : = L A F F t , i ( q ) e_i(q):=LAFF_{t,i}(q) ei(q):=LAFFt,i(q) s i ( x , q ) : = 1 h ∑ i = 1 h s i ( x , q ) s_i(x,q):=\frac1h\sum^h_{i=1}s_i(x,q) si(x,q):=h1i=1∑hsi(x,q) 最终使用的相似度就是这些多头相似度的平均。这一结构如图2:

到目前为止,我们假设要融合的功能都在视频级。事实上,由于LAFF具有很高的灵活性,它可以很容易地扩展为多级变体,以处理不同帧级和视频级特征共存的情况。图3显示了这种变体,称之为 L A F F − m l LAFF-ml LAFF−ml。 L A F F − m l LAFF-ml LAFF−ml以自下而上的方式工作,其中一组特定的帧级特征通过特定的LAFF块聚合以产生视频级特征。假设有两个不同的帧级特征,例如clip和rx101。每个都有自己的LAFF块。(由此产生的)不同的视频特征然后通过视频级LAFF块融合。

实验
为了评估LAFF的有效性,作者在MSR-VTT上进行消融研究,以从多个方面评估LAFF。然后,将基于laff的检索模型与最先进的MSR-VTT和其他三个流行的基准(包括MSVD, TGIF和VATEX)进行比较。为了在更大的集合上评估,在TRECVID AVS基准系列上进行了评估。
消融实验使用了这些模型提取特征,如果是细粒度的,则进行平均池化。

消融实验
作者首先进行了消融实验,对于视频和查询文本两端,控制一端不变,只改变另一端的特征,通过逐步添加预训练模型来获得性能曲线,如图4:
为了比较特征融合块。通过将图2中的LAFF分别替换为MHSA和Attention-free来比较三种特征融合块。结果如表4所示,LAFF取得了最佳效果:

可视化
为了探索模型的可解释性作者对特征选择的LAFF权重进行可视化,图5显示了MV-test3k测试集中选择的视频及其相关字幕的LAFF权重。我们观察到,当视频内容包含更多的运动时,3D-CNN特征得到的权重更大,如图5(b)所示。对于每个特征,其权重在样本上的平均值反映了其对检索性能的贡献。作者用排名前三的视频/文本特征重新训练模型。与完整设置(mAP为0.358)相比,简化模型的mAP为0.353,这意味着性能损失相对较小,仅为1.4%。因此,LAFF权重有助于特征选择:

对比试验
作者进一步纳入MSVD、TGIF和VATEX。对于MSVD和TGIF,遵循他们的官方数据分割。对于VATEX,遵循HGR中使用的数据分割。对于MSR-VTT,除了官方的MVtest3k分割外,作者还报告了另一种流行的数据分割的性能,其中9k视频用于训练,1k用于测试。称之为分裂MV-test1k。实验结果如表7所示:

由于包含了更好的clip-ft特征,其性能比消融研究中报道的要好。基线(JE, w2vv++, SEA和MMT)比使用单个特征(clip-ft)得到的结果更差。结果表明,不能想当然地认为添加更好的特征就会产生更好的性能,需要对特征融合进行智能设计。所提出的LAFF在所有测试集上始终表现最好。LAFF-ml优于LAFF,说明在多个层次上灵活使用LAFF可以进一步提高性能。
相关文章:
论文笔记:LAFF 文本到视频检索的新基准
整理了ECCV2022 Lightweight Attentional Feature Fusion: A New Baseline for Text-to-Video Retrieval 论文的阅读笔记 背景模型问题定义LAFF(Lightweight Attention Feature Fusion)LAFF Block 实验消融实验可视化对比试验 这篇文章提出了一种新颖灵活的特征融合方式&#x…...
iSTFT 完美重构的条件详解
目录 引言1. 短时傅里叶变换(STFT)与逆变换(iSTFT)概述2. 完美重构的条件3. 数学推导4. 实现要点5. 示例代码6. 总结 引言 在数字信号处理领域,短时傅里叶变换(Short-Time Fourier Transform,简…...
SSH(安全外壳协议)可以基于多种加密算法
SSH(安全外壳协议)可以基于多种加密算法,确保数据的机密性和完整性。以下是 SSH 中常见的加密类型: 1. 对称加密 对称加密算法用于加密会话中的数据,常见的算法包括: AES(高级加密标准&#…...
Navicat 工具 下载安装
准备工作 下载 下载链接:https://www.123865.com/ps/EF7OTd-kdAnH 演示环境 操作系统:windows10 产品:Navicat 版本: 15.0.25 注意:如果需要其他版本可以自行下载。 安装步骤 1、解压(如果解压中出现提示…...
家用高清投影仪怎么选?目前口碑最好的投影仪推荐
双十一马上要到了,而且今年还有投影仪的家电国补,所以大家入手投影仪的需求也越来越多,但是家用高清投影仪怎么选?什么投影仪最适合家用?家庭投影仪哪个牌子质量最好?今天就给大家做一个2024性价比高的家用…...
阿里云盾同步漏洞之限制请求数
阿里云sdk不支持一次性请求太多,所以我们需要限制每次请求最大1000条,此代码无任何参考意义。仅做记录 func VulList(hole_type string) ([]*sas20181203.DescribeVulListResponseBodyVulRecords, error) {pageSize : 20allItems : make([]*sas20181203…...
docker安装kafka-manager
kafkamanager docker安装_mob64ca12d80f3a的技术博客_51CTO博客 # 1、拉取镜像及创建容器 docker pull hlebalbau/kafka-manager docker run -d --name kafka-manager -p 9000:9000 --networkhost hlebalbau/kafka-manager# 2、增设端口 腾讯云# 3、修改防火墙 sudo firewall-…...
Android Studio 新版本 Logcat 的使用详解
点击进入官方Logcat介绍 一个好的Android程序员要会使用AndroidStudio自带的Logcat查看日志,会Log定位也是查找程序bug的第一关键。同时Logcat是一个查看和处理日志消息的工具,它可以更快的帮助开发者调试应用程序。 步入正题,看图说话。 点…...
基于php摄影门户网站
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
uniapp中uni.request的统一封装 (ts版)
文章目录 前言一、我们为什么要去封装?二、具体实现1.创建一个请求封装文件:2.封装 uni.request:3.如何去使用? 总结 前言 在uniapp中如何去更简洁高效的发送我们的请求,下面就介绍了uni.request()二次封装。 一、我们…...
记录一次gRpc流式操作(jedis版)
使用背景: 从redis队列中发送和消费消息.(使用gRpc的流式实现的消费消息) gRpc协议类定义 service方法定义 service MQDataService{ rpc sendFacebookAndroidMsg(google.protobuf.StringValue)returns (ResultProto); rpc receiveFacebookAndroidMsg(empty)returns (stream g…...
20241001国庆学习
n60f/p 这个n是指旋转磁场的速度。 极数表示旋转转子的永磁体极数,具有一对N极/S极的电机称为双极电机。 极数可以是2、4、6、8等。 (从电机控制的角度来看,当极数增加一倍时,转速将减半,当极数增加四倍时…...
基于SSM的农产品仓库管理系统【附源码】
基于SSM的农产品仓库管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概要设计 4.2 系统功能结构设计 4.3 数据库设计 4.3.1 数据库E-R图设计 4.3.2 数据库表结构设计 5 系统实现 5.1 管理员功能介绍 5.1.1 用户管…...
fmt:C++ 格式化库
fmt 是一个现代化、快速且安全的 C 格式化库,专注于高效地格式化文本。它提供了类似 Python 的 format 功能,但具有更高的性能和类型安全特性。fmt 库在处理字符串格式化、日志输出以及构建用户友好的输出时尤为强大。自从 C20 标准引入 std::format 后&…...
RabbitMQ MQ的可靠性及消费者的可靠性
1.MQ可靠性: 如何保证消息的可靠性: (1).通过配置可以让交换机、队列、以及发送的消息都持久化。这样队列中的消息会持久化到磁盘,MQ重起消息依然存在。 (2).3.6.0版本开始,RabbitMQ引入了惰性队列模式,这种模式下&am…...
使用 Nexus 代理 Docker Hub 的配置指南
在本篇文章中,我们将详细介绍如何配置 Nexus 以代理 Docker Hub,从而实现更高效的镜像管理。以下步骤涵盖了从 Nexus 的安装到 Docker 客户端的配置。 1. 配置 Nexus 1.1 登录 Nexus 打开浏览器,访问 Nexus 的 URL(例如 http:/…...
笔记整理—linux进程部分(4)进程状态与守护进程
进程的几种重要状态,就绪态;运行态;僵尸态;等待态(浅度睡眠、深度睡眠);停止态。 就单核CPU而言,在同一时间只能运行一个进程,但实际上要运行的进程不止一个,…...
# VirtualBox中安装的CentOS 6.5网络设置为NAT模式时,怎么使用SecureCRT连接CentOS6.5系统?
VirtualBox中安装的CentOS 6.5网络设置为NAT模式时,怎么使用SecureCRT连接CentOS6.5系统? 一、查询 【VirtualBox Host-Only Network】虚拟网卡的网络配置 IP。 1、按键盘上WIN R 组合键,打开【运行】,输入【 ncpa.cpl 】&…...
7-1.Android SQLite 之 SQLiteDatabase 简单编码模板(SQLiteDatabase 使用、SQL 语句编写)
一、SQLiteDatabase SQLite 是一种轻量级的数据库引擎,它非常适合在移动设备(例如,Android)上使用 SQLiteDatabase 允许应用程序与 SQLite 数据库进行交互,它提供了增删改查等一系列方法 二、SQLiteDatabase 简单编码…...
灰度图像重心(质心)求取算法
1、图像的重心坐标计算 假设我们有一个二维图像,其中 (x, y) 表示图像中每个像素的坐标。I(x, y) 表示图像在 (x, y) 处的亮度(或像素值),通常是灰度值。 图像的重心坐标 (X, Y) 可以通过以下公式计算: X = Σ [x * I(x, y)] / Σ I(x, y) Y = Σ [y * I(x, y)] / Σ I(…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
