



























这个点正好卡在 VLM 的“视觉→语言”接口层。
一句话版:
CLIP 的“视觉词汇表”不是显式的 token 表,而是一个“隐式的、由语言监督塑形的视觉概念空间”。
它本质上是:
你可以理解为:
CLIP 把视觉特征,强行翻译成了“语言能理解的坐标系”
在传统 CV 里:
而在 VLM(Vision-Language Model) 里,你要做的是:
👉 这就需要一个东西:
把连续视觉信号 → 离散 / 可语义化的“视觉单位”
这就是“视觉词汇表”的根本动机。
关键点:CLIP 没有显式 vocab,它是靠对齐训练“长出来的”
CLIP 用的是 对比学习:
\( \mathcal{L} = - \log \frac{\exp(\langle v_i, t_i \rangle / \tau)}{\sum_j \exp(\langle v_i, t_j \rangle / \tau)} \)
意思是:
⚠️ 关键不是公式,而是后果:
语言 embedding 在“拉着”视觉 embedding 形成结构
想象一下训练后,CLIP 的视觉空间会发生什么:
这些文本 embedding 会形成一个“cat 子空间”
于是:
👉 这个“区域”就是一个视觉词的等价类
| 层级 | 对应含义 |
|---|---|
所以:
CLIP 的视觉词汇表 = embedding 空间中的“语义方向集合”
不是一个 dict,而是一个 manifold。
在 ViT-based CLIP 中:
这一步非常关键 👇
每个 patch embedding:
当你把它们送进 Transformer:
👉 在 VLM 中,这些 patch embedding 就是:
视觉 token
下面这部分,是产品 / 系统层面最有用的
在很多 VLM(如 Flamingo、LLaVA、BLIP-2)中:
image
↓
CLIP Vision Encoder
↓
visual tokens
↓
Q-Former / Adapter
↓
LLM
CLIP 的作用就是:
你可以理解为:
CLIP = 视觉版 BPE tokenizer
这是 CLIP 最革命的地方。
因为:
所以你可以直接做:
"a photo of a zebra"
"a photo of a construction crane"
"a photo of a nuclear power plant"
即使模型从没见过这些标签。
👉 在 VLM 中,这意味着:
这是 LLM + CLIP 真正接起来的地方。
一旦视觉 embedding 落在语言语义空间:
LLM 就能:
比如:
“图中是否存在 比汽车更大的红色物体?”
这种问题:
CLIP 的视觉词汇表,正好支持这种操作。
这是一个很容易混的点,我们直接对比:
| 维度 | 传统 BoVW / VQ | CLIP 视觉词汇表 |
|---|---|---|
一句话总结:
CLIP 把“视觉词”从工程离散化,升级成了语义连续化
你以后在技术讨论里,可以直接这么说:
CLIP 并没有显式的视觉词表,而是通过大规模图文对比学习,构建了一个语言监督下的视觉语义嵌入空间。这个空间中的方向与局部结构,天然构成了 VLM 可用的“视觉词汇表”,使视觉 token 能够被 LLM 直接消费、组合与推理。
CLIP 是 OpenAI 在 2021 年提出的一种多模态预训练方法,核心目标是:
让图像和文本被映射到同一个向量空间,在语义层面对齐,使得模型具有强泛化能力,能用于零样本(zero-shot)视觉任务。 (OpenAI)
传统图像模型:
CLIP 提出的核心思想:
利用自然语言监督(internet 上的大量图像+文本对)训练模型,使得
图像 embedding 和 文本 embedding 对齐(同一语义对接近),
并且可以通过自然语言描述任意新的 visual concepts 进行 zero-shot 分类。 (OpenAI)
CLIP 有两个平行的编码器:
📸 图像编码器(Image Encoder)
📝 文本编码器(Text Encoder)
两个编码器独立运作,输出同维度的向量:
\(
v_i,\ t_i \in \mathbb{R}^d
\)
这样就能在同一个空间计算相似度。 (Wikipedia)
核心目标是:
让 正确匹配的图像-文本对 在向量空间距离更近;
让 错误匹配的图像-文本对 在向量空间距离更远。
数学上:
设一个 mini-batch \(( {(v_i, t_i)}_{i=1}^N )\),
相似度定义为:
\(
s(v_i, t_j) = \frac{v_i \cdot t_j}{\tau}
\)
其中 ( \tau ) 是 温度参数(调整难易程度)。 (Wikipedia)
对比损失(InfoNCE)形式:
\( \mathcal{L} = -\frac{1}{N}\sum_{i=1}^N \left( \ln\frac{e^{s(v_i,t_i)}}{\sum_{j=1}^N e^{s(v_i,t_j)}} + \ln\frac{e^{s(v_i,t_i)}}{\sum_{j=1}^N e^{s(v_j,t_i)}} \right) \)
通俗来说:
这样模型学到了图像和语言语义对齐的嵌入空间,并且这个空间是广义的,而不是固定类别的。 (Wikipedia)
CLIP 在一个名为 WebImageText(WIT) 的大型数据集上训练:
CLIP 学到的是共享空间后,我们可以做:
📍 Zero-Shot 图像分类:
Prompt: "A photo of a {class}" → 得到文本向量 t_class
输入图像 → 得到图像向量 v
score = cosine_similarity(v, t_class)
选最大得分的类别即可,不需要微调训练集。 (OpenAI)
这是 CLIP 在图像分类、图像检索等任务得以无需训练/微调就能很好迁移的关键。
| 优势 | 说明 |
|---|---|
CLIP 只是建立了图像和文本的语义向量对齐空间,但它不直接“看图生成语言”。在很多 VLM 架构中(如 BLIP-2、InstructBLIP、MiniGPT-4 等),需要一个更强的信息桥,这就是 Q-Former(Querying Transformer) 的角色。 (知乎专栏)
Q-Former(Querying Transformer) 是一种轻量级 Transformer 模块:
它用可学习的“查询向量”(learnable queries)主动去从视觉编码器提取“对语言最有用的视觉信息”,并把这些信息转换成大语言模型可以直接理解的 token。 (CSDN Blog)
单纯的视觉编码:
Q-Former 提供了 中间“接口”:
把视觉信息压缩成较少的、有意义的视觉 tokens,并且使这些 tokens 与 LLM 的语义空间更自然对齐。 (Medium)
核心流程:
从视觉编码器获得视觉特征序列 ( V \in \mathbb{R}^{K \times d} )(例如图像 patch embedding);
初始化一组 learnable queries ( Q \in \mathbb{R}^{M \times d} )(长度固定,比如 32 个);
使用 Transformer Cross-Attention:
( Q_{\text{out}} ) 就是“视觉 tokens”,可以输入 LLM 生成文本。 (知乎专栏)
直觉比喻:
Q-Former 就像一组有针对性的提问,它询问“图片哪些部分和语言最相关?哪些视觉细节应该传给 LLM?”
然后把核心视觉语义提取出来。 (Medium)
以 BLIP-2 论文为代表(Q-Former 首次成熟提出):
| 功能 | 价值 |
|---|---|
总结一句话:
Q-Former 是视觉描述到语言理解的“桥梁”,它把视觉特征转化成适合 LLM 理解和推理的语言-friendly 表示。 (知乎专栏)
| 模块 | 主要作用 |
|---|---|
📌 CLIP 算法
📌 Q-Former 模块
📌 二者关系
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。