首页 > 其他分享 >CLIP: Learning Transferable Visual Models From Natural Language Supervision

CLIP: Learning Transferable Visual Models From Natural Language Supervision

时间:2023-08-14 21:25:32浏览次数:52  
标签:Natural Language CLIP 模型 Encoder https 图像 文本

CLIP: Learning Transferable Visual Models From Natural Language Supervision

论文链接: https://arxiv.org/pdf/2103.00020.pdf

代码链接:https://github.com/openai/CLIP

blog链接 : https://openai.com/research/clip

CLIP的英文全称是Contrastive Language-Image Pre-training,即一种基于对比文本-图像对的预训练方法或者模型。CLIP是一种基于对比学习的多模态模型,与CV中的一些对比学习方法如moco和simclr不同的是,CLIP的训练数据是文本-图像对:一张图像和它对应的文本描述,这里希望通过对比学习,模型能够学习到文本-图像对的匹配关系。如下图所示,CLIP包括两个模型:Text Encoder和Image Encoder,其中Text Encoder用来提取文本的特征,可以采用NLP中常用的text transformer模型;而Image Encoder用来提取图像的特征,可以采用常用CNN模型或者vision transformer。

Abstract

最先进的计算机视觉系统经过训练可以预测一组固定的预定对象类别。这种受限的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从原始文本中学习图像是一种很有前途的替代方案,它利用了更广泛的监督来源。我们证明,预测哪个标题与哪个图像对应的简单预训练任务是一种有效且可扩展的方法,可以在从互联网收集的 4 亿(图像、文本)对的数据集上从头开始学习 SOTA 图像表示。预训练后,使用自然语言来引用学习的视觉概念(或描述新的视觉概念),从而实现模型零样本传输到下游任务。我们通过对 30 多个不同的现有计算机视觉数据集进行基准测试来研究这种方法的性能,涵盖 OCR、视频中的动作识别、地理定位和许多类型的细粒度对象分类等任务。该模型可以轻松地迁移到大多数任务,并且通常可以与完全监督的基线竞争,而无需任何数据集特定的训练。例如,我们在 ImageNet 零样本上匹配原始 ResNet-50 的准确性,而无需使用其所训练的 128 万个训练样本中的任何一个。我们在 https://github.com/OpenAI/CLIP 发布了我们的代码和预训练模型权重 。

1.Introduction and Motivating Work

2.Approach

2.1 Natural Language Supervision

与其他训练方法相比,自然语言学习有几个潜在的优势。

1、与常规图像分类标定相比,自然语言更容易扩展,因为其不像图像分类中标签为N个中1个最合适标签;可从大量互联网文本中学习;

2、与无监督、半监督方法相比,自然语言监督不只是学习表征,并且将表征与语言联系起来,从而实现zero-shot迁移;

2.2. Creating a Sufficiently Large Dataset

构建一个新数据集,包括4亿图像文本对,共50万个文本序列,每个文本序列对应多达2万个文本图像对 这些数据集是从互联网上的各种公开来源收集的

互联网4亿图文对,尽可能涵盖更多的视觉概念,使用50万个搜索词,为了类间平衡,规定每个搜索词对应的图像数量不超过2万个图文对。数据集的词语数量与训练GPT-2使用的数据集WebText体量相近。

2.3. Selecting an Efficient Pre-Training Method

训练效率是自然语言监督成功的关键;

现有预训练方法相似,都是预测text中准确单词,但是这种方案比较难,因为同一张图有各种各样描述。

虽然图像的生成模型可以学习高质量的图像表示,但它们需要比具有相同性能的对比模型多一个数量级的计算量。

使用的是对比学习的方法,做图文匹配的任务,计算相似度。给定batch=N的image-text pairs,CLIP预测NxN的概率(利用线性变换得到multi-modal embedding space的向量,点乘计算得到相似度),对角线即为正样本,其它都是负样本。

由于预训练数据集量大,因此过拟合问题不严重,而且训练过程图像编码器及文本编码器不需要预训练模型;

使用对称交叉熵(symmetric cross entropy loss,该Loss主要针对noisy label的问题,防止网络拟合到错误的label上?)来进行优化。

数据增强:
图像随机裁剪是训练过程使用的唯一一种数据增强;

img

实现细节:

  • 由于数据集很大,因此不用担心过拟合问题;
  • 没有加载预训练权重,完全从零开始训练;
  • 没有使用非线性激活函数,而是直接使用一个线性映射;
  • 没有使用文本数据增强(这里主要指从文本中选取一个句子),因为数据集中的文本只有一个句子;
  • 图像数据增强方面只使用了随机裁剪;

2.4. Choosing and Scaling a Model

CLIP训练过程如下,伪代码如图3,结构如图2;
1、给定一个batch,N个图像文本对;
2、CLIP预测N ∗ N 个可能对;CLIP学习多模态嵌入空间,通过联合训练图像编码器和文本编码器,最大化N个真实样本对,最小化N ∗ 2 − N N*2-NN∗2−N个不相关样本对

img

