当前位置:   article > 正文

【大模型系列】图文对齐(CLIP/TinyCLIP/GLIP)_微软 glip

微软 glip

1 CLIP(ICML2021,OpenAI)

参考资料:

CLIP(Constrastive Language-Image Pre-training):是openAI在2021年ICML上提出的zero-shot视觉分类预训练模型(CLIP: Learning Transferable Visual Models From Natural Language Supervision),在无微调的情况下能在多个下游任务上取得不错的迁移效果。CLIP有效地借助了自然语言的监督来学习视觉概念。

CLIP方法的特点:

  • 利用互联网上存在的大量公开可用的无标注文本数据集,创建了一个包含4亿对的(图像-文本)的新数据集;
  • 基于成对的图片-文本数据,训练了CLIP模型;
  • 基于Transformer的统一视觉语言基础架构;

1.1 预训练阶段

网络输入的是图像-文字对,即每张图片配有一小句解释性的文字。将文字通过一个编码器(BERT)得到其向量表示,将图片也经过一个编码器(ViT)也得到一个向量表示,再将2个向量通过non-linear的projection head,投影到一个shared的空间,从而计算距离,然后再使用交叉熵计算损失。
在这里插入图片描述
在这里插入图片描述

假设一个batch输入N个图像-文本对:

  • 经过编码器之后,图像的特征向量维度为Nxdi,文本的特征向量维度为Nxdt
  • 两组特征向量分别经过一个非线性的映射空间,得到新的特征表达,维度都是Nxde
  • 映射后的特征矩阵相乘,得到两两之间的距离矩阵NxN
  • 沿着维度0计算交叉熵得到图像的loss,沿着维度1计算交叉熵得到文本的loss,两者的均值就是constrastive loss。

1.2 推理阶段

在这里插入图片描述
给定一张图片和一堆分类标签(如cat、dog等)

  • 利用文本编码器得到类别标签的向量表示
  • 利用图像编码器得到图像的向量表示
  • 分别计算这些标签与图像的余弦相似度,最终相似度高的即为预测分类的结果

1.3 CLIP的下游应用

1.3.1 ViLD:zero-shot目标检测(2022, Google)

  • Paper:https://arxiv.org/pdf/2104.13921.pdf
  • 推理阶段:将基本类别和新增类别转化成文本送入Pre-trained Text Encoder产生text embedding(图中的绿色和蓝色部分),再通过Mask R-CNN产生类别无关的region embeddings。然后将region embeddings和text embeddings进行点积然后再softmax归一化,取最大值的类别作为该区域的预测结果。
    在这里插入图片描述

1.3.2 图像检索Image Retrival

从图像集中选择与文本embedding余弦相似度最高的。

1.3.3 HairCLIP:图像编辑Image Editing(2022,中科大)

文章利用在大规模人脸数据集上预训练的StyleGAN作为的生成器。给定待编辑的真实图像,我们首先使用StyleGAN inversion方法得到其隐编码,然后我们的头发映射器根据隐编码和条件输入(发型条件、发色条件)预测隐编码相应的变化,最后修改后的隐编码将被送入StyleGAN产生对应的头发编辑后的图像。本质上是通过CLIP输出的embedding来指导图像的生成。

2 TinyCLIP(2023, 微软)

2.1 亲和力蒸馏

在这里插入图片描述
损失包含4个部分:

  • Student网络与gt的交叉损失:image-to-text和text-to-image
  • Student与Teacher网络的交叉损失:image-to-text和text-to-image

A I 2 T ( i , j ) = exp ⁡ ( I i ⋅ T j / τ ) ∑ k ∈ B exp ⁡ ( I i ⋅ T k / τ ) A T 2 I ( i , j ) = exp ⁡ ( I i ⋅ T j / τ ) ∑ k ∈ B exp ⁡ ( I k ⋅ T j / τ ) L distill  = L I 2 T + L T 2 I = C E ( A I 2 T s , A I 2 T t ) + C E ( A T 2 I s , A T 2 I t ) . A_{I 2 T}(i, j)=\frac{\exp \left(I_i \cdot T_j / \tau\right)}{\sum_{k \in \mathcal{B}} \exp \left(I_i \cdot T_k / \tau\right)} \\ A_{T 2 I}(i, j)=\frac{\exp \left(I_i \cdot T_j / \tau\right)}{\sum_{k \in \mathcal{B}} \exp \left(I_k \cdot T_j / \tau\right)} \\ \mathcal{L}_{\text {distill }} =\mathcal{L}_{I 2 T}+\mathcal{L}_{T 2 I} =C E\left(A_{I 2 T}^s, A_{I 2 T}^t\right)+C E\left(A_{T 2 I}^s, A_{T 2 I}^t\right) . AI2T(i,j)=kBexp(IiTk/τ)exp(IiTj/τ)AT2I(i,j)=kBexp(IkTj/τ)exp(IiTj/τ)Ldistill =LI2T+LT2I=CE(AI2Ts,AI2Tt)+CE(AT2Is,AT2It).

2.2 权重继承

手动继承: 直接选择网络的前k层;
自动继承: 通过设置可学习mask识别权重重要性。引入一个全局稀疏约束来保证重要参数的数目符合压缩要求。在MHA引入head mask、在FFN引入神经元mask、在embeding层引入embed mask。
在这里插入图片描述

2.3 多段式渐进压缩

当较多的权重被去除后(70%),模型性能会有显著的下降,为了缓解这个问题,本文提出渐进式蒸馏。分成G个阶段进行,每个阶段在前Lm step里做亲和蒸馏和继承训练(根据step更新当前稀疏度p,然后计算亲和力蒸馏损失,然后当前稀疏度p和目标稀疏q计算稀疏损失,然后更新mask和权重),然后将不重要权重移除,Lm后续的训练用亲和训练。
在这里插入图片描述

3 GLIP: grounded language-image pre-training(2022,微软)

主要贡献:GLIP统一了目标检测(Object detection)和定位任务(Grounding),构建了一个统一的训练框架。目标检测任务是给定一张图输出bounding box,定位任务是给定图片和文本,根据文本找出目标。

算法效果:进行zero-shot测试,不管是给定几个类别(apple,person等),还是给定一段话(there are some holes on the road)作为文本编码器的输入,GLIP模型都能从图像中找到对应目标的位置。
在这里插入图片描述

3.1 如何统一两个任务

目标检测与定位任务的目标函数都是由2个部分组成:分类损失和定位损失

L = L c l s + L b o x L = L_{cls} + L_{box} L=Lcls+Lbox

  • 定位损失:直接计算GT与预测框的Loss
  • 分类损失:
    • 目标检测任务:目标的region embedding通过分类头输出logits,再用nms筛选后与gt计算交叉熵;
    • 定位任务:文本编码特征text embedding与目标的region embeding计算相似性,再计算交叉熵;

如何统一:将目标检测object detection任务转化为定位grounding任务

  • 将检测任务的标签在分散后拼接成一句话,从而可以将目标检测任务转化为伪短语定位任务
  • 最后的loss的计算参考grounding任务

3.2 网络结构

在这里插入图片描述

  • 计算得到文本特征和图像特征的相似度后,直接与GT计算对齐损失Alignment loss,定位损失直接与GT框计算;
  • 中间的融合层(Fusion)是为了增加图像和文本之间的交互,让模型在浅层阶段就进行跨模态的学习;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/812236
推荐阅读
相关标签
  

闽ICP备14008679号