查看原文
其他

【源头活水】连接文本和图像的第一步:CLIP



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—凤舞九天

地址:https://zhuanlan.zhihu.com/p/427740816

论文链接
https://arxiv.org/pdf/2103.00020.pdf
github
https://github.com/openai/CLIP
最近CLIP比较火,身边人提到的也比较多,自己也开始尝试这篇论文,在这里做下记录。

01

数据
这里首先想说下数据,CLIP 能够成功,并且很难自己复现的一个重要原因就是CLIP用了大量的训练数据以及训练资源,真的可以说是大力出奇迹。CLIP用了400million的image-text pair对进行训练,对于image backbone,CLIP尝试了两种结构,DN50x64 和 vit-L,分别用了592 个 V100 + 18天 的时间 和 256 个 V100 + 12天 的时间,一般人就直接劝退了。我们在用的时候也要先load其开源出来的已经训练好的模型才能work,自己无论是训练数据还是训练资源都不足以支撑clip的从头训练。

02

算法原理
CLIP的基本算法原理相对比较简单,为了对image和text建立联系,首先分别对image和text进行特征提取,image特征提取的backbone可以是resnet系列模型也可以是VIT系列模型,text特征提取目前一般采用bert模型,特征提取之后,由于做了normalize,直接相乘来计算余弦距离,同一pair对的结果趋近于1,不同pair对的结果趋近于0,因为就可以采用对比损失loss(info-nce-loss),熟悉这个loss的同学应该都清楚,这种计算loss方式效果与batch size有很大关系,一般需要比较大的batch size才能有效果。
模型示意图:
伪代码:

03

个人理解
感觉CLIP也是一种多模态pretrain 方式,并且能够为文本和图像在特征域进行对齐,无论是在跨模态检索,还是在多模态 pretrain 方面,都有其用武之地。

04

应用
图像分类:
利用clip进行图像分类有两种方式,一种是直接利用zero-shot 方式进行预测,如下图所示,将text假设为 a photo of [object], 分别对image 和 text进行特征提取以及余弦距离,当object为目标类别时,相似度最高,即为预测结果,通过实验惊奇的发现,直接利用zero-shot 的方式进行预测能够达到76.2% 的acc,而且泛化性更好;还有一种方式就是再重新finetune,同样也是对类别设计几种不同的文本,这样效果能够达到sota的水平!
跨模态检索:
个人感觉CLIP提供了一种跨模态检索的方式,比如以文字搜图,其实这还是比较重要的应用。

05

总结
CLIP看起来简单,自己在实际用的时候发现效果也很好,美中不足就是太消耗训练资源,个燃感觉可以用类似moco的方式来减少对batch size的依赖。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存