图像编码器:
ResNet50作为基线;
ResNet-D作为改进,替换全局池化为attention池化;
VIT,将patch和position embedding 结合后增加LN层;
文本编码器:
Transfoemer,结构依据 Radford《Language models are unsupervised multitask learners. 2019.》更改

其他

如何用CLIP实现zero-shot分类

  1. 根据任务的分类标签构建每个类别的描述文本:A photo of {label},然后将这些文本送入Text Encoder得到对应的文本特征,如果类别数目为N,那么将得到N个文本特征;
  2. 将要预测的图像送入Image Encoder得到图像特征,然后与N个文本特征计算缩放的余弦相似度(和训练过程一致),然后选择相似度最大的文本对应的类别作为图像分类预测结果,进一步地,可以将这些相似度看成logits,送入softmax后可以到每个类别的预测概率。

利用CLIP的多模态特性为具体的任务构建了动态的分类器其中Text Encoder提取的文本特征可以看成分类器的weights,而Image Encoder提取的图像特征是分类器的输入 具体可以参考 https://zhuanlan.zhihu.com/p/493489688

个人理解

构建一个很大的数据集

CLIP的价值在于,它可以应用在目标检测任务上,实现zero-shot检测!

CLIP模型拥有强大的特征抽取能力,强大到它可以将图像和任意的文本联系起来,你只需要简单地提供包含新类别的文本描述就可以使用该模型来识别新类别

CLIP是一种基于对比学习的多模态模型,希望通过对比学习,模型能够学习到文本-图像对的匹配关系

相似度直接计算文本特征和图像特征的余弦相似性(cosine similarity)

CLIP包括两个模型:Text EncoderImage Encoder,其中Text Encoder用来提取文本的特征,可以采用NLP中常用的text transformer模型

参考资料

https://www.cnblogs.com/lxmj/p/15945772.html

https://blog.csdn.net/qq_56591814/article/details/127421979

https://zhuanlan.zhihu.com/p/424259384

https://blog.csdn.net/qq_41994006/article/details/126085910

标签:Natural,Language,CLIP,模型,Encoder,https,图像,文本
From: https://www.cnblogs.com/tian777/p/17629770.html

相关文章

  • M3U8剪切板辅助下载工具软件SharpClipboard开源了
    M3U8剪切板辅助下载工具软件SharpClipboard开源了。大家可以据此改造出自己需要的功能。giteehttps://gitee.com/binghe021/sharp-clipboardgithubhttps://github.com/binghe021/SharpClipboard......
  • LLMOps(Large Language Model Operations)简介
    LLMOps是一个新兴领域,专注于管理大型语言模型的整个生命周期,包括数据管理、模型开发、部署和伦理等方面。HuggingFace、Humanloop和NVIDIA等公司正在引领这一领域的发展。HuggingFace的Transformers库已成为构建和微调各种NLP任务的大型语言模型的首选开源库。类似地,Humanloop......
  • Learning Transferable Visual Models From Natural Language Supervision
    LearningTransferableVisualModelsFromNaturalLanguageSupervision作者:AlecRadford*1JongWookKim*1ChrisHallacy1AdityaRamesh1GabrielGoh1SandhiniAgarwal1GirishSastry1AmandaAskell1PamelaMishkin1JackClark1GretchenKrueger1Ily......
  • eclipse.ini jvm 配置
    在eclispe的配置文件eclipse.ini中添加使用哪个jvm的配置:-startupplugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.400.v20160518-1444-productorg.eclipse.epp.package.je......
  • 使用MyEclipse如何部署Descriptor (XML)编辑器?
    Descriptor(XML)Editor编辑器包含了高级的XML编辑功能,在本文中您将了解到这些编辑功能、WebXML编辑等,此功能包含在MyEclipse中可用。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论1.WebXML编辑器MyEclipse WebXML编辑器包括高级XML编......
  • eclipse设置
    设置字体打开Window ——》 Preferences ——》General——》Appearance——》ColorsandFonts窗口,选择TextFont,点击Edit修改 2020.06.19class文件关联反编译打开Window ——》 Preferences ——》General——》Editors ——》FileAssociations窗口,修......
  • 在eclipse中使用Tomcat启动项目乱码
    修改tomcat的配置文件1)修改Tomcat的server.xml配置(config目录下)先找到第一处添加URIEncoding=“UTF-8”<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"URIEncoding="UTF-8"/>再找到第二处添......
  • eclipse安装svn
    一、在线安装打开eclipseMarketplace 搜索svn,点击install,安装subclipse 点击comfirm 选择accept,点击finish,等待安装完成,重启eclipse。 2020.04.22......
  • eclipse下载安装
    一、下载1.官网下载地址:https://www.eclipse.org/downloads/2.其他镜像下载地址:http://mirror.math.princeton.edu/pub/eclipse/technology/epp/downloads/release/2020-03/R/eclipse-jee-2020-03-R-incubation-win32-x86_64.zip二、安装1.exe文件安装暂无2.zip文件解压到安......
  • eclipse插件开发
    1.Eclipse简介和插件开发Eclipse是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环......