这里先开一个新栏目,把我读过的论文,都写一个1000字左右的读后感,记一下它的主要方法,与要点。
1.Prompt Switch: Efficient CLIP Adaptation for Text-Video Retrieval:t2v: 47.8 2023
论文:[2308.07648] Prompt Switch: Efficient CLIP Adaptation for Text-Video Retrieval (arxiv.org)
动机:作者从利用CLIP的图像编码器有效地捕获视频内部丰富语义出发,针对目前的大多数方法,都会把文本信息融入到视频帧中,导致计算量过大,于是就提出了如何进行离线视频计算,即不利用文本。
方法:论文有Prompt Switch ,Prompt Aggregation 与Auxiliary Captioning Head
Prompt Switch ,Prompt Aggregation:论文提出了一个Prompt Cube,,它就直接可以插在每一帧视频后面,视频帧的长度为,直接进入ViT里面进行计算,然后在每一个自注意力层之前做:
这样子就可以交换所有帧之间的信息了,例如Prompt Cube中可以实现第i帧与第j帧的通信
后续把Prompt Cube与class token进行一个多头,
总体上是对视频编码器进行了一个修改
后面那个Auxiliary Captioning Head没有看懂,先不写了
想法:这个方法角度很新,也很巧妙,但是很奇怪就是它的效果会随着挑选的帧数的增加先上升后下降。
2.Text Is MASS: Modeling as Stochastic Embedding for Text-Video Retrieval:t2v: 50.2 2024
动机:现有数据集中的文本内容普遍短小精悍,难以完整描述视频的冗余语义。作者提出了一个随机文本建模的办法T-MASS,来丰富语义。
方法:首先提出了一个随机文本嵌入
t是由clip得到的文本特征,是一个符合正态分布的随机向量,R这里被视为半径。具体计算为:
1)视频的每一帧都与文本特征进行了一次计算,得到相似度
2)将得到的S与一个全连接层进行计算,得到最后特征维度也为512
此外作者提出了一个新的损失函数
按照论文里面的说法,这个是放置在文本块表面,作为文本块的移动与缩放的代理。
感想:看了代码之后,感觉就是用视频来丰富语义,与x-pool差不多,一次用一个文本嵌入一个视频语义作为表达,作者总说随机,但是无论是训练还是测试的过程,都没有体会到作者说说的随机,在训练时作者采用了正例来聚合文本语义,而在测试的时候为了避免数据泄露,就用所有视频都对文本进行了一次聚合。还有就是作者所提出新的损失函数,我现在也没有get到作者的点。
3. CLIP-VIP: ADAPTING PRE-TRAINED IMAGE-TEXT MODEL TO VIDEO-LANGUAGE ALIGNMENT:t2v: 50.1 2023
动机:已有工作将图像表示迁移到视频领域,并取得了较好的效果。然而,将图像-文本预训练模型适应于视频-文本预训练(即预训练后)尚未显示出显著的优势,作者探索是什么阻碍了视频-文本预训练的性能,并且如何消除这些影响,把clip迁移到视频-文本预训中。
探索:作者首先是探索了不同的预训练数据集,最终选择了HD-VILA-100M,因为它的规模大,种类多。然后作者用NMI值来比较了预训练数据集与下游数据集(MSR-VTT,DiDeMo)的文本标签的差异,发现其值比较大,说明直接用预训练数据集的字幕会引入与下游任务的不一致性。
方法:
1. 域内辅助数据生成:作者受到前面的探索启发,将辅助字幕引入预训练的数据集中。作者引入了一个图像描述模型,为HD-VILA-100M每个视频中间帧生成一个字幕
2. 视频代理:这里作者以clip设计了一个新的视频编码器,抛弃了之前的一帧一帧的输入clip中,把所有的patch token+ proxy token 输入clip中,即T*N+M 个 tokens,首先对patch token加上时间与空间编码:
,有t帧,每帧有n个patch。
然后作者设计了一种注意力掩码,使得patch token 只关注 proxy token,而 proxy token 可以关注所有token。
如果 q或者k为 proxy tokens,或者 q , k都在同一帧中,否则为0
3. 全源跨模态学习
这里作者为了适应上面的方式,提出了一个新的损失函数这里V,F,S,C指视频,单帧,视频原来的字幕,生成的字幕有四种,分别为:,,,
思考:作者这篇论文确实很有启发性意义,但是为什么域内辅助数据生成会有效果呢,是对视频的一帧生成一句话,为什么可以减少下游的任务不一致性,不过,确实是很有效果,看到作者的实验
4. Improving Video-Text Retrieval by Multi-Stream Corpus Alignment and Dual Softmax Loss:tv2: 47.3 2021
看这篇论文是因为当初看到CLIP-VIP的实验里,用了这篇论文的DSL方法,发现效果很好,这里也主要是关注这篇论文的DSL方法。
动机:提出DSL是为了避免以往对比方法中出现的单向最佳匹配。通过引入批处理中每一对的内在先验信息,DSL作为修正器对相似度矩阵进行修正,实现对偶最优匹配。
方法:论文提出的DSL方法作用在损失函数上,以往的损失函数一般是交叉熵损失,如下
而这里DSL就是做了一点点改动,它引入了先验知识来修正相似度得分:
思考:作者这里的先验知识是干什么用的呢,说白了以往我们进行相似度计算的时候,都只有一个相似矩阵,这里可以看作它对那个相似度矩阵进行了修正。比如我们做视频检索文本的时候,即有sim(i ,j),它这里把它乘以了文本j对所有视频的softmax即,这里就是论文里面说的作用,突出了v2t与t2v都很高的那个,而这里关于它的使用在giithub上引起了讨论,因为它是对相似度矩阵进行了修正,那是不是可以用在测试中呢?虽然这样子不符合实际情况,但是这样子效果确实是好,按照论文里面的说法,只是用在损失函数中。但是个人觉得也是可以用在测试当中的
5. DGL: Dynamic Global-Local Prompt Tuning for Text-Video Retrieval:t2v:45.8 2024
动机:尽管像CLIP这样的预训练模型在这一领域显示出了令人印象深刻的潜力,但由于模型大小不断增加,完全微调这些模型的成本不断上升,仍然是一个问题。为了解决这一挑战,提示调优作为一种替代方案出现了。然而,现有工作在将预训练图像-文本模型适应下游视频-文本任务时仍面临两个问题:(1)视觉编码器只能编码帧级特征,未能提取全局级通用视频信息。(2)为视觉和文本编码器提供分离的提示,未能缓解视觉-文本模态差距。于是提出DGL,一种融合全局局部视频注意力的跨模态动态提示微调方法。
方法:提出的框架有:a local prompt generation module, a text encoder, and a visual encoder。
在文本编辑器里有:文本前缀提示(prefix text prompts):
后缀文本提示(postfix text prompts ):,
i是第 i 层。
视频编码器:全局提示(global prompts):
帧提示(frame prompts):
然后Unified Prompt Transformer:
,这样子实现了文本特征与视频特征的跨模态对齐
文本编码器有:
视频编码器:
随后作者为了关注全局特征与局部帧级特征,设计了两种方式:
Local Frame Attention:
Global Video Attention:
作者用输出的第一个global prompt来代表视频特征,上述的全局注意力与局部注意力共享参数,在训练时候,冻结了文本编码器与视频编码器。
感想:作者将文本编码器与视频编码器交互提取特征的思路值得借鉴,可惜作者冻结了clip的参数,不知道如果不冻结,效果会怎么样,具体的实现,还要看一下具体的代码。