
目录为什么需要CLIPCLIP的模型结构和训练方式CLIP能做什么CLIP做不到什么为什么需要CLIP传统的计算机视觉模型你要收集一大堆猫狗图片或者是手写数字之类的给他们手工分别标注类别。然后构建一个卷积神经网络使用标注好的数据训练网络让他正确预测类别。在训练完毕之后输入新的图片输出分类结构。例如你输入一张狗然后返回狗96% 这表示对狗的预测概率示意然后你突然需要识别一些其他东西比如飞机汽车苹果你需要增加标签修改输出层准备新数据。这里出现了三个问题1.人工标注非常昂贵如果你要识别1000个东西每个类别收集1000张照片你就需要100万张标注图片2.分类体系固定一个针对1000类的分类器输出层对应1000个类别。你不能通过增加一段新文字就让原来的分类自动增加一个类别。3.模型训练的成果不容易迁移针对不同的任务就算你已经训练过类似的东西但大部分情况下你无法利用先前训练好的模型你只能改代码重新设计去设计一个新模型CLIP是怎么解决问题的互联网上有大量配对好的文本和图像这不一定是人工制作的严格分类但是信息很丰富。比如第一句不单单表达cat还包含orange sleeping window。比起单一的标签自然语言含有更加丰富的概念。如果模型能理解就不需要为每一种新任务单独训练一个固定的分类器。于是2021 年OpenAI提出 CLIP全称为Contrastive Language-Image Pre-training即对比式 语言-图像预训练。原始 CLIP 使用约 4 亿对互联网图文数据进行训练通过图文匹配任务学习视觉表示并展示了较强的Zero-shot 分类能力。它将大量学习工作提前到了预训练阶段使下游任务能够更方便地复用这些知识。那么什么是预训练CLIP怎么在不同任务中被重复使用的一个模型至少包含模型参数 模型结构模型结构是人为定义的而模型参数在最开始可能只是个随机数在训练中不断调整成能完成任务的数值。而预训练正是用规模巨大的数据进行训练让模型获得迁移的能力之后其他研究者不必要从随机参数开始训练可以加载已经训练好的权重。CLIP的模型结构和训练方式一张经典的图CLIP采用双编码器架构视觉编码器Image Encoder接受图片输出视觉特征向量。原始 CLIP 实验使用过 ResNet 和 Vision TransformerViT作为视觉骨干网络。文本编码器Text Encoder通常由 Transformer 结构处理输出文本特征向量。这个部分内容非常丰富我以后有机会再写一篇关于这里的内容。编码器输出还会经过相应的投影操作使图像和文本特征进入可比较的向量空间。图像和文本经过不同编码器最终得到相同维度的向量。这两个向量不能天然比较后面的联合对比训练才让它真的具有跨模态语义。那么CLIP究竟如何训练假设我们有一个 Batch包含 4 对匹配的图像和文本图像对应文本猫的图片A photo of a cat狗的图片A photo of a dog飞机的图片A photo of an airplane苹果的图片A photo of an appleCLIP 首先分别编码全部图像和文本。得到假设每个特征向量都是 512 维然后对图像和文本特征进行归一化并计算相似度矩阵也由此可以这样理解训练的目标就是让匹配的图文相似度尽可能高让 Batch 内不匹配的图文相似度相对更低。我们希望矩阵的对角线得分较高而其他位置相对较低。这就叫对比学习那么CLIP是怎么构造损失函数的呢先对图像和文本向量进行 L2 归一化计算缩放后的相似度其中是τ温度参数原始 CLIP 通过可学习的对数缩放参数实现这一操作。对于第i张图像将 Batch 内正确配对的文本作为目标图像到文本方向的损失可以写为反过来以文本为查询寻找匹配图片最终使用对称的交叉熵损失这两项分别鼓励正确的图像—文本、文本—图像匹配。其中需要注意一点Batch 内的负样本不一定真的语义不相关。 例如两张不同的猫图片可能分别对应两句猫的描述但标准对比损失仍会将非配对项作为负例。这是对比学习存在的一个局限。CLIP能做什么1. Zero-shot 图像分类假设你没有任何用于训练的动物图片但希望分类CatDogBird可以直接将这些类别构造成文本texts [ a photo of a cat, a photo of a dog, a photo of a bird]然后计算图片与三个类别的相似度选择相似度最高的类别。无需针对这三个类别重新训练 CLIP。注意Zero-shot 不是说 CLIP 从未见过猫或者狗的概念而是不使用目标任务的标注训练样本重新训练模型。2. 文本检索图像想象一个系统存储了 10 万张图片。你输入一只坐在海边看日落的猫。系统不需要提前给每张图片分配这样的标签。可以先用 CLIP 对所有图片进行编码按相似度排序返回最相关的图片。3. 图像检索图像原理类似只是查询输入由文字变成图片。例如上传一张灰色运动鞋照片让系统从商品库中搜索外观或语义相近的鞋。这里甚至可以只使用 CLIP 的视觉编码器。4. 作为其他视觉系统的特征提取器CLIP 不只能作为完整的零样本分类系统也可以只保留其中的编码器得到可供其他算法使用的特征。CLIP做不到什么CLIP 能够识别图文之间的语义关联不意味着它天然具备生成、定位、分割、推理和精确测量等全部能力。任务原始 CLIP 能否直接完成常规解决方式零样本图像分类可以候选类别文本、Prompt Engineering图文检索可以向量相似度与检索系统生成图片描述不可以直接生成加入语言生成器或使用图像描述模型文生图不可以直接生成图片扩散模型等生成模型物体检测与坐标定位不具备原生检测输出检测网络、开放词汇检测模型像素级语义分割不具备原生像素级输出分割网络与 CLIP 特征结合图像中的物体计数不可靠专用检测/计数模型精确尺寸测量不具备原生测量机制分割/检测、相机标定和几何计算图片视觉问答不具备原生回答生成能力与语言模型结合或使用专用 VQA 模型细粒度专业分类可以尝试但性能不确定Few-shot Adaptation、Fine-tuning 等