CLIP做了哪些事情?
当我们做图像分类的时候,会在网络的最后面接一层全连接输出该图像属于各类的概率。
当我们加入CLIP的时候,我们把类别(比如二分类的猫和狗)代表的文字,编码成向量了,同时图片也编码成向量,现在比较图像和哪个类别的向量更近(如何计算距离是要讨论的事情)。
所以现在图像分类变成图文匹配,这个文
代表标签
CLIP应用?
图像检索、视频理解、图像生成等现在热门的领域
我们知道对于多层卷积神经网络来讲,前面部分的卷积层倾向于提取一些普遍的、共有的视觉特征,如纹理、边缘等信息,而越往后则越倾向于任务相关的特征,比如类别信息,所以我们似乎可以将视觉任务进行分离,常说的backbone和head(backbone用于特征提取,head是目标检测中的检测头)就是如此
而在NLP领域,我们的思想也正是如此,先用模型去大规模语料中学习共同的语义表征能力,之后再像视觉任务一样学习有关于任务的特征,这一步叫做微调。
通常的视觉任务中,我们要拟合数据,让数据和标签尽量能够很好的对应上,这种感觉像是给他们之间画上一条条线。现在我们有另外一种办法,我们不去画线了,我们把数据和对应标签的距离缩小!(上面说了,一个合适的距离也是我们要讨论的方向)这种方法叫做对比学习
现在标签就像一个个小房子一样,而数据就像流浪在外的孩子,我们不再去一一对应的画线,我们只是让有家的孩子离家更近,同时也让孩子尽量不要离别人家太近。
在一些模型中使用了这样的办法
对于在NLP领域的一些经典做法,能够带给我们一些启示:如果我们能够把不同模态的数据转化到同一种形式,并通过距离度量来建立不同模态数据的对应关系,那么我们将可以利用多个模态的数据来完成更加复杂的任务
CLIP由此诞生
Clip(Contrastive Language-Image Pretraining) 将语言信息和图像信息联合训练,实现了在下游任务上 zero-shot(Zero-shot learning 指的是在没有当前类别的训练样本的情况下,让模型学习到一个映射关系可以将这个样本映射到原有的向量空间,再通过向量空间中距离判断的方式推断出当前没有看过的样本可能会属于哪一类别) 的能力。具体来说,CLIP将图像的分类任务转化为了图文匹配的任务,将图像信息和语义信息映射到同一多模态语义空间下,再使用对比学习的方法进行训练。
在预训练阶段,模型的数据来源为从互联网上搜集的4亿个(图像,文本)对。假设batch中有N个(图像,文本)对,那么我们便可以得到N个文本向量,记为:t1,t2,…,tn,以及N个图像向量,记为img1,img2,…,imgn。我们需要做的就是让t(i)与img(i)之间的语义距离尽可能接近,而与其他的img之间的距离尽可能拉远。如果我们将其看为一个矩阵,其中横轴方向为文本,纵轴方向为图像,且文本、图像的标号均按照次序排列,那么我们就可以得到一个N * N的方阵,方阵的每个元素(i,j)的位置为t(i)与img(j)之间的语义相似度,相似度可通过余弦或点积的方式获得。我们的优化目标就是让对角线上的元素的值尽可能的大,而其余部分的值尽可能地小。
在zero shot阶段,我们可以根据上下文语义建立prompt模板,并将标签集合映射到该模板中,得到prompt text模板。比方说,现在我们需要做对(大象,冰箱,蚂蚁)的三分类任务,prompt模板为 “这是一张有关{类别}的照片”,将分类标签映射到prompt模板后可以得到集合:{“这是一张有关大象的照片”“这是一张有关冰箱的照片”“这是一张有关蚂蚁的照片”}。对集合中的文本,通过clip的text encoder之后,便可以得到三个类别对应的文本特征向量,之后,对于每一张需要分类的图片,我们只需要比较该图片的特征向量与三个类别对应的文本特征向量之间的语义距离,并选择最近的那一条文本所对应的标签作为图像的分类结果。 具体细节可参考论文《Learning transferable visual models from natural language supervision》。
通常我们可以用多模态模型来做一些有趣的事情,比如给出一段文字或者视频又或者图片,让AI作画,写诗,写曲子,总之,多模态,玩的就是花,拿来什么数据,想变成另外一种什么数据,就是多模态要做的事情
以下是当今多模态研究的方向
视觉
分类
检索任务
其他
参考(93条消息) 浅谈视觉与语言中的多模态研究,究竟都研究什么_詹姆斯德1的博客-CSDN博客
这里主要介绍几种视觉相关的多模态领域以及相关模型
扩散模型(diffusion model)。
在图文生成领域,广为人知的模型有VAE,GAN等。最近大火的diffusion model则使用了一种非常有趣的思想来做生成任务。在此仅对其做简单介绍,不涉及理论公式部分。
先假设这样一个场景,在咖啡拉花的时候,比如我们现在做了一个图案,假设我们将其放在那里静置,一段时间后图案就会慢慢扩散,最后变得一团糟。如果在扩散过程中,我们一直观察这这杯咖啡,就会发现:在静置的前几分钟,虽然图案已经有了一点点变化,但是我们还是可以很轻松的在大脑中从现有较为模糊的图案中恢复出最开始的图案。随着时间一点点的推移,图案变得越来越模糊,从中恢复出最开始的图案变得越来越困难,最后图案和咖啡混合在一起。
反过来想这个问题,我们能不能从最后的“图案和咖啡混合在一起”的状态,推出最初的图案呢?我们可以将拉花扩散的过程看成是“加噪”的过程,而将反向的恢复过程看成是“去噪”的过程,这样一来,只要我们能够从“加噪”过程中学习到一定的规律,那么我们就有可能在“去噪”过程中“逐步”恢复出最开始的图案。这是对扩散模型的一个非常浅显直观的认识,具体细节可参考相关系列论文。
视觉问答(Visual Question Answering,VQA)
在这项任务中我们需要对于给定的图片以及一段文字,给出答案
VQA常用模型如下
VQA基本采取目标检测的主干网络作为提取特征的方法
(93条消息) 视觉问答阶段性总结_是尘埃呀!的博客-CSDN博客
图像字幕(Visual Captioning)
模型需要给出关于图片的描述
常用模型如下
主要是学习为主,就做一做搬运工
主要模型
目前数据集有PTR和VCR,VCR包含多个类型数据集,榜单如下
VCR (Q-A) test Benchmark (Visual Question Answering) | Papers With Code
也可看下面
一个非常好玩的数据集&任务:视觉常识推理(Visual Commonsense Reasoning) - 知乎 (zhihu.com)