视频文本检索之CLIP4Clip

news2024/11/16 15:35:29

论文:CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval

GitHub:https://github.com/ArrowLuo/CLIP4Clip

论文基于图片-文本检索模型CLIP (Contrastive Language-Image Pretraining)提出了视频-文本检索模型CLIP4Clip (CLIP For video Clip retrieval)。在MSR-VTT, MSVC, LSMDC, ActivityNet, DiDeMo等多个数据集上都取得了SOTA的结果。

训练视频-文本检索任务通常有2种方法,一种直接基于视频像素特征进行训练(raw video pixel-level),另一种基于视频特征进行训练 (video feature feature-level)。

基于pixel-level的方法优点可以直接学习视频特征和文本特征,是一种端到端的训练方法,有助于提取底层特征,缺点训练视频特征是耗时费力的。比如ClipBERT提出了一种视频帧的稀疏采样策略,Frozen方法直接将一张图片当作一个视频进行训练,并提出了一种课程学习策略(curriculum learning schedule),来提高训练效率。

基于feature-level的方法优点训练较快,缺点高度依赖特征提取模型的预训练权重,会有domain问题产生。

(1)图片特征对于视频-文本检索是否足够?

单个的图片特征对于视频文本检索中的视频编码是远远不够的。

(2)基于大规模视频-文本数据集对clip模型进行后预训练会影响模型表现吗?

在大规模视频-文本数据集上对CLIP4Clip模型进行后训练是必须的,并且看可以提高模型性能,尤其是在0样本迁移学习中,精度上会有比较大的突破。

(3)有什么方法可以让模型学习视频帧之间的时序依赖?

论文提出了3种方法分别为,无参型(Parameter-free type),顺序型(Sequential type),紧凑型(Tight type),来学习视频帧之间的时许依赖。

(4)在视频-文本检索任务上,模型的超参数设置是否敏感?

论文认真进行了不同超参数设置的实验,汇报了最好的超参数设置。

网络结构:

给定一组视频(或视频片段)V和一组本文T,模型的目标是学习函数s(vitj)来计算视频(或视频片段)viV与本文tjT之间的相似度。视频采样策略采用1秒采1帧。根据文本到视频检索中的相似性得分对给定查询本文的所有视频(或视频片段)进行排序,或者在视频到文本检索任务中对给定查询视频(或视频片段)的所有文本进行排序。s(vitj)的目标是计算相关视频文本对的高相似度分数和不相关视频文本对的低相似度分数。

本文的模型是一种端到端方式(E2E),通过将帧作为输入直接对像素进行训练。上图展示了本文的框架,它主要包含一个文本编码器 、一个视频编码器 和一个相似性计算模块 

视频编码器:

视频编码模型类似clip采用ViT-B/32,网络深度为12层,包含32patch

虽然CLIP对于学习图像的视觉概念是有效的,但从视频中学习时间特征是必不可少的。为了进一步将CLIP的知识迁移为视频,作者用CLIP4Clip模型在Howto100M数据集上进行了后预训练。

通过将视频帧进行分patch,并结合位置attention输入ViT模型中,进行线性投影,得到代表视频的embedding向量。

 

这里将输入视频序列定义为V,视频生成的embedding定义为Z,文本的embedding定义为W。

这里线性投影的方法有2种,分别为2D线性投影和3D线性投影。

2D线性投影忽略了视频帧之间的时序关系,因此采用3D线性投影。两者主要的区别在于卷积核的选择上。2D线性投影卷积核的维度为[h× w],2D线性投影卷积核的维度为[t × h × w]。其中t表示时序,h表示高度,w表示宽度。

 

虽然理论上来说3D线性投影会优于2D线性投影。但是作者通过实验发现,反而2D线性投影效果更好。

通过分析发现预训练模型clip是基于2D线性投影训练的,却作为3D线性投影的初始化参数,这导致模型没有学习视频帧间的时序特征。这也是后续作者计划在大规模视频-文本数据集上训练clip模型的原因。

文本编码器:

文本编码器模型直接采用CLIP模型的Transformer网络。模型为12层,宽度为512,包含8个注意力头。将Transformer最后一层在[EOS]的输出作为文本的输出特征。

特征相似性度量:

论文提出了3种度量方法,分别为无参型(Parameter-free type),顺序型(Sequential type),紧凑型(Tight type)

将视频的特征定义为Z,文本的特征定义为W。

无参型(Parameter-free type):

 

先对视频的特征进行平均池化,然后将池化后的视频特征和文本特征计算cos距离。

顺序型(Sequential type):

