CLIP(对比语言-图像预训练)是一种在各种(图像、文本)对上训练的神经网络。可以用自然语言指示它在给定图像的情况下预测最相关的文本片段,而无需直接针对任务进行优化,类似于 GPT-2 和 3 的零样本功能。我们发现 CLIP 与原始 ResNet50 的性能相匹配在不使用任何原始 1.28M 标记示例的情况下,在 ImageNet 上“零样本”,克服了计算机视觉中的几个主要挑战。
本文提出的模型为Contrastive Language-Image Pre-training,简称CLIP,即对比学习语言-图像预训练模型,是通过对比学习训练的模型。因为预训练的数据集较大,所以采用对比学习提高效率。
CLIP主要特点是zero-shot,即不需要微调fine-tune,直接用于下游模型也有很好的效果。如在ImageNet数据集上,CLIP zero-shot的准确率可以达到监督训练的ResNet-50的效果。
CLIP也是学习NLP模型GPT-3,GPT-3在NLP领域就有zero-shot的能力。
CLIP采用的数据集有4亿个(图片-文本)对。数据规模可以和训练GPT-2的匹配。这份数据是从网络上爬取整理的,我们称这份数据为WIT(WebImageText)。
CLIP虽然zero-shot能力很强,但还是需要提高,比如离最好的监督模型还有距离,只是达到了ResNet-50的水平。
CLIP模块clip提供了以下方法:
clip.available_models()
返回可用 CLIP 模型的名称。
clip.load(名称,设备=...,jit=False)
返回模型和模型所需的 TorchVision 转换,由 clip.available_models() 返回的模型名称指定。它将根据需要下载模型。 name 参数也可以是本地检查点的路径。
可以选择指定运行模型的设备,如果有则默认使用第一个 CUDA 设备,否则使用 CPU。当 jit 为 False 时,将加载模型的非 JIT 版本。
clip.tokenize(text: Union[str, List[str]], context_length=77)
返回包含给定文本输入的标记化序列的 LongTensor。这可以用作模型的输入
我们正在引入一种名为 CLIP 的神经网络,它可以从自然语言监督中有效地学习视觉概念。 CLIP 可以应用于任何视觉分类基准,只需提供要识别的视觉类别的名称,类似于 GPT-2 和 GPT-3 的“零样本”功能。