赞
踩
目前开始了解多模态相关的知识,欢迎大家批评指正!
这篇论文来自2021年的International Conference on Machine Learning,整理该论文的主要内容,参考【论文阅读】CLIP:Learning Transferable Visual Models From Natural Language Supervision ------ 多模态,视觉,预训练模型_me_yundou的博客-CSDN博客Learning Transferable Visual Models From Natural Language Supervision - John_Ran - 博客园两篇文章。
论文题目:从自然语言监督中学习可转移的视觉模型
研究问题:将文本数据和图像数据相结合,提出了CLIP,用对比学习的方法对语言-图像预训练,这是一种高效、可扩展的自然语言监督学习方法。
研究思路:利用互联网上的图片,训练CLIP。在训练结束后,自然语言用来参照学习到的视觉概念,然后进行zero-shot transfer learning。
(1)首先是构建CLIP,CLIP实际上是一个预训练模型,包括文本编辑和图像编辑器两部分,分别计算文本向量和图像向量的相似度,以预测它们是否为一对,如图1所示。CLIP将图像和文本先分别输入一个图像编码器image_encoder和一个文本编码器text_encoder,得到图像和文本的向量表示 I-f 和 T_f 。然后将图像和文本的向量表示映射到一个联合多通道空间,得到新的可直接进行比较的图像和文本的向量表示 I_e 和T_e 。然后计算图像向量和文本向量之间的cosine相似度。最后,对比学习的目标函数就是让正样本对的相似度较高,负样本对的相似度较低。
图 1
CLIP联合训练图像编码器和文本编码器来预测一批(图像,文本)训练示例的正确配对。在测试时,学习的文本编码器通过嵌入目标数据集类的名称或描述,合成一个零镜头线性分类器。CLIP代码如图2所示:
图 2
(2)进行zero-shot transfer learning
研究过程:1.构建一个足够大的数据集-----》WebImageText(4亿个文本-图像对)
2.选择一个有效的预训练模型-----》CLIP
3.选择和缩放模型------》作者选择了两种模型,一个是ResNet-D,平滑了rect-2 blur pooling。将global average pooling用一个attention pooling来改进。其中这个transformer类型的层,是以global average-pooled representation作为query。第二 vision的结构是ViT,改动比较少:在patch embeding和position embedding结合之后,加了一个layer normalization。然后实现的时候,使用了一点不一样的初始化策略。
4.预训练------》训练的scale策略,5个ResNet,3个vit。ResNet-50, ResNet-101, RN50x4, RN50x16, and RN50x64。 ViT-B/32, a ViT-B/16, and a ViT-L/14。最后使用的 32,768的batch size。使用了gradient checkpoint。半精度。The largest ResNet model, RN50x64, took 18 days to train on 592 V100 GPUs while the largest Vision . Transformer took 12 days on 256 V100 GPUs。还有一个vit使用336的pixel resolution。
5.利用CLIP------》对于每个数据集,使用数据集中所有类的名称作为潜在文本对的集 合,并根据CLIP预测最可能的(图像、文本)对。此外,还尝试为CLIP提供文本提示以帮助指定任务,以及集成多个这些模板以提高性能。
数据集及实验结果:对于模型的表现,作者在27个数据集上进行了实验,发现在16个数据集上表现的更好:
主要创新:CLIP是一个预训练模型,就像BERT、GPT、ViT等预训练模型一样。首先使用大量无标签数据训练这些模型,然后训练好的模型就能实现,输入一段文本(或者一张图像),输出文本(图像)的向量表示。CLIP和BERT、GPT、ViT的区别在于,CLIP是多模态的,包含图像处理以及文本处理两个方面内容,而BERT、GPT是单文本模态的,ViT是单图像模态的。
总结:
关于CLIP的一些局限性:
作者认为,仅仅与baseline打平不是最终目标。因为与这些数据集完全监督的SOTA比起来,CLIP还打不过他们。需要将当前的计算量放大到1000x才能达到现在的SOTA,这在当前的硬件条件下是做不到的。
作者认为,CLIP在某些专用型特别强的task上不太work。比如,在一些细粒度的数据集上,或者一些比较抽象、对称的task。这些task的图片,在CLIP的pre-train的数据集上出现的比较少。作者认为,还有很多task上,CLIP是在瞎猜。
CLIP在很多自然的图片分布上效果不错,但是在一些真的out-of-distributiob的数据集上还是不太行,比如在OCR上。在rendered text上表现相当不错,因为这在CLIP的pre-training上十分常见。但是在手写数字体识别上就拉垮了,只有88%的准确率。因为从semantic和near-duplicate nearest-neighbor retrieval上没找到。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。