ViT与CLIP:图像×文本 多模态读心术揭秘
讲解ViT与 CLIP的原理、差异,以及它们在多模态大模型中的应用
1 ViT (Vision Transformer)
-
本质:直接把 Transformer 应用于视觉任务的模型。
-
工作方式:
- 将输入图像切成固定大小的 patch(如 16x16),
- 将每个 patch 展平后通过线性映射得到 patch embedding,
- 添加 positional embedding(位置信息),
- 输入到标准 Transformer Encoder 中,得到整图的表示或 per-patch 表示。
-
用途:
-
单纯视觉任务,如分类、目标检测、分割。
-
作为视觉编码器,为多模态模型提供“图像理解”能力。
-
📊 将图片分块,通过卷积层和flattern,提取出图片的特征,得到(batchsize, 9, embed_dim),过transformer得到embedding。语言encoder和图像encoder在这里有所不同,语言的encoder只与上文特征有关,而图像encoder与全局特征均有关。
2 CLIP (Contrastive Language-Image Pretraining)
-
本质:OpenAI 提出的 跨模态对比学习框架,预训练得到能够把图片和文本投影到同一语义空间的视觉-文本模型。
-
架构:
-
视觉编码器:常用 ViT 或 CNN(如 ResNet),将图像转为 embedding。
-
文本编码器:Transformer,将文本转为 embedding。
-
-
对比损失训练:
- 对于每个图像和文本描述对,让它们在 embedding 空间靠得更近。对于其他不匹配的组合,让它们远离。 例如,同一batch内做 InfoNCE Loss。
-
能力:
- 支持 zero-shot 识别(如“狗的图片”与“狗”文本匹配 score 最高),为多模态理解奠定基础。
📊 clip采用对比学习的方式进行训练,目的是将图片特征和文本特征训练到同一个特征空间里面
3 ViT 与 CLIP 的区别
方面 | ViT | CLIP |
---|---|---|
目标 | 提供纯视觉表示 | 提供图像与文本对齐的跨模态表示 |
输入 | 图像 | 图像 + 文本对 |
结构 | 纯视觉 Transformer Encoder | 视觉编码器(可为 ViT)+ 文本编码器 + 对比损失训练 |
训练 | 监督分类(ImageNet 标签)或自监督视觉任务 | 大规模图文对的对比预训练 |
输出 | 图像 embedding | 图像 embedding + 文本 embedding,且在同一空间 |
应用 | 视觉下游任务 | 跨模态检索、Zero-shot 分类、多模态大模型视觉模块 |
📊 ViT 是一种 Transformer 架构用于处理图像;CLIP 则是一个利用对比学习,将 ViT + 文本Transformer 结合训练得到的跨模态模型。
📊 ViT:强大的图像 Transformer 编码器,用于视觉任务。CLIP:通过对比学习,将 ViT 与文本 Transformer 结合起来,实现图像-文本对齐,成为多模态模型的基础。
4 在多模态大模型里的使用方法
-
多模态大模型(如 LLaVA、Qwen-VL、Emu)通常需要将图像编码为 embedding,然后与语言模型交互。
-
ViT 可直接做视觉特征提取,但模型不具备“对齐文本语义”的预训练能力。
-
CLIP ViT(即使用 CLIP 训练过的 ViT 作为视觉 encoder)能够输出对语言理解更友好的 embedding,因此被广泛采用。
模型 | 视觉编码与对齐方式 | 多模态输入处理流程 |
---|---|---|
LLaVA | 使用 CLIP ViT-L/336px 作为视觉编码器,直接提取视觉 embedding,通过 projection layer 映射到语言模型 token embedding 空间 | 1. 图像输入 → CLIP-ViT 提取视觉 embedding(维度为 [n_patches, hidden_size]) 2. 经过映射层(projection layer)转换为 token embedding 3. 与文本 token 一起拼接输入 LLM,完成多模态推理与生成 |
BLIP-2 | 使用 pre-trained ViT-G/14 作为视觉编码器 + Q-Former(Querying Transformer) 提取 query embedding,再连接 LLM | 1. 图像输入 → ViT-G/14 提取视觉 embedding 2. Q-Former 输入固定数量 query,通过 cross-attention 提取 query embedding 3. 将 query embedding 输入 LLM 进行视觉-文本推理与生成 |
Qwen-VL | 使用 CLIP ViT-L/14 作为视觉编码器,通过 Q-Former 提取视觉 token,与 LLM 对齐 | 1. 图像输入 → CLIP-ViT 提取视觉 embedding 2. Q-Former 提取视觉 token 3. 与文本 token 拼接后输入 LLM 实现多模态推理 |
. 图像输入 → CLIP-ViT 提取视觉 embedding
2. Q-Former 提取视觉 token
3. 与文本 token 拼接后输入 LLM 实现多模态推理 |
📊 表格展示了LLaVA、BLIP-2、Qwen-VL、Emu 实际使用流程与架构