论文笔记 FILIP Fine-grained Interactive Language-Image Pre-training

本文最后更新于:2023年6月25日 下午

论文笔记 FILIP Fine-grained Interactive Language-Image Pre-training

论文链接:FILIP: Fine-grained Interactive Language-Image Pre-Training (arxiv.org)

代码链接:无

华为、中山、香港科技大学的ICLR2022论文,介绍了一种非常简单的细粒度交互的对比学习方法,以patch和token级别进行对比学习,从而使训练出的FILIP模型得到优秀的细粒度特征和定位能力。

方法介绍

猫猫表情包赞🐱👍

下文用patch指代视觉的Token,而token就是文本的Token。

文章就改了一个loss,使用的CLIP的架构没有变化,最后一层的Patch输出不用[CLS],而是和Token一起计算一个Token-wise Similarity矩阵,假如Patch有kk个,Token有LL个,那么这个矩阵就是K×LK\times L

注意这个矩阵是一个样本内的相似度矩阵,而不是Batch级别的用来做对比学习的那个矩阵。原本对比学习是一个样本对有一个相似度值,现在则有一个K×LK\times L矩阵,需要将这个K,LK,L维度都消掉。

假如是image->text,那么就为每一个Patch找到最匹配的Token,然后使用所有Patch的相似度求平均以得到样本的相似度分数si,jIs^I_{i,j}

假如是text->image则相反,为每一个Token找到最匹配的Patch,然后平均得到si,jTs^T_{i,j}

由于进行了细粒度的对比,会带来更高的计算复杂度,所以Patch-Token会被映射到更小的256维再计算相似度,在多卡计算的时候,在计算出每个Patch最匹配的Token之后,会选择分数最高的25%的Patch与其他卡进行通信(对于Token也是取Top25%)。

实验

Table1是与CLIP的比较,总之就是更厉害。

Table2是zero-shot能力的比较,在COCO上效果好,在Flicker上应该更关注text-to-image的性能才对,但是它把更好的image-to-text放在了前面,感觉是比ALIGN略差。

经过微调之后,FILIP*的效果更好了,甚至比ALBEF更好。

不过ALIGN用了1.8B、CLIP用了400M,FILIP只用了340M数据,稍微比ALIGN差一些也合理。

但是FILIP又增加了一些计算复杂度,与ALIGN还是比较难比较。

ALBEF使用了ITC+ITM+MLM+Momentum+14.1M数据,loss计算更复杂,但数据更少,也很难比较。

Table3又展示了一下SOTA。

Table4展示这个细粒度的loss还是很有用的,而Table5显示在降低维度和优选Token之后,显存和训练时间就涨一点点。

Fig2的可视化效果还是很明显的,这种可视化也比较有趣,观察单词与Patch的匹配。(也不说匹配的概率多大,反正是最大看着就更好看)

附录还有更多的可视化如图,效果都很好。

结论

基本上是一个即插即用的比较优秀的Loss设计。