【论文精读】CLIP 改进工作(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso、CLIP4clip、ActionCLIP)

系列文章目录

【论文精读】CLIP:Learning Transferable Visual Models From Natural Language Supervision 从自然语言监督中学习可迁移的视觉模型
【论文精读】VIT:vision transformer论文


一、CLIP回顾及应用

(一)CLIP模型的主要思想

CLIP的核心是通过对比学习的方式学习一个视觉-语言的多模态模型

  • 对比学习预训练: 文本和图片分别经过编码器得到特征。对角线上为n个正样本对,其他位置为n2-1负样本对。图片特征与文本特征建立了联系,此时模型从图片学到的特征可能不仅仅是图片本身的特征,还有文本的语义信息。
  • 数据集: openAI自建大规模的数据集WIT(webimage text)
  • zero-shot推理: 直接推理,用见过的图片特征去判断没见过的图片的类别,而完全不用下游任务训练集进行微调。(相当于把模型用作特征提取,但是没有分类头)

(二)CLIP模型的广泛应用

CLIP自提出以来,已经被用到了方方面面的工作里了:
在这里插入图片描述

二、CLIP用于分割任务

分割任务可以看成是将图片级别的分类换成了像素级别的分类,因此分类的新技术、新思路,一般可以直接用过来。

(一)LSeg:Language-driven Semantic Segmentation

1、主要思想

与 CLIP 实现 zero-shot 的方式类似,LSeg通过类别 prompt 作为文本输入,然后计算相似度,也实现了zero-shot 语义分割。LSeg的意义在于将文本的分支加入到传统的有监督分割的pipeline模型中,通过矩阵相乘将文本和图像结合起来了。训练时可以学到language aware(语言文本意识)的视觉特征,从而在最后推理的时候能使用文本prompt得到任意你想要的分割结果。

2、模型效果

给定一张图片,通过文本提示给出需要检测的类别,LSeg就可以实现对应的语义分割。
由下图可知,LSeg不仅能准确实现语义分割,而且能区分子类父类,对于图片中没有出现的语义信息,LSeg也不会随便找一个物体进行分割。
在这里插入图片描述

3、模型架构

LSeg模型实际上就是将文本的分支加入到传统的有监督分割的pipeline模型中

  • 与CLIP模型比较:只是将单个的图像文本特征换成语义分割中逐像素的密集特征;
  • 与传统的有监督网络比较:除了上方的文本编码器提取的文本特征,要与密集图像特征相乘来计算像素级的图文相似度之外,整个网络与传统的有监督网络完全一致。

在这里插入图片描述
模型整体的流程: 文本编码器提取 N × C N\times C N×C的文本特征,图像编码器提取 H ~ × W ~ × C \tilde{H}\times\tilde{W}\times C H~×W~×C的密集图像特征,二者相乘得到 H ~ × W ~ × N \tilde{H}\times\tilde{W}\times N H~×W~×N的特征,再经过 Spatial Regularization Blocks 上采样回原图尺寸。最后计算模型的输出与ground truth监督信号的交叉熵损失进行训练。

  • Image Encoder:DPT结构(使用了ViT进行有监督训练的语义分割模型,结构就是ViT+decoder),backbone可以是ResNet或者ViT。如果使用后者,其参数用的是Vit/DEit的预训练权重,直接使用CLIP的预训练权重效果不太好。
  • Text Encoder:直接用的是CLIP 文本编码器的模型和权重,并且训练、推理全程中都是冻结的。因为分割任务的数据集都比较小(10-20万),训练的话结果会不好。
  • Spatial Regularization Blocks 是文章提出的一个模块。在计算完像素级图文相似度后继续学习一些参数,可以进一步学习文本图像融合后的特征。模块由一些卷积和DW卷积组成(当加了两个模块时效果提升,加了四个模块后效果崩溃,作者未解释):
    在这里插入图片描述

4、总结

LSeg模型使用了CLIP模型的预训练参数,但是其目标函数不是对比学习,也不是无监督学习的框架,并没有将文本作为监督学习的信号使用。

