视频领域 CLIP4clip:An Empirical Study of CLIP for End to End Video Clip Retrieval

视频检索,CLIP4clip中CLIP指OpenAI的CLIP模型,clip指的是视频中的clip。CLIP模型很适合做Retrieval(检索)任务,因为它就是做图像和文本之间相似性,根据相似性可以去做ranking、matching以及retrieve等任务。而且由于双塔结构(图像文本编码器分开),得到的image embedding和text embedding做一步点乘就可以计算相似度,因此非常容易扩展

文本这边没什么区别,就是文本信息经过文本编码器得到text embedding。视频这边多了时间维度,由一个个视频帧组成。n个视频帧每一帧打成patch作为编码器输入,得到n个CLS Token(对应帧数)。一个文本特征对应n个图像特征。

本文是一个Empirical Study,就把以往的方法都尝试了一遍,选出来最好的。主要尝试了三种维度不匹配的相似度方式

第一种最简单的方式,不带任何参数(不需要学习),用了一个平均池化操作,在时间维度上取平均,这样文本信息和视频信息的维度就对应起来了,就可以计算相似度了。但是这种方法没有考虑时序的特性,也就是前后帧之间先后关系。例如一个人坐下和站起是两个相反的过程,但是使用平均池化的操作就很可能无法识别出两个动作的区别。即使如此,这种方式也是目前最被接受的方式。

第二种方式意在把时序性融合进去,时序建模常用LSTM,将n个帧的特征作为LSTM的输入,最后的输出就是与文本特征维度对应的一个特征,而且融合了时序信息。现在使用加入了位置信息(position embedding)的Transformer代替LSTM来提取具有时序信息的特征。

第二种方式融合的时候是Late Fusion,就是后期融合,文本和图像特征抽完之后再去融合。第三种方式就考虑将一个文本特征先和n个帧的视频图像特征融合,然后通过一个MLP去算相似度。这样不仅实现了时序信息的融合,还实现了文本和视频帧的融合。最后所有的特征(1个文本特征和n个视频帧的图像特征)都变成一个特征,然后去算相似度。

公式中T代表类别编码,有文本类别和视频帧类别两种,P代表位置编码。然后通过两个全连接层(FC)中间加一个Rule激活函数计算相似度。

在MSR-VTT数据集上结果如图,CLIP4clip的方法Recall 达到了40左右的结果,相较于其他方法提升了20多个点。

图b是zero-shot的结果,MIL-NCE的方法CLIP的方法进行比较,数据集规模分别是100million和400million,差不得不多。但是使用了CLIP直接zero-shot就有了31.2的点,比原来方法都要高。CLIP模型迁移性很好,直接拿来视频这边也表现很好。

图c主要是想说明M的数据量的情况,表a在7k个训练数据上训练,表c在9k个训练数据上训练。随着训练数据的增加,结果又能提升。对比三种求相似度的方式,在少量训练数据情况下,取平均的方式最好达到了42.1个点。因为CLIP在400million数据集上做预训练,如果下游任务数据不够多,不建议去做参数的改变,因此不带参数的平均池化的方式最有效。而随着训练数据的增加9k,采用带有位置编码的Transformer效果最好,达到了44.5个点。这种现象在其他数据集也有类似现象,Mean pooling效果一般是最好的。

结论,作者就是使用预训练好的CLIP在video text retrieval领域。首先,使用了三种计算相似度的方式,mean pooling的效果简单高效,早起融合的tighr type反而效果不好,这很可能是下游任务数据太少造成的过拟合等问题(下游任务数据少,模型非常复杂)。其次,图像转到视频,存在domain gap(域偏差),如果视频这边找到足够多的数据集再去预训练,这样迁移的效果会更好。另外,作者尝试了2Dpatch和3Dpatch(老师这里应该是口误了,原文表8以及4.7节说明了2Dpatch效果要好一些)。最后,CLIP用在video text retrieval领域学习率是一个非常敏感的参数。

原文中表8以及4.7节说明,我们认为3D patch能提取每一帧间的时序信息并生成更好的区分特征,因此3D patch会有更好的表现。但是结果与我们所期望的不一致,3D patch 产生了比2D patch更为糟糕worse的结果。作者也给出了解释,原因就是CLIP预训练就是在2D图像上预训练的,这种差异就造成了使用3D进行初始化时很难学到时序信息。

python的学习还是要多以练习为主,想要练习python的同学,推荐可以去看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费。

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网求职之前,先上牛客,就业找工作一站解决。互联网IT技术/产品/运营/硬件/汽车机械制造/金融/财务管理/审计/银行/市场营销/地产/快消/管培生等等专业技能学习/备考/求职神器,在线进行企业校招实习笔试面试真题模拟考试练习,全面提升求职竞争力,找到好工作,拿到好offer。icon-default.png?t=M85Bhttps://www.nowcoder.com/link/pc_csdncpt_ssdxjg_python

他们这个python的练习题,知识点编排详细,题目安排合理,题目表述以指导的形式进行。整个题单覆盖了Python入门的全部知识点以及全部语法,通过知识点分类逐层递进,从Hello World开始到最后的实践任务,都会非常详细地指导你应该使用什么函数,应该怎么输入输出。

牛客网(牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网)还提供题解专区和讨论区会有大神提供题解思路,对新手玩家及其友好,有不清楚的语法,不理解的地方,看看别人的思路,别人的代码,也许就能豁然开朗。

快点击下方链接学起来吧!

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网

参考:

参考:CLIP 改进工作串讲(下)【论文精读】_哔哩哔哩_bilibili

论文下载地址:https://arxiv.org/abs/2104.08860v2

猜你喜欢

转载自blog.csdn.net/weixin_45104951/article/details/127117272
今日推荐