900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 论文阅读笔记(五)CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval

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

时间:2023-04-11 03:25:28

相关推荐

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

Abstract

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

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

Introduction

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

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

文章贡献如下:

1.基于CLIP调查了三种相似度计算方法

2.在另一个大数据集上对CLIP做了训练来学习一个更好的检索空间

实验得出的结论如下:

(1) 一张图像对于视频检索是远远不够的

(2) 对CLIP在另一个数据集上进行训练对性能的改善是很重要的

(3)对于小数据集,无参类型(平均池化)的相似度计算方式更好,对于大数据集,使用更多的参数(自注意力等)来计算相似度更好。

(4)研究了超参数的设置

Framework

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

视频编码器

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

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

文本编码器

使用CLIP的文本编码器(transformer结构,12层,8个头,512维),对一个文本tj∈Tt_j\in \Tautj​∈T,最终生成特征表示wjw_jwj​。

相似度计算

在得到Zi={zi1,zi2,…,zi∣vi∣}Z_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}\}Zi​={zi1​,zi2​,…,zi∣vi​∣​},和wjw_jwj​后,最关键的就是计算相似度了,这里将相似度计算机制分为三类,无参方法(如平均池化,融合视频特征不需要参数),序列类型和密集类型。

无参类型:使用平均池化聚合出一个视频特征zi^=mean−pooling(zi1,zi2,…,zi∣vi∣)\hat{z_i}=\rm{mean-pooling}(z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert})zi​^​=mean−pooling(zi1​,zi2​,…,zi∣vi​∣​)。然后计算相似度如下:

s(vi,tj)=wjTzi^∥wj∥∥zi^∥s(v_i,t_j)=\frac{w_j^T \hat{z_i}}{\Vert w_j\Vert \Vert \hat{z_i}\Vert}s(vi​,tj​)=∥wj​∥∥zi​^​∥wjT​zi​^​​

序列类型:无参方法忽略了各帧之间的时间关系,这里使用LSTM或者transformer来将得到的各帧聚合起来Zi~=LSTM(Zi)\tilde{Z_i}=\rm{LSTM}(Z_i)Zi​~​=LSTM(Zi​)或者Zi~=Transformer−Enc(Zi+P)\tilde{Z_i}=\rm{Transformer-Enc}(Z_i+P)Zi​~​=Transformer−Enc(Zi​+P)(P是位置编码)。之后使用聚合的信息计算相似度即可。

密集类型:这里将Zi={zi1,zi2,…,zi∣vi∣}Z_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert}\}Zi​={zi1​,zi2​,…,zi∣vi​∣​}和wjw_jwj​作为输入,使用一个Transformer来得到融合特征Ui~\tilde{U_i}Ui​~​。

Ui={zi1,zi2,…,zi∣vi∣,wj}U_i=\{z_i^1,z_i^2,\dots,z_i^{\vert v_i\vert},w_j\}Ui​={zi1​,zi2​,…,zi∣vi​∣​,wj​}

Ui~=Transformer−Enc(Ui+P+T)\tilde{U_i}=\rm{Transformer-Enc}(U_i+P+T)Ui​~​=Transformer−Enc(Ui​+P+T)

P是位置偏移,T是嵌入类型(文本或者视频)。使用Ui~[0:]\rm\tilde{U_i}[0:]Ui​~​[0:]作为输出,并放入两个FC得到相似度。

s(vi,tj)=FC(RELU(FC(Ui~[0:])))\rm{s(v_i,t_j)=FC(RELU(FC(\tilde{U_i}[0:])))}s(vi​,tj​)=FC(RELU(FC(Ui​~​[0:])))

训练策略

损失函数:和CLIP相似,这里也是用交叉熵损失。

Lt2v=−1B∑i=1Blog⁡es(ti,vi)⋅λ∑j=1Bes(ti,vj)⋅λ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​=−B1​i=1∑B​log∑j=1B​es(ti​,vj​)⋅λes(ti​,vi​)⋅λ​ Lt2v=−1B∑i=1Blog⁡es(ti,vi)⋅λ∑j=1Bes(tj,vi)⋅λ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​=−B1​i=1∑B​log∑j=1B​es(tj​,vi​)⋅λes(ti​,vi​)⋅λ​ L=Lt2v+Lt2vL=L_{t2v}+L_{t2v}L=Lt2v​+Lt2v​

帧采样:使用统一采样而不是随机采样,每秒采样1帧。

预训练:为了进一步将CLIP的知识迁移到视频上,又在HowTo100M上进行了预训练。

Experiments

在五个数据集上进行了测试,MSR-VTT,MSVD,LSMDC,ActivityNet,,DiDeMo,发现小数据集上无参数计算方式最好。作者认为这是由于小数据集无法将参数训练好,反而破坏了预训练模型。

MSR-VTT

MSVD

LSMDC

ActivityNet

DiDeMo

2D和3D patch的对比:实验发现2D patch取得了更好的结果,作者认为这是由于CLIP是在图像-文本对上进行的预训练,当使用3DPatch时,难以初始化一个表现优秀的3D Linear,文中使用2D linear来初始化3D Linear,这很难学到时间信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。