模型在 7 个分割数据集上进行训练,这些数据集都是由有标注的分割图组成,所以模型是以有监督的方式进行训练的(损失函数是交叉熵损失而非无监督的对比学习目标函数)。推理时,可以指定任意个数、任意内容的类别 prompt 来进行 zero-shot 的语义分割。

(二)GroupViT:Segmantic Segmentation Emerges from Text Supervision

1、主要思想

GroupViT通过文本自监督的方式进行训练,从而实现简单的分割任务(不再像LSeg模型那样依赖于segmentation mask)。

视觉领域做无监督分割任务时,经常会使用grouping的方法。具体来说,如果有一些聚类的中心点,从这个点开始发散,将周围相似的点逐渐扩充为一个group,这个group就相当于一个segmentation mask。
在这里插入图片描述

2、模型架构

GroupViT是在一个已有的ViT框架中,加入了Grouping Block,同时加入了可学习的group tokens:

  • 输入包括经过了线性投影的图像编码和group token
  • 图像编码和group token经过transformer layers的自注意力去学习图像的patch分别属于哪个group token
  • 经过六个transformer layers之后,通过一个Grouping Block进行聚类分配,得到segment token
  • 为了进一步缩小分割的范围,又经过了三个transformer layers和一个Grouping Block
  • 模型的训练是通过图像文本对计算对比损失,为了使得最终的图像特征数和文本编码数匹配,上述得到的结果还会通过一个平均池化层
    在这里插入图片描述

grouping block:
用类似于自注意力的方式,先算了一个相似度矩阵,利用这个相似度矩阵去帮助image token做聚类中心的分配。这个过程是不可导的,因此使用了gumbel softmax将其转化为可导的。

模型的zero-shot推理:
对于给定的一个图片,经过GroupViT结构(图像编码器)得到group embedding,与此同时将标签通过文本编码器得到一系列文本特征,然后计算group embedding与文本特征之间的相似度,即可得到每个group embedding对应的class。
在这里插入图片描述

3、总结

GroupViT 图片分割做得好(segmentation mask生成的好),但是语义分割做的不够好,这是由于CLIP这种对比学习的训练方式,对于明确语义物体信息能学的很好;但是对于背景这种语义比较模糊类别很难识别,因为背景可以代表很多类。后续改进可以是每个类设置不同阈值,或者使用可学习的阈值,或者是更改 Zero-Shot 推理过程、训练时加入约束,融入背景类概念等等。

三、CLIP用于目标检测任务

(一)ViLD:Open-Vocabulary Object Detection Via Vision And Language Knowledge Distillation

1、主要思想

ViLD即Vision and Knowledge Language Distillation,将CLIP当成一个teacher蒸馏网络,从而达到能够zero-shot做目标检测的目的。简单来说,ViLD 想要做到的事情是:在训练时只需要训练基础类,然后通过知识蒸馏从 CLIP 模型中学习,从而在推理时能够检测到任意的新的物体类别(Open-vocabulary Object)。

在这里插入图片描述

2、模型架构

目标检测一般分为定位和分类,定位是指bonding box画的准不准,分类就是指bonding box中的物体判断的准不准

ViLD 方法的研究重点在两阶段目标检测方法的第二阶段,即得到提议框(proposal)之后。其思想还是最简单的分别抽取文本和图片特征,然后通过点积计算相似度。其模型结构如下图所示。

