博主头像
小雨淅沥

Some things were meant to be.

CLIP 论文笔记

CLIP

论文全名: Learning Transferable Visual Models From Natural Language Supervision

参考了教学视频: https://www.bilibili.com/video/BV1SL4y1s7LQ/

简介

CLIP 图像
CLIP 图像

  1. Pretrain: 通过自然语言处理来获得一个从视觉模型中迁移,从 image encoder 上获取特征,然后和 text encoder 上执行特征匹配,然后进行对比学习:在对角线上的就是正样本,而非对角线上的就是负样本
  2. Classifier: 把分类标签嵌入到一个 prompt 变成 "A photo of a xxx" ,然后通过 text 编码器可以得到 文本的 embedding 数据
  3. Prediction: Zero shot 预测,输入一个图像经过 image encoder,去算 cosine 相似度然后得到最后的语句输出,也就是分类

这里的标签也是可以改动的,这是非常强大的地方,因为摆脱了 Category Label, 可以输入任意的标签执行 encoder 就行了,可以是训练数据集之外的内容,只要 encoder 的 text label

基于 CLIP 可以做非常多的工作,包括最经典的传统的图像分割,图像分割等

模型与训练

主要就是以下几个问题

如何预训练

  1. 准备一个超级大的数据集,400 million 的文本对,使用自然语言(因为自然语言的迁移性很好)
  2. Image + Text 两个 encoder 执行,计算出对应的 feature
  3. 两个 feature 通过 embedding 映射到同一个空间中,使用的是线性层
  4. 最后构造出了一个矩阵,矩阵的对角线上就是正确的图文对,非对角线则不匹配,训练目标就是让对角线的值最大

这里说一下对角线的值就是,横纵向都做 softmax,然后让匹配的那个值在两个 softmax 中都最大

为什么使用对比学习

  1. 词汇都来自于互连网,没有固定的类别,不是一个确定的词可以指定,只用 label 会导致信息额外的丢失,而且数据相对 noisy,成本不允许

另外 label 化也会丢失一些自然语言信息,例如:"a small brown dog running on grass" 就只剩一个 "dog" 了

  1. 对比学习有非常好的分类可迁移性,对于自然语言的分类,例如 "a cat" 和 "the dog" 这种都可以学习到其中的隐藏特征,不需要重新训练分类器
  2. 训练效率高,对于 N 的 batch size 都可以产生 $N^2$ 个对比样本,效率很高

总结而言,CLIP 的目的不是为了做类别的预测,而是判断文本和图片是否匹配,学习的是一个 一个共享的图文语义空间

什么是双塔模型

双塔就是两个独立编码器结构, Image + Text,最终让图像和文本映射到同一个 embedding 空间中

Image Encoder:作者尝试了 ResNet, Vit (Vision Transformer)

Text Encoder: 作者使用了 Transformer + BPE 编码

CLIP 论文笔记
https://www.rainerseventeen.cn/index.php/paper-notes/70.html
本文作者 Rainer
发布时间 2026-03-25
许可协议 CC BY-NC-SA 4.0
发表新评论