论文阅读笔记(五)CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval

Abstract

本文以CLIP模型为基础,通过迁移CLIP模型学到的知识,提出了CLIP4Clip(CLIP For video Clip retrieval)模型用于视频文本检索任务。主要研究以下问题:

  1. 图像特征是否足以用于视频检索中
  2. 对预训练好的CLIP进行训练会怎样影响检索结果
  3. 建模视频帧之间时间关系的实质是什么
  4. 视频检索任务中超参数的敏感性问题

Introduction

根据输入的不同,可以将视频检索任务分为两类(以原始视频作为输入或者以视频特征作为输入)。前者需要训练一个特征提取器,后者使用训练好的特征提取模型。

本文基于CLIP模型提出了一个CLIP4Clip模型用于视频检索。设计了一个相似度计算模块来验证三种相似度计算方式的效果(无参类型,序列类型,密集类型)。

文章贡献如下:
1.基于CLIP调查了三种相似度计算方法
2.在另一个大数据集上对CLIP做了训练来学习一个更好的检索空间
实验得出的结论如下:
(1) 一张图像对于视频检索是远远不够的
(2) 对CLIP在另一个数据集上进行训练对性能的改善是很重要的
(3)对于小数据集,无参类型(平均池化)的相似度计算方式更好,对于大数据集,使用更多的参数(自注意力等)来计算相似度更好。
(4)研究了超参数的设置

Framework

文章框架如下图,包含文本编码器、视频编码器和相似度计算模块。
CLIP4Clip模型

视频编码器

这里使用预训练的CLIP(ViT-B/32)作为视频编码器,对于视频帧序列 v i = { v i 1 , v i 2 , … , v i ∣ v i ∣ } v_i=\{v_i^1,v_i^2,\dots,v_i^{\vert v_i\vert}\} vi={vi1,vi2,,vivi},每帧产生一个特征表示 Z i = { z i 1 , z i 2 , … , z i ∣ v i ∣ } Z_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}\} Zi={zi1,zi2,,zivi}

这里还提出了另外一种Patch提取方式,如下图所示,使用3D卷积对视频提取出一个个patch,这样做的好处是利用到了时间信息。
Patch提取方式

文本编码器

使用CLIP的文本编码器(transformer结构,12层,8个头,512维),对一个文本 t j ∈ T t_j\in \Tau tjT,最终生成特征表示 w j w_j wj

相似度计算

在得到 Z i = { z i 1 , z i 2 , … , z i ∣ v i ∣ } Z_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}\} Zi={zi1,zi2,,zivi},和 w j w_j wj后,最关键的就是计算相似度了,这里将相似度计算机制分为三类,无参方法(如平均池化,融合视频特征不需要参数),序列类型和密集类型。
相似度计算机制
无参类型:使用平均池化聚合出一个视频特征 z i ^ = m e a n − p o o l i n g ( z i 1 , z i 2 , … , z i ∣ v i ∣ ) \hat{z_i}=\rm{mean-pooling}(z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}) zi^=meanpooling(zi1,zi2,,zivi)。然后计算相似度如下:
s ( v i , t j ) = w j T z i ^ ∥ w j ∥ ∥ z i ^ ∥ s(v_i,t_j)=\frac{w_j^T \hat{z_i}}{\Vert w_j\Vert \Vert \hat{z_i}\Vert} s(vi,tj)=wjzi^wjTzi^

序列类型:无参方法忽略了各帧之间的时间关系,这里使用LSTM或者transformer来将得到的各帧聚合起来 Z i ~ = L S T M ( Z i ) \tilde{Z_i}=\rm{LSTM}(Z_i) Zi~=LSTM(Zi)或者 Z i ~ = T r a n s f o r m e r − E n c ( Z i + P ) \tilde{Z_i}=\rm{Transformer-Enc}(Z_i+P) Zi~=TransformerEnc(Zi+P)(P是位置编码)。之后使用聚合的信息计算相似度即可。

密集类型:这里将 Z i = { z i 1 , z i 2 , … , z i ∣ v i ∣ } Z_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}\} Zi={zi1,zi2,,zivi} w j w_j wj作为输入,使用一个Transformer来得到融合特征 U i ~ \tilde{U_i} Ui~
U i = { z i 1 , z i 2 , … , z i ∣ v i ∣ , w j } U_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert},w_j\} Ui={zi1,zi2,,zivi,wj}
U i ~ = T r a n s f o r m e r − E n c ( U i + P + T ) \tilde{U_i}=\rm{Transformer-Enc}(U_i+P+T) Ui~=TransformerEnc(Ui+P+T)
P是位置偏移,T是嵌入类型(文本或者视频)。使用 U i ~ [ 0 : ] \rm\tilde{U_i}[0:] Ui~[0:]作为输出,并放入两个FC得到相似度。
s ( v i , t j ) = F C ( R E L U ( F C ( U i ~ [ 0 : ] ) ) ) \rm{s(v_i,t_j)=FC(RELU(FC(\tilde{U_i}[0:])))} s(vi,tj)=FC(RELU(FC(Ui~[0:])))

训练策略

损失函数:和CLIP相似,这里也是用交叉熵损失。
L t 2 v = − 1 B ∑ i = 1 B log ⁡ e s ( t i , v i ) ⋅ λ ∑ j = 1 B e s ( t i , v j ) ⋅ λ L_{t2v}=-\frac{1}{B}\sum_{i=1}^{B}\log \frac{e^{s(t_i,v_i)\cdot \lambda}}{\sum_{j=1}^{B}e^{s(t_i,v_j)\cdot \lambda}} Lt2v=B1i=1Blogj=1Bes(ti,vj)λes(ti,vi)λ L t 2 v = − 1 B ∑ i = 1 B log ⁡ e s ( t i , v i ) ⋅ λ ∑ j = 1 B e s ( t j , v i ) ⋅ λ L_{t2v}=-\frac{1}{B}\sum_{i=1}^{B}\log \frac{e^{s(t_i,v_i)\cdot \lambda}}{\sum_{j=1}^{B}e^{s(t_j,v_i)\cdot \lambda}} Lt2v=B1i=1Blogj=1Bes(tj,vi)λes(ti,vi)λ L = L t 2 v + L t 2 v L=L_{t2v}+L_{t2v} L=Lt2v+Lt2v

帧采样:使用统一采样而不是随机采样,每秒采样1帧。
预训练:为了进一步将CLIP的知识迁移到视频上,又在HowTo100M上进行了预训练。

Experiments

在五个数据集上进行了测试,MSR-VTT,MSVD,LSMDC,ActivityNet,,DiDeMo,发现小数据集上无参数计算方式最好。作者认为这是由于小数据集无法将参数训练好,反而破坏了预训练模型。
MSR-VTT
MSR-VTT结果
MSVD
MSVD实验结果
LSMDC
LSMDC
ActivityNet
ActivityNet
DiDeMo
DiDeMo
2D和3D patch的对比:实验发现2D patch取得了更好的结果,作者认为这是由于CLIP是在图像-文本对上进行的预训练,当使用3DPatch时,难以初始化一个表现优秀的3D Linear,文中使用2D linear来初始化3D Linear,这很难学到时间信息。
2Dvs3D

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值