直接对视频特征进行平均池化,这样的操作忽略了视频帧之间的序列关系。因此先对视频特征基于LSTM/Transformer编码,然后对编码后的特征进行平均池化操作,最后按照同样的方法计算cos距离。

紧凑型(Tight type):

将文本特征W和视频特征Z拼接起来,得到拼接后的特征U,并将U和位置编码P,类型编码T进行拼接,输入Transformer进行编码,然后使用2个全连接层做特征投影,得到最终的输出。

损失函数:

假设一个batch里面包含B 个(video, text)对。那么将会产生B*B种组合关系。这里损失函数采用对称交叉熵损失函数。损失函数就是优化使得video和text相对应的pair对loss变小,video和text不对应的pair对loss变大。

Lv2t会将batch内的每个视频计算与所有文本的交叉熵。

Lt2v会将batch内的每个文本计算与所有视频的交叉熵。

最终的损失函数L就是Lv2和Lt2v的和。

实验结果:

CLIP4Clip方法显著优于其他方法。

结论:

1)图像特征也能促进视频文本检索;

2)在CLIP上进行post-pretrain,可以进一步提高视频文本检索的性能;

3)3D patch线性投影和序列型相似度是检索任务中很有前途的方法;

4)用于视频文本检索的CLIP具有学习率敏感性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源硬件篇】STM32F103C8T6主控板

STM32F103C8T6主控板 文章目录 STM32F103C8T6主控板设计目标一、STM32F103C8T6核心板外围引脚电路1.1 原理图设计1.2 PCB设计用例 二、ISP一键下载电路设计2.1 原理图设计2.2 原理分析2.2.1 CH340电路选择2.2.2 ISP一键下载原理 2.3 PCB设计示例 三、串口通信电路3.1 原理图设计…

Jackson2JsonRedisSerializer使用及问题

