文章目录
- 1 CLIP(ICML2021,OpenAI)
- 1.1 预训练阶段
- 1.2 推理阶段
- 1.3 CLIP的下游应用
- 1.3.1 ViLD:zero-shot目标检测(2022, Google)
- 1.3.2 图像检索Image Retrival
- 1.3.3 HairCLIP:图像编辑Image Editing(2022,中科大)
- 2 TinyCLIP(2023, 微软)
- 2.1 亲和力蒸馏
- 2.2 权重继承
- 2.3 多段式渐进压缩
- 3 GLIP: grounded language-image pre-training(2022,微软)
- 3.1 如何统一两个任务
- 3.2 网络结构
1 CLIP(ICML2021,OpenAI)
参考资料:
- Paper:https://arxiv.org/pdf/2103.00020.pdf
- Github:https://github.com/openai/CLIP
- Blog:https://openai.com/research/clip
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,中科大)
- Paper:https://arxiv.org/pdf/2112.05142.pdf
- Github:https://zhuanlan.zhihu.com/p/480539824
- Blog:https://zhuanlan.zhihu.com/p/480539824
文章利用在大规模人脸数据集上预训练的StyleGAN作为的生成器。给定待编辑的真实图像,我们首先使用StyleGAN inversion方法得到其隐编码,然后我们的头发映射器根据隐编码和条件输入(发型条件、发色条件)预测隐编码相应的变化,最后修改后的隐编码将被送入StyleGAN产生对应的头发编辑后的图像。本质上是通过CLIP输出的embedding来指导图像的生成。
2 TinyCLIP(2023, 微软)
- Paper:TinyCLIP2023_ICCV_paper.pdf
- Blog:https://zhuanlan.zhihu.com/p/668468034
- 主要贡献
- 提出了一种名为TinyCLIPdd额d多模态蒸馏方法,主要包含:亲和力蒸馏和权重继承;
- 渐进式多阶段蒸馏方法;
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)=∑k∈Bexp(Ii⋅Tk/τ)exp(Ii⋅Tj/τ)AT2I(i,j)=∑k∈Bexp(Ik⋅Tj/τ)exp(Ii⋅Tj/τ)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,微软)
- Paper:https://arxiv.org/abs/2112.03857
- Github:https://github.com/microsoft/GLIP
- Blog:
- https://blog.csdn.net/qq_43687860/article/details/129357440
- https://developer.aliyun.com/article/1277345
主要贡献: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)是为了增加图像和文本之间的交互,让模型在浅层阶段就进行跨模态的学习;