论文笔记 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有个,Token有个,那么这个矩阵就是。
注意这个矩阵是一个样本内的相似度矩阵,而不是Batch级别的用来做对比学习的那个矩阵。原本对比学习是一个样本对有一个相似度值,现在则有一个矩阵,需要将这个维度都消掉。
假如是image->text
,那么就为每一个Patch找到最匹配的Token,然后使用所有Patch的相似度求平均以得到样本的相似度分数。
假如是text->image
则相反,为每一个Token找到最匹配的Patch,然后平均得到。
由于进行了细粒度的对比,会带来更高的计算复杂度,所以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设计。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!