在这里插入图片描述

  • 图a:有监督的baseline方法(mask RCNN)
    • 根据一阶段得到的N个region proposal通过detection head得到region embedding,然后通过分类头得到预测的bonding box以及对应的类别,损失分为定位损失(回归损失)和分类损失。
  • 图b:ViLD-text分支
    • 将第一阶段得到的N个region proposal通过detection head,经过投影层、L2归一化后得到region embedding
    • Text Embeddings: 将物体类别(基础类)处理为prompt 句子就得到了文本,然后将这些文本扔给文本编码器得到Text Embeddings。和Lseg类似,这些Text Embeddings也是冻住权重的,不参与训练。
    • Back ground: 因为是有监督训练,所以需要额外添加一个背景类进行训练,即可学习的Background embedding,基础类之外的类别全部归位背景类。(上述物体类别就是Base categories,也叫CB,Class Base,和Mask R-CNN有监督训练的基础类一样,所以ViLD-text 做的还是有监督训练)
    • Text Embeddings加上分别和可学习的背景 embedding以及 region embeddings进行点积来计算图文相似度得到logics,然后计算logics和GT的交叉熵损失来进行训练。

ViLD-text 点积计算公式:

  • I I I表示图片, φ ( I ) φ(I) φ(I)表示抽取图片特征, r r r为proposals。 φ ( I ) φ(I) φ(I) r r r一起进行 R R R计算得到 e r e_r er(region embeddings,图片特征)
  • e b g e_{bg} ebg 表示背景embedding, t 1 t_1 t1 t ∣ C B ∣ t_{\left | CB \right |} tCB表示基础类CB的文本特征Text Embeddings。
  • 图像特征 e r e_r er​分别和背景特征 e b g e_{bg} ebg​和文本特征做点积计算相似度,最后得到 ViLD-text 模型输出 z ( r ) z(r) z(r)(logics)。 z ( r ) z(r) z(r)做softmax后和groud truth计算交叉熵得到这部分的损失。
  • Projection 层的引入是为了统一图像文本特征的尺寸。
    在这里插入图片描述

ViLD-text 分支只是将文本特征和图像特征做了关联(感觉到这里只是类似Lseg),模型可以做文本查询的 zero-shot 检测。但是由于模型还不了解基础类CB之外的其他语义内容(X新类别CN),因此直接做 zero-shot 的效果不会很好。

  • 图c:ViLD-image分支:引入CLIP特性,这部分只在训练时进行蒸馏,推理时不蒸馏。
    考虑到 CLIP的图片编码器训练的很好,而且和文本紧密关联,所以希望ViLD-image-encoder输出的region embeddings和CLIP输出的image embedding尽可能的接近,这样就可以学习到CLIP图像编码器中开放世界的图像特征提取能力。做到这一点的最简单方式就是知识蒸馏(Knowledge Distillation)。
    • 右侧teacher分支:将M个proposals resize到比如224×224的尺寸,然后输入预训练好的CLIP-image-encoder(冻结,不参与训练,保证抽出来的特征和CLIP一样好)得到M image embeddings
    • 左侧student分支:和ViLD-text 分支前面的结构一样,输入M个proposals 得到M个region embeddings
    • 计算region embeddings和 image embeddings的L1 loss来进行知识蒸馏,让检测器学习 CLIP 提取的特征。为了加速模型训练,在训练 ViLD-image 时先用 CLIP 模型提取好图像区域特征,保存在硬盘中,在训练时直接从硬盘读取即可。

ViLD-image分支的监督信号不再是人工标注的数据,而是CLIP的图像编码,所以就不再受基础类CB的限制了,对于任何的语义区域都可以由 CLIP 抽取图像特征。利用ViLD-image,大大加强了做Open-vocabulary检测的能力。

  • 图d:ViLD:ViLD-text 和 ViLD-image的合体
    为了训练简单,将M pre-complete proposals和N proposals一起输入检测头Head得到n+m个embedding,然后拆分为N region embeddings和M region embeddings。前者算ViLD-text 分支的交叉熵损失,后者算ViLD-image的蒸馏L1损失。

3、模型总览

训练过程:

  • 图片通过RPN网络得到proposals。然后经过RoIAlign和一些卷积层得到region embeddings,也就是图中 R 1 R_1 R1 R 2 R_2 R2
  • 基础类通过prompt得到文本,经过文本编码器得到文本编码 B 1 B_1 B1 B n B_n Bn​。然后和 R 1 R_1 R1​、 R 2 R_2 R2​一起计算交叉熵。
  • 将已经抽取好的M image embeddings输入CLIP图像编码器得到特征 I 1 I_1 I1​、 I 2 I_2 I2​,用它们对 R 1 R_1 R1 R 2 R_2 R2​进行蒸馏(计算L1损失)