1、使用 public static RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {lettuceConnectionFactory.setShareNativeConnection(false);RedisTemplate<String, Object> rt new RedisTemplate<>();// 设置…

嵌入式软考备考_6 嵌入式程序设计

嵌入式程序设计 开发流程 要想某个功能要用硬件还是软件实现&#xff08;硬件快&#xff0c;但是耗资源&#xff09;&#xff1f;BSP&#xff1f;裸机还是OS&#xff1f; 硬件的设计与实现-》设备驱动软件的设计与实现-》os的选择&#xff0c;移植&#xff0c;api接口函数的…

openGL 环境搭建

刚入坑&#xff0c;每个包、每个项目都得重新配一遍&#xff0c;实在烦人&#xff0c;由于网上已有很多教程&#xff0c;故在此只简要介绍。 比较通用的安装方法如下&#xff1a; 优先下载&#xff0c;对应vs版本&#xff0c;32位&#xff0c;已经编译好的库。如果下载的是源代…

2023 年Java经典面试题,基础篇02(持续更新)

本篇文章主要讲的是 2023 年Java最新面试题&#xff0c;持续更新中 原文地址&#xff1a;https://github.com/Snailclimb/JavaGuide 面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同&#xff1a; 面向过程把解决问题的过程拆成一个个方法&…

Git 配置多个SSH-Key

Git 全局配置 查看全局配置 git config --global --list git config --global user.name 删除全局配置 git config --global --unset user.name 1.生成ssh public key and private key open git base, 执行以下command&#xff0c;其中是keyname自己填&#xff1b;codeup…

java程序员容易被人误解?我来聊聊常见的三种情况

先说一下个人情况吧。21年来到深圳&#xff0c;现在马上工作满两年。我说程序员是一个容易被人误解的职业呢&#xff0c;可能在大部分人的印象里&#xff0c;程序员就是一个呆板、穿着格子衫、戴着厚厚的眼镜片、比较呆滞的一群人。其实这个印象可能是符合上个年代吧——程序员…

第二部分——长难句——第二章——复合句——第二节——定语从句

内容比较多&#xff0c;且比较重要 一&#xff0c;定语从句的概述 定语&#xff08;紧挨着名词&#xff09;礼让弱小&#xff0c;所以放在所修饰的名词后面。 法律是一种学科&#xff08;鼓励责任判定&#xff09;定语修饰 在翻译成中文的习惯&#xff0c;我们会把定语从句放…

倒计时|数字标准读书会—打破“信息孤岛”、拆除“数据烟囱”

业务与其他业务域间存在信息鸿沟&#xff0c;协作效率低下&#xff1b; 系统边界划分复杂混乱&#xff0c;技术标准不兼容&#xff1b; 新业务无法基于已有解决方案快速组装上线&#xff0c;迭代创新&#xff1b; …… 以上这些数字化转型痛点&#xff0c;你是否也遇到过&a…

家里网速越来越慢?路由器附近千万别放这几样东西

我们在日常生活中常常会使用到WiFi&#xff0c;当遇到网络卡顿、网速缓慢时往往感到疑惑&#xff0c;是不是自己的WiFi速度不够&#xff1f;其实除了无线路由器、终端等自身产品质量问题&#xff0c;还有许多外在因素。 在网络本身没有问题的情况下WiFi卡顿或不稳定&#xff0…

美国限制Unity和UE渲染引擎风险增加,数字孪生行业急需国产渲染引擎软件

数字孪生作为智能制造的关键技术之一&#xff0c;其应用已经从工业制造领域扩展到了城市规划、交通运输、农业等多个领域。然而&#xff0c;随着中美脱钩的持续进行&#xff0c;有关3D渲染引擎的“卡脖子”问题已经引起了行业的高度关注。 美国限制3D渲染引擎风险对数字孪生产…

linux中查看某个文件夹下文件的个数和大小

一、统计某个目录的文件和子目录的大小 1、stat指令 stat命令 主要用于显示文件或文件系统的详细信息&#xff0c;该命令的语法格式如下&#xff1a; -f  不显示文件本身的信息&#xff0c;显示文件所在文件系统的信息-L  显示符号链接-t  简洁模式&#xff0c;只显示…

强化学习p3-策略学习

Policy Network (策略网络) 我们无法知道策略函数 π \pi π所以要做函数近似&#xff0c;求一个近似的策略函数 使用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 去近似策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s) ∑ a ∈ A π ( a ∣ s ; θ ) 1 \sum_{a\in …

【Hive实战】数据仓库设计

数仓中的数据分层 文章目录 数仓中的数据分层维度模型维度建模下的主要概念维度表事实表 结合维度模型分析数据分层贴源层 &#xff08;Operation Data Store&#xff09;公共维度层 CDM&#xff08;Common Data Model&#xff09;数据细节层 DWD&#xff08;Data Warehouse De…

前端(移动端)学习笔记

PC端网页和移动端网页的区别&#xff1a; PC端屏幕大&#xff0c;网页固定版心移动端屏幕小&#xff0c;网页多数为100% 在谷歌浏览器中可以调试移动端网页的代码 屏幕尺寸&#xff1a; 屏幕尺寸指的是对角线的长度,一般用英寸来度量 分辨率&#xff1a; PC分辨率 1920*10…

31 - 买股票的最佳时机问题

文章目录 1. 买股票的最佳时机I2. 买股票的最佳时机II3. 最佳买卖股票时机4. 买股票的最佳时机III5. 买股票的最佳时机IV 1. 买股票的最佳时机I dp数组含义&#xff0c;本题两个状态&#xff1a;持有股票、不持有股票 dp[i][1] &#xff1a;表示第i天不持有股票所得最多现金dp…

最时髦的AI画画,一文包教包会

最时髦的AI画画&#xff0c;一文包教包会 大概半年前&#xff0c;AI 绘画工具 Disco Diffusion 从 Text-to-Image 开发社区和设计行业&#xff0c;火到了普通用户的视野中。即便它界面简陋&#xff0c;满屏英文和代码&#xff0c;也“劝退”不了人们。因为对那些没有任何美术功…

kali php无法执行,直接下载或显示php文件内容

问题描述&#xff1a; 开启apache或nginx&#xff0c;访问php文件要么直接显示php文件内容&#xff0c;要么直接下载&#xff0c;这都是php文件无法解析的问题&#xff0c;需要nginxphp-fpm解决 1、安装NGINX 查看是否安装&#xff0c;如下图则已安装 #apt-cache policy ngi…

Linux安装MinIO及springboot项目整合使用实战(详细)

以往的项目&#xff0c;用的比较多的OSS服务是腾讯云和阿里云的存储服务&#xff0c;不过从去年到今年&#xff0c;最近的几个项目&#xff0c;普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一、首先minio的安装 MInIO的安装有很多方法、单实例的、集群分…

Django学习——安装、创建项目、数据库、用户管理案例

目录 1、 安装django 1.1django是第三方模块&#xff0c;用pip install django 安装&#xff1a; 1.2 python的安装目录 &#xff1a; 2、创建项目 2.1在终端创建的步骤 执行过程 2.2使用pycharm&#xff08;企业版&#xff09;创建 django项目 2.3对比两种方式 2.4默认…