当前位置:   article > 正文

12、CLIP:Learning Transferable Visual Models From Natural Language Supervision_clip transformer

clip transformer

简介

论文:https://arxiv.org/pdf/2103.00020.pdf
主页:https://openai.com/blog/clip/
代码:https://github.com/openai/CLIP

CLIP从名字可以看出是利用了自然语言监督实现的多模态预训练模型,延续了GPT系列的“大力出奇迹”的传统。模型以图像与自然语言潜在向量的相似度计算来构建训练目标。OpenAI采集了超过4亿的图像-文本对。CLIP在很多多模态任务上取得了非常好的效果,例如:图像检索、地理定位,视频动作识别等待,并且在很多任务上仅仅通过无监督学习就可以得到和主流的有监督算法接近的效果。

实现原理

在这里插入图片描述
核心概念就是将图像和文本映射到同一个特征空间,这个特征空间是一个抽象的概念,例如:例如当我们看到一条狗的图片的时候,我们心中想的是狗,当我们读到狗的时候我们想的也是狗,那么我们心中想象的狗,便是“特征空间”。图像编码器:用于将图像映射到特征空间。文本编码器:用于将文本映射到相同的特征空间。

从上图可以看到,CLIP实现思想十分简单。n个图像经过一个Image Encoder得到潜在特征向量,n个文本经过一个Text Encoder。只有对角线上图像和文本是一对,其他都是负样本,这里相似度的计算使用的是向量内积,这样就有n个正样本和 N 2 N^2 N2-n个负样本组成损失函数,另外,因为不同编码器的输出的特征向量长度不一样,CLIP使用了一个线性映射将两个编码器生成的特征向量映射到统一长度

伪代码也十分简洁明了
在这里插入图片描述

图像编码器

CLIP的图像编码器选择了5个不同尺寸的残差网络以及3个不同尺寸的ViT,并对模型细节做了调整

残差网络
CLIP采用了ResNet-50作为基础模型,并在其基础上做了若干个调整

  • 引入了模糊池化:模糊池化的核心点是在降采样之前加一个高斯低通滤波;
  • 将全局平均池化(Global Average Pooling)替换为注意力池化,这里的注意力是使用的Transformer中介绍的自注意力(Self-Attention)。

CLIP采用的Transformer共有5组,它们依次是ResNet-50,ResNet-100以及按照EfficientNet的思想对ResNet-50分别作 4倍,16 倍 和 64 的缩放得到的模型,表示为ResNet-50x4,ResNet-50x16,ResNet-50x64。

Vision Transformer

CLIP的图像编码器的另一个选择是ViT,这里的改进主要有两点

  • 在patch embedding和position embedding后添加一个LN
  • 换了初始化方法

ViT共训练了ViT-B/32,ViT-B/16以及ViT-L/14三个模型

文本编码器

CLIP的文本编码器使用的是Transformer,它共有12层,512的隐层节点数以及8个头。

zero-shot prediction

在这里插入图片描述
当训练完模型之后,CLIP模型的效果实现了图像和文本向同一个特征空间映射的能力。当进行图像识别时,将待识别的图像映射成一个特征向量。同时将所有的类别文本转换成一个句子,然后将这个句子映射成另外一组特征向量。文本特征向量和图像特征向量最相近的那一个便是要识别的目标图像的类

效果

在这里插入图片描述
在这里插入图片描述

CLIP的主要优点有:

  • 训练高效:CLIP采取了对比学习的训练方式,可以在一个大小为N的batch中同时构建
    个优化目标,实现简单快捷,计算高效。此外CLIP的对比学习的训练方式也比基于Image Caption构建的预训练任务简单很多,模型的收敛速度也快了很多;

  • 方便迁移:CLIP图像对应的标签不再是一个值了,而是一个句子。这就让模型映射到足够细粒度的类别上提供了可操作空间。由此我们也可以对这个细粒度的映射进行人为控制,进而规避一些涉黄,涉政,涉种族歧视等敏感话题;

  • 全局学习:CLIP学习的不再是图像中的一个物体,而是整个图像中的所有信息,不仅包含图像中的目标,还包含这些目标之间的位置,语义等逻辑关系。这便于将CLIP迁移到任何计算机视觉模型上。这也就是为什么CLIP可以在很多看似不相关的下游任务上(OCR等)取得令人意外的效果。

CLIP的主要缺点有:

  • 数据集:虽然CLIP采取了4亿的图像文本对的数据集,但这4亿的图像文本对并未对外开源。且构建这4亿数据的5万条查询语句介绍的也不详细。而且从它介绍的数据集构建方式来看,它的这种构建数据集的方式还略显单薄,而整个计算机视觉任务是非常庞大且复杂的。如何构建一个分布更合理且全面的数据集是一个非常值得探讨的方向。

  • 通用效果:CLIP在论文和它的官方网站上也说了CLIP的一些缺点,例如更细粒度的分类任务,数据集未覆盖到的任务上的表现。这些从本质上来看还是说明了CLIP还是一个有偏的模型。目前看来仅仅通过它的4亿条数据以及对比学习预训练还不足以让模型学习到在NLP上那些通用的能力,这一方向也亟待提升。

  • 夸大零样本:CLIP在论文中以及一些宣传上,有些过分夸大它零样本学习(zero-shot
    learning)的能力。从它的模型效果来看,CLIP还是通过庞大的数据集来尽可能的覆盖下游任务,而它在未见过的数据上表现非常不理想。我认为这种通过庞大的数据集覆盖尽可能多的任务的训练方式,并不能证明模型的零样本学习的能力。因为在更传统的计算机视觉中,零样本更应该是DBM这类生成模型才有的效果。

总结

CLIP是一个OpenAI特色非常重的文章,一是表现在它采集了大量的数据以及使用了大量的训练资源,二是不是非常侧重算法上的创新。这充分体现了目前搞预训练正逐步成为企业垄断的方向,表现在无论是数据,还是计算资源,都是个人和小机构无法承担的。CLIP的技术突破不大,但是效果非常惊艳,作为多模态预训练的算法之一,充分证明了这个方向庞大的科研潜力,起到了抛砖引玉的作用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/958213
推荐阅读
相关标签
  

闽ICP备14008679号