推理过程:

  • 图片通过RPN网络得到proposals。然后经过RoIAlign和一些卷积层得到region embeddings,也就是图中 R 1 R_1 R1 R 2 R_2 R2
  • 基础类和新的类别通过prompt得到文本,经过文本编码器得到文本编码 B 1 B_1 B1 B n B_n Bn​、 N 1 N_1 N1 N k N_k Nk。然后和 R 1 R_1 R1​、 R 2 R_2 R2​做点乘计算。
    在这里插入图片描述

(二)GLIPv1:Grounded Language-Image Pre-training

1、主要思想

目标检测和分割一样,标注数据集都很贵,对于边边角角的类和层出不穷的新类,我们没有办法训练一个模型把这些都检测的很好。因此需要一个Open-vocabulary的目标检测模型来解决这个问题。而如果想训练一个很强的Open-vocabulary的目标检测模型,就只能像CLIP一样,可以利用上亿规模的的数据集,而且还要把图片-文本对应关系和定位都学的很好。

GLIP 模型统一了目标检测和定位两个任务,可以使用更多的数据集。再配合伪标签的技术来扩增数据,使得训练的数据量达到了前所未有的规模(3M人工标注数据和24M图文对数据)。最后训练出来的模型GLIP-L,直接以 zero-shot 的方式在COCO 和LVIS 上进行推理,mAP分别达到了 49.8 和26.9,可见其性能非常的强。

2、损失函数

目标检测的损失函数由分类损失和定位损失组成:
L = L c l s + L l o c L=L_{cls}+L_{loc} L=Lcls+Lloc

目标检测和Vision grounding的定位部分差不多,而 detection的标签是one-hot的类别单词,Vision grounding的标签是一个句子,因此二者的区别主要在于如何计算分类loss。

  • detection分类损失计算:
    图片经过 E n c I ​ Enc_I​ EncI图片编码器处理之后得到region embedding( O O O),然后通过分类头( W W W)得到分类的logits,使用nms将bounding box筛选一下,与GroundTruth计算交叉熵就得到了分类损失。

O = E n c I ​ ( I m g ) , S c l s ​ = O W T , L c l s ​ = l o s s ( S c l s ​ ; T ) O=Enc_I​(Img),S_{cls}​=OW^T,L_{cls}​=loss(S_{cls}​;T) O=EncI(Img),Scls=OWT,Lcls=loss(Scls;T)

  • Vision grounding分类损失计算:(其实和ViLD text分支一模一样)
    图片经过 E n c I ​ Enc_I​ EncI图片编码器处理之后得到region embedding( O O O),文本编码器 E n c L ​ Enc_L​ EncL处理prompt得到text embedding,将图像特征( O O O)和文本特征( P P P)相乘得到相似度结果 S g r o u n d ​ S_{ground}​ Sground,也就是论文中说到的region-word aligment scores。

O = E n c I ​ ( I m g ) , P = E n c L ​ ( P r o m p t ) , S g r o u n d ​ = O P T O=Enc_I​(Img),P=Enc_L​(Prompt),S_{ground}​=OP^T O=EncI(Img),P=EncL(Prompt),Sground=OPT

损失统一的方式:
在训练的时候,如果短语phrase都是正例( positive match)并且added tokens都是负例negative match(added tokens和任何图片的物体都无法匹配),那就使用subwords。测试时多个token的平均pro作为短语的probability。

3、模型框架

由于所有数据集都是有标注的,所以模型是以有监督的方式进行训练。计算得到文本特征与图像特征的相似度之后,直接与 GT box计算对齐损失alignment loss即可(和ViLD-text分支一样)。这样就完成了文本和图像的特征融合,就可以进行zero-shot检测了。而定位损失也是直接与GT box计算L1 损失。
在这里插入图片描述
模型中间的融合层(Deep Fusion)和LSeg的做法一样,都是为了使图像特征和文本特征进一步交互,使最终的图像-文本联合特征空间(joined embedding space)训练得更好(相似的embedding拉近,不相似的拉远),图像特征和文本特征被训练的更强更有关联性,这样后面计算相似度矩阵的效果肯定就更好。

(三)GLIPv2:Grounded Language-Image Pre-training

Vision-Language:语言-视觉任务

  • vision Caption:图像描述生成,根据一张图片生成描述性文本;
  • VQA:给定一张图片和一个与该图片相关的自然语言问题,计算机能产生一个正确的回答。文本QA即纯文本的回答,与之相比,VQA把材料换成了图片形式,所以这是一个典型的多模态问题;
  • Vision grounding:根据短语定位图片中对应的物体。

GLIPv2和GLIPv1架构基本一样,只是融合了更多的任务和数据集。比如定位任务不光有目标检测还有实例分割,Understanding任务包含了Vision grounding、vision Caption和VQA任务。

在这里插入图片描述

四、CLIP用于图像生成任务

(一)CLIPasso: Semantically-Aware Object Sketching

1、主要思想

保持语义信息的物体素描:研究从图片生成简笔画
在这里插入图片描述
CLIP图文配对学习的方式,使其对物体特别敏感,对物体的语义信息抓取的非常好;而且还有出色的zero-shot能力,完全不用在下游任务上进行任何的微调,拿过来就可以直接用,所以就有了CLIPasso。

2、模型训练

贝塞尔(贝兹)曲线是通过在平面上定义的几个点来确定一条曲线。
本文中,每条曲线是通过四个点来确定,每个点都有其x,y坐标,即 s i = { p i j } j = 1 4 = { ( x i , y i ) j } j = 1 4 ​ s_{i}=\left \{ p_{i}^{j} \right \}_{j=1}^{4}=\left \{(x_{i},y_{i})^{j}\right \}_{j=1}^4​ si={pij}j=14={(xi,yi)j}j=14
其中s是笔画Stroke的缩写,j从1到4表示其由4个点控制。

CLIPasso模型使用的方法就是随机初始化一些贝塞尔曲线,然后经过不停的训练,更改这些点的位置,从而更改贝塞尔曲线,得到最终的简笔画。

  • Rasterizer:光栅化器,图形学方向根据参数绘制贝塞尔曲线的一种方法,可导。这部分是以前就有的方法,不做任何改动。
  • 本文研究的重点:如何选择一个更好的初始化;以及如何选择合适的loss进行训练。

在这里插入图片描述

3、目标函数

生成的简笔画有两个要求,即在语义和结构上和原图保持一致。比如马还是马、牛还是牛;而且不能生成了马,但是马头的朝向反了,或者马从站着变成趴着。在 CLIPasso 中,这两个要求分别由两个损失函数——语义损失 L s L_s Ls​和几何距离损失 L g L_g Lg来保证。
在这里插入图片描述

  • L s L_s Ls​:semantics loss,计算原图特征和简笔画特征,使二者尽可能相似。

    • 由于CLIP模型具有稳健性,即无论在原始自然图像上还是简笔画上都能很好的抽取特征。因此可以使用CLIP模型蒸馏CLIPasso模型(类似ViLD),可以让模型提取到的图像特征和 CLIP 图像编码器提取的特征接近。(如果二者描述的是同一物体,那么编码后的特征都是同一语义,其特征必然相近。)
      在这里插入图片描述
  • L g L_g Lg:geometric distance loss,计算原图和简笔画的浅层编码特征的loss。

    • 借鉴了一些LowerLevel的视觉任务。因为在模型的前几层,学习到的还是相对低级的几何纹理信息,而非高层语义信息,所以其包含了一些长宽啊这些信息,对几何位置比较敏感。因此约束浅层特征可以保证原图和简笔画的几何轮廓更接近。(比如CLIP预训练模型backbone是ResNet50,就将ResNet50的stage2,3,4层的输出特征抽出来计算loss,而非池化后的2048维特征去计算)

在这里插入图片描述

4、初始化

如果完全随机初始化贝塞尔曲线的参数,会使得模型训练很不稳定。生成的简笔画有的既简单又好看,有的怎么训练都恢复不了语义,甚至就是一团糟,所以需要找到一种更稳定的初始化方式。

基于saliency(显著性)的初始化: 将图像输入ViT模型,对最后的多头自注意力取加权平均,得到saliency map。然后在saliency map上更显著的区域采点完成贝塞尔曲线参数的初始化,这样训练稳定了很多,效果也普遍好了很多。

  • 图a:基于saliency(显著性)的初始化生成结果(Proposed )比随机初始化的生成结果(Random)在脸部特征上更接近原图,头发也更加简约。而且初始化过程中的采点分布图和最终的简笔画图像已经非常接近了。
  • 图b:本文的一种后处理操作。CLIPasso对每张图生成三张简笔画,最后计算每张简笔画和原图的loss( L s + L g L_s+L_g Ls+Lg​),调出loss最低的一张作为最终结果(蓝色框)。
    在这里插入图片描述

(二)DALLE2: Hierarchical Text-Conditional Image Generation with CLIP Latents

【论文精读】DALLE2: Hierarchical Text-Conditional Image Generation with CLIP Latents

五、CLIP用于视频领域

(一)CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval

CLIP4Clip 模型以端到端的方式将CLIP模型的知识转移到视频语言检索中。

  • 将输入的文本(句子)tokenize后输入到text encoder中得到cls token
  • 视频则按照序列,将每一帧单独的分割成image patch输入到ViT中得到一系列的cls token
  • 作者尝试了三种相似度计算的方法:
    • parameter-free type:将图像cls token取平均后与文本cls token点乘(没有考虑时序信息)
    • sequential type:利用LSTM模型(transformer模型)保留图像中cls token中包含的时序信息
    • tight type:将文本编码和图像帧的特征一起输入transformer模型中
      在这里插入图片描述

(二)ActionCLIP: A New Paradigm for Video Action Recognition

1、主要思想

  • 传统的单模框架:视频输入到视频编码器中,通过分类头得到输出,将输出与标好的数据集的ground-truth进行对比。
  • 文章提出的多模框架:视频输入到视频编码器中得到video representations,文本通过文本编码器得到text representations,然后计算文本和图像之间的相似度,在得到相似度矩阵之后与提前定义好的ground truth计算损失(KL散度)就可以了。
    在这里插入图片描述

2、模型框架

在考虑多模态学习框架时,需要考虑标签词的不足。最直观的方法是利用大量的web图像文本或视频文本数据。为了迎合这一点,作者提出了一种新的 “预训练、提示和微调”(“pre-train, prompt and fine-tune”) 动作识别范式。

在这里插入图片描述

Pre-train预训练:
预训练过程中主要有三个上游预训练代理任务:

  • 多模态匹配(multimodal matching,MM):MM预测一对模态是否匹配。
  • 多模态对比学习(multimodal contrastive learning,MCL):MCL的目的是绘制彼此接近的成对单模态表示。
  • 掩蔽语言建模(masked language modeling,MLM):MLM利用这两种模态的特征来预测mask的词。

Prompt提示:

NLP中的Prompt意味着使用模板将原始输入修改为文本字符串提示,该提示有一些未填充的slot, 以填充预期结果。

在本文中,作者做了两种提示,文本提示(textual prompt )和视觉提示(visual prompt)。

  • 文本提示(textual prompt )对于标签文本扩展具有重要意义:给定个标签y,首先定义一组允许值,然后通过填充函数获得提示的文本输入,根据填充位置可以分为三种类型:
    • 前缀提示(prefix prompt)
    • 中间提示(cloze prompt)
    • 后缀提示(suffix prompt)
      在这里插入图片描述
  • 视觉提示的设计主要取决于预训练模型。如果模型在视频文本数据上进行了预训练,则几乎不需要对视觉部分进行额外的重新格式化,因为模型已经训练为输出视频表示。而如果模型是用图像文本数据预训练的,那么应该让模型学习视频的重要时间关系。形式上,给定一个视频x,作者引入了提示函数,其中是预训练模型的视觉编码网络。类似地,根据其工作位置分为三种变体:
    • 网络前提示(pre-network prompt):输入层面加入了时序信息
      在这里插入图片描述

    • 网络内提示(in-network prompt):特征图上做各种移动,达到更强的特征建模能力。
      在这里插入图片描述

    • 网络后提示(post-network prompt):其实就是CLIP4clip中的三种相似度计算。
      在这里插入图片描述

fine-tune微调:
当有足够的下游训练数据集(如Kinetics)时,毫无疑问,对特定数据集进行微调将大大提高性能。此外,如果提示引入了额外的参数,则有必要训练这些参数并对整个框架进行端到端地学习。

参考:
CLIP 改进工作串讲(上)【论文精读·42】
李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso)
CLIP串讲

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]:在CLIP模型中,注意力机制是通过计算查询(query)和键(key)之间的点积得到的。具体地说,通过使用torch.matmul函数计算query_layer和key_layer的点积,然后除以注意力头的大小的平方根来进行缩放。在计算注意力得分之前,还会对注意力进行反向操作,即将填充位置的注意力设置为一个很小的值(通常为-10000),这样在经过softmax操作后,填充位置的注意力几乎为0,从而不会对填充位置的信息进行关注。接下来,通过将注意力得分与值(value)进行矩阵相乘,得到上下文(context)层。最后,通过对上下文层进行维度变换和重塑,得到最终的上下文层。[1] 引用[2]:CLIP模型的性能通常与基于ResNet-50特征的线性分类器的监督基线相竞争。然而,目前的基线性能仍然远低于整体最先进水平,因此仍需要进一步的工作来提高CLIP模型的任务学习和迁移能力。根据估计,为了在评估套件中达到整体最先进水平,zero-shot CLIP需要增加大约1000倍的计算量。然而,目前的硬件条件下进行这样的训练是不可行的,因此有必要进一步研究提高CLIP模型的计算和数据效率。[2] 引用[3]:在zero-shot CLIP中,它略微优于基线,并在27个数据集中的16个数据集上取得了胜利。其中,STL10数据集是鼓励无监督学习的数据集,仅包含有限数量的标记示例。令人惊讶的是,zero-shot CLIP在STL10数据集上达到了99.3%的准确率,似乎创造了一个新的最先进水平。在细粒度分类任务中,zero-shot CLIP的性能差异较大。在Stanford Cars和Food101数据集上,zero-shot CLIP在ResNet-50特征上的表现优于逻辑回归超过20%,而在Flowers102和FGVCAircraft数据集上,zero-shot CLIP的表现不及逻辑回归超过10%。这些差异可能主要是由于WIT和ImageNet之间每个任务的监督数量不同所致。在"通用"对象分类数据集(如ImageNet、CIFAR10和PascalVOC2007)上,zero-shot CLIP相对于ResNet-50特征略有优势。此外,在衡量视频动作识别的数据集上,zero-shot CLIP明显优于ResNet-50。在Kinetics700数据集上,zero-shot CLIP的性能比ResNet-50高出14.5%。在UCF101数据集上,zero-shot CLIP的性能也优于ResNet-50的特征7.7%。这可能是因为相比于以名词为中心的对象监督,自然语言为涉及动词的视觉概念提供了更广泛的监督。[3] 综上所述,CLIP模型中的注意力机制通过计算查询和键之间的点积得到,然后进行缩放和softmax操作,以获得注意力得分。注意力得分与值进行矩阵相乘,得到上下文层。在zero-shot CLIP中,它在一些数据集上略优于基线,并且在某些细粒度分类任务和视频动作识别任务上表现出色。然而,为了进一步提高CLIP模型的性能,仍需要进行更多的研究和改进。[1][2][3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值