想象你经营着一家专做“图文配对”的红娘公司。客户把照片和文字交给你,你要判断它们是不是天生一对。CLIP 就是这家公司的王牌团队,而它麾下的视觉编码器 ViT,则是首席红娘手里那副神奇的“拆图眼镜”——戴上它,任何照片都会在一瞬间被拆成几十块整齐的小拼图,每块拼图都被编号、提炼出特征,再经过层层“头脑风暴”,最终凝聚成整张图的“印象笔记”。与此同时,文本部门也把一句描述转成同样格式的档案。两家部门经过海量“图+配文”的配对练习,终于学会一个技能:只要把两份档案往桌上一放,就能立刻打出“般配分”。本文就带你走进这家红娘公司,看看 ViT 怎么拆图、CLIP 怎么训练配对,以及你在实际项目中该如何选红娘、用红娘。

岗位关联

CLIP ViT 是当前多模态大模型的“视觉之眼”,掌握它的原理与工程细节,是成为多模态算法工程师的关键一步。

目录
  1. 可视化演示
  2. CLIP 整体认知
  3. ViT 分块机制
  4. 图像编码流程
  5. 对比学习原理
  6. 版本选型指南
  7. 工程实践要点
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示CLIP ViT视觉编码器深的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

CLIP ViT视觉编码器深:CLIP CLIP对比学习预训练的核心机 ViT在CLIP中的图像编码流 核心机制可视化 CLIP ViT视觉编码器深整体架构与关键组件

CLIP 整体认知

假设你开了一家“图文红娘公司”,主营业务是给照片和文字牵线。公司有两个部门:左边是“图像部”,负责把一张照片读成一份“特征档案”;右边是“文本部”,负责把一句话读成同样格式的“特征档案”。两个部门最后把档案放进同一个“语义社区”,档案越像,说明图与文越般配。CLIP 这家公司,正是在 4 亿张“图+配文”的相亲档案中培训出来的顶级团队——它就是 OpenAI 在 2021 年开山之作里定义的多模态预训练模型,也是如今几乎所有 VLM 的“视觉底座”。

技术上讲,CLIP 采用双塔结构:视觉编码器(ViT 或 ResNet)把图像编码为向量 $u$,文本编码器(Text Transformer)把文本编码为向量 $v$。训练时,同一批数据里每张图有一段配套文字,构成“正样本对”;其他图文组合自然成为“负样本对”。模型要学的,就是让正样本对的向量更近、负样本对更远。两个向量之间的“般配程度”用相似度打分来衡量。整份档案的格式统一,维度完全一致,这就是“维度对齐”的朴素含义。

打分公式是余弦相似度除以温度:

现在你应该明白了:CLIP 这家红娘公司既不教图像部“这是什么物体”、也不教文本部“语法对不对”,它只教一件事——“图和字,到底配不配”。这份“配对直觉”,正是接下来拆图与配对所有动作的底气。

si,j=ui⊤vjτs_{i,j} = \frac{u_i^\top v_j}{\tau}
温度 τ 控制打分的“宽容度”:τ 越小,分数差异越悬殊,模型越“挑剔”;τ 越大,分数越接近,模型越“和稀泥”。
  1. 图像向量 $u_i$视觉塔把第 i 张图编码成 d 维向量
    ui=fI(xi)u_i = f_I(x_i)
  2. 文本向量 $v_j$文本塔把第 j 句编码成同维向量
    vj=fT(tj)v_j = f_T(t_j)
  3. 点积相似度$u_i^\top v_j$ 衡量两向量方向的接近程度,值越大越般配
    ui⊤vj=∑k=1dui,k vj,ku_i^\top v_j = \sum_{k=1}^{d} u_{i,k}\, v_{j,k}
  4. 温度缩放除以 τ 调节分数分布的锐利程度
    si,j=ui⊤vjτs_{i,j} = \frac{u_i^\top v_j}{\tau}

ViT 分块机制

红娘要判断般配,第一步就是把照片拆开看清楚。首席红娘戴上“拆图眼镜”,把一张 224×224 的照片按固定大小切成一块块正方形拼图块——就像把一幅巨型拼图板倒出来,铺满一桌。每一块拼图,都是一个独立的小零件。在 ViT 的术语里,这些拼图块叫 Patch。假如 patch 尺寸是 p×p,图像是 H×W,那么总共会得到 N 个 patch。

每块 patch 展平成像素向量后,要乘以一个可学习的线性投影矩阵 $W_e$,映射成 d 维的“token 特征卡”。这就是“展平映射”:把一块二维彩色拼图,翻译成一组能参与后续计算的数字。为了不让模型丢失拼图在原始画面中的位置,还要给每张特征卡盖上一个“位置戳”——可学习的位置编码(Position Embedding)。同时,序列开头还插一张特殊的“总览卡” CLS token,后面正式用它代表整幅图。

整个过程用公式表达:

一桌零散的拼图块被整整齐齐盖好了编号、装进了档案袋。CLS 这张“总览卡”是红娘的记事本,后面所有拼图的信息都会被汇总到它上面。拆图仪式的准备工作,宣告完成。

z0=[xcls;xp1We;xp2We;… ;xpNWe]+Eposz_0 = [x_{\text{cls}}; x_p^1 W_e; x_p^2 W_e; \dots; x_p^N W_e] + E_{\text{pos}}
  1. 切分 patch图像被切成 N 个 p×p 的小块
    N=Hp×WpN = \frac{H}{p} \times \frac{W}{p}
  2. 展平每个 patch 展平成 $p^2 c$ 维像素向量(c 为通道数)
    xpi∈Rp2cx_p^i \in \mathbb{R}^{p^2 c}
  3. 线性投影乘可学习矩阵 $W_e$ 得到 d 维 token
    xpiWe∈Rdx_p^i W_e \in \mathbb{R}^{d}
  4. 拼接 CLS 与位置编码头部拼上 CLS token,再整体加上位置编码
    z0=[xcls;xp1We;… ;xpNWe]+Eposz_0 = [x_{\text{cls}}; x_p^1 W_e; \dots; x_p^N W_e] + E_{\text{pos}}

图像编码流程

拼图摊开后,红娘公司召开“头脑风暴会”:每块拼图都可以举手发言,告诉其他拼图“我看到了什么颜色、什么形状”,同时也要竖起耳朵听别人怎么说。这样来回讨论许多轮,每块拼图对整幅画面的理解就越来越全面。在技术层面,这场头脑风暴就是层层堆叠的 Transformer Block。每一层由多头自注意力(MSA)、多层感知机(MLP)、两次 LayerNorm(LN)和两个残差连接组成。

自注意力(MSA)让每个 token 都能“看到”序列里所有其他 token,从而建立全局联系,比如“门”的拼图能通过“门把手”拼图确认自己属于房子;MLP 则对每个 token 做一次非线性加工,相当于每个员工私下做功课。经过 L 层(ViT-B 为 12 层)的反复讨论后,CLS token 已经聚合了全图信息——它不再只是第一张卡片,而是整张照片的“浓缩印象”。

单层 Transformer 的计算过程:

头脑风暴结束后,红娘只需要翻看 CLS 那张“总览卡”,就能写出对整张照片的完整印象。最后再对这个印象做一次“格式化”——L2 归一化,把它摆到标准档案架(单位球面)上,方便和文本档案直接比对。

zℓ′=MSA(LN(zℓ−1))+zℓ−1,zℓ=MLP(LN(zℓ′))+zℓ′z_\ell' = \text{MSA}(\text{LN}(z_{\ell-1})) + z_{\ell-1}, \quad z_\ell = \text{MLP}(\text{LN}(z_\ell')) + z_\ell'
  1. 层归一化对输入做 LN,稳定训练、加速收敛
    LN(zℓ−1)\text{LN}(z_{\ell-1})
  2. 多头自注意力MSA 让每个 token 聚合全局信息
    MSA(LN(zℓ−1))\text{MSA}(\text{LN}(z_{\ell-1}))
  3. 第一次残差连接与原始输入相加,防止深层梯度消失
    + zℓ−1+\, z_{\ell-1}
  4. MLP 加工与第二次残差逐 token 前馈并再次残差
    zℓ=MLP(LN(zℓ′))+zℓ′z_\ell = \text{MLP}(\text{LN}(z_\ell')) + z_\ell'

对比学习原理

训练红娘的核心,是一套“配对考试”。每次考试,公司拿出一批(B 张图,B 句话)的选手,要求红娘给每位图片选手找出正确搭档。第 i 张图的真命天子是第 i 句话(正样本),其他 B−1 句话都是干扰项(负样本)。考卷上的分数,就是前面算出的相似度矩阵。CLIP 希望第 i 张图与自己配套文本的相似度,在所有 B 个文本中排名第一——它不是在学“这张图是什么类别”,而是在学“这张图和哪句话最搭”。

为了让这个目标可优化,CLIP 用 InfoNCE 损失作为考试评分规则:分子把正样本分数指数放大,分母把 batch 内所有文本的指数分数求和,两者一比就是“正确配对在全部候选中的占比”,再取负对数。每考完一轮,调整一次眼光,让般配的人越走越近、不配的人越推越远。

经过 4 亿对图文的魔鬼训练,图像部与文本部终于住在同一个“语义社区”里,见面点头就能认出彼此。正样本像磁铁一样被吸到一起,负样本则被弹簧推开——最终形成一片井然有序的“图文户型图”。这就是零样本能力的神秘来源:类别不再是固定编号,而是任意一句话的坐标。

Li=−log⁡exp⁡(si,i/τ)∑k=1Bexp⁡(si,k/τ)\mathcal{L}_{i} = -\log \frac{\exp(s_{i,i}/\tau)}{\sum_{k=1}^{B} \exp(s_{i,k}/\tau)}
  1. 相似度矩阵先计算 batch 内每对图文相似度
    si,k=ui⊤vkτs_{i,k} = \frac{u_i^\top v_k}{\tau}
  2. 分子正样本对的指数分数,越大越好
    exp⁡(si,i/τ)\exp(s_{i,i}/\tau)
  3. 分母与 batch 内所有文本的指数分数之和,构成 softmax 归一化
    ∑k=1Bexp⁡(si,k/τ)\sum_{k=1}^{B} \exp(s_{i,k}/\tau)
  4. 取负对数最大化正样本概率,等价于最小化该损失
    −log⁡exp⁡(si,i/τ)∑k=1Bexp⁡(si,k/τ)-\log \frac{\exp(s_{i,i}/\tau)}{\sum_{k=1}^{B} \exp(s_{i,k}/\tau)}

版本选型指南

红娘公司做大后,客户来咨询:我该请哪一位红娘?有的红娘(ViT-B/32)动作麻利、价格实惠,但眼光略粗;有的红娘(ViT-L/14)火眼金睛、精度极高,但收费贵、出场慢。选谁,要看你的活是什么。CLIP 官方提供了多个 ViT 版本,最常用的是 ViT-B/32 与 ViT-L/14。名字里的数字,就是 patch 尺寸 p:32 表示每块拼图 32×32 像素,14 表示每块 14×14 像素。

patch 越大,序列越短,计算越快,但空间细节丢失越多;patch 越小,序列越长,精度越高。ViT-L/14 还提供 336 分辨率变体(@336px),在更高分辨率上进一步微调,精度更好。参数量方面,ViT-B/32 视觉塔约 86M,ViT-L/14 约 304M,接近三倍差距——这还没算文本塔和投影层。选型时要在精度、显存、延迟之间做权衡。

patch 数量与分辨率的直接关系:

选型就像请红娘:追求实时响应的移动端 App,用 B/32 足够快;做高精度图文检索或给 VLM 当“眼睛”,L/14@336 更稳。记住:红娘的能力上限,取决于你给的活儿难度和预算——没有最好的红娘,只有最合适的红娘。

N=⌊Hp⌋×⌊Wp⌋N = \left\lfloor \frac{H}{p} \right\rfloor \times \left\lfloor \frac{W}{p} \right\rfloor
  1. 高与宽的 patch 数分别用 H 和 W 除以 p 取整
    ⌊Hp⌋,⌊Wp⌋\left\lfloor \frac{H}{p} \right\rfloor, \quad \left\lfloor \frac{W}{p} \right\rfloor
  2. 总数相乘得到序列长度
    N=⌊Hp⌋×⌊Wp⌋N = \left\lfloor \frac{H}{p} \right\rfloor \times \left\lfloor \frac{W}{p} \right\rfloor
  3. 以 224 分辨率为例p=32 时 N=49,p=14 时 N=256
    224/32×224/32=49;224/14×224/14=256224/32 \times 224/32 = 49; \quad 224/14 \times 224/14 = 256

工程实践要点

选定红娘后,不能直接把她扔进战场。上岗前要做三件事:先学会看照片的“标准姿势”(预处理),再学会读档案的“标准动作”(特征提取),最后决定要不要按自家业务“培训”她(微调)。预处理上,CLIP 训练时把图像 resize 并 center-crop 到 224 或 336,像素值按预训练统计归一化——你私拉乱改照片比例,红娘就会看走眼。

特征提取时,encode_image 输出的向量要 L2 归一化,保证后续点积就是余弦相似度;文本侧同样归一化。微调时,如果数据量少,建议冻结 ViT backbone,只调投影层或加 LoRA,避免灾难性遗忘;数据量大且任务差异大,再考虑全量微调。推理时可用半精度、ONNX/TensorRT 加速,特征缓存能大幅降低在线开销。

零样本分类时,我们用文本模板构造候选句,与图像特征算 softmax 概率:

红娘上岗后,还会遇到各种“奇怪客户”——低分辨率老照片、艺术插画、专业医学影像。此时别急着怪红娘,先检查预处理姿势对不对、要不要请“导师”(微调)再培训。工程细节到位,红娘才能发挥真正的实力——所有翻车现场,九成都是因为“姿势不对”。

p(yk∣x)=exp⁡(cos⁡(fI(x),fT(tk))/τ)∑j=1Kexp⁡(cos⁡(fI(x),fT(tj))/τ)p(y_k|x) = \frac{\exp(\cos(f_I(x), f_T(t_k))/\tau)}{\sum_{j=1}^{K}\exp(\cos(f_I(x), f_T(t_j))/\tau)}
  1. 图像特征视觉塔输出并归一化
    fI(x),∥fI(x)∥=1f_I(x), \quad \|f_I(x)\| = 1
  2. 文本候选特征用模板如 "a photo of a {label}" 编码 K 个类别
    fT(tk),k=1,…,Kf_T(t_k), \quad k = 1, \dots, K
  3. 余弦相似度之比对 K 个候选做 softmax 得到概率
    p(yk∣x)=exp⁡(cos⁡(fI(x),fT(tk))/τ)∑j=1Kexp⁡(cos⁡(fI(x),fT(tj))/τ)p(y_k|x) = \frac{\exp(\cos(f_I(x), f_T(t_k))/\tau)}{\sum_{j=1}^{K}\exp(\cos(f_I(x), f_T(t_j))/\tau)}

AI 应用场景

零样本图像分类

阶段:推理与部署

解决的问题:传统分类需要收集大量标注数据并训练分类头,成本高、冷启动慢。CLIP ViT 无需训练,直接对候选文本标签打分即可分类,支持任意类别集合,类别可以随时换。

具体案例:某电商平台要对新上架商品做类目初筛,商品图直接与 "a photo of electronics"、“a photo of clothing“ 等文本比较,秒级完成粗分类,准确率不错且零标注成本。运营人员甚至可以直接新增”二手手机”类目,无需重新训练。

电商以文搜图 / 以图搜文

阶段:特征提取与向量检索

解决的问题:传统检索依赖人工打标或单模态特征,跨模态检索困难。CLIP 把图和文映射到同一向量空间,直接向量检索即可。

具体案例:某图片库平台让用户输入“雨天撑着红伞的少女”,系统用文本塔编码 query,与离线建好的 ViT 图像特征库做余弦相似度 Top-K 检索,返回最匹配图片;反过来用户选一张图,也能搜出风格相近的文案和标签。

多模态大模型(VLM)视觉底座

阶段:预训练与微调

解决的问题:VLM(如 LLaVA、Qwen-VL)需要视觉侧先产出高质量图像特征,再注入 LLM。CLIP ViT 是现成的、经过图文对齐的视觉编码器,省去从零训练视觉塔的成本。

具体案例:某创业团队做人机对话机器人,直接加载 ViT-L/14 权重,用 adapter 把图像特征映射到 LLM 的词嵌入空间,在少量图文对话数据上微调,快速做出能“看图说话”的 demo——整个过程不到一周。

Python 演示

python45 行
"""Extract CLIP ViT image features and match with text."""import torchfrom PIL import Image, ImageDrawimport open_clip  def load_clip(model_name="ViT-B-32"):    model, _, preprocess = open_clip.create_model_and_transforms(        model_name, pretrained="openai"    )    tokenizer = open_clip.get_tokenizer(model_name)    model.eval()    return model, tokenizer, preprocess  def make_demo_image():    """Draw a simple house image as test input."""    img = Image.new("RGB", (224, 224), "#f0f0f0")    d = ImageDraw.Draw(img)    d.rectangle([50, 100, 170, 180], fill="#818CF8")    d.polygon([(30, 100), (110, 40), (190, 100)], fill="#F43F5E")    d.ellipse([150, 30, 190, 70], fill="#10B981")    return img  def main():    model, tokenizer, preprocess = load_clip()    image = preprocess(make_demo_image()).unsqueeze(0)    texts = ["a house with a red roof", "a photo of a cat", "a blue sky"]    text_tokens = tokenizer(texts)     with torch.no_grad():        img_feat = model.encode_image(image)        txt_feat = model.encode_text(text_tokens)        img_feat = img_feat / img_feat.norm(dim=-1, keepdim=True)        txt_feat = txt_feat / txt_feat.norm(dim=-1, keepdim=True)        probs = (img_feat @ txt_feat.T).squeeze(0).softmax(dim=-1)     print("CLIP ViT-B-32 image feature shape:", img_feat.shape)    for text, p in zip(texts, probs.tolist()):        print(f"match probability with [{text}]: {p:.2%}")  if __name__ == "__main__":    main()
目的:用 open_clip 加载官方 CLIP ViT-B/32,对一张程序生成的“小房子”简笔画提取图像特征,与三条候选文本计算匹配概率,直观体验图文配对打分。
  1. model, _, preprocess = open_clip.create_model_and_transforms(...)一行同时拿到 ViT 模型与图像预处理管线。
  2. tokenizer = open_clip.get_tokenizer(model_name)获取配套文本分词器,保证图文同胚。
  3. image = preprocess(make_demo_image()).unsqueeze(0)图像按预训练标准 resize/归一化,并加 batch 维。
  4. img_feat = model.encode_image(image)视觉塔前向,输出(1, 512)的图像特征向量。
  5. txt_feat = model.encode_text(text_tokens)文本塔前向,输出(3, 512)的文本特征矩阵。
  6. img_feat = img_feat / img_feat.norm(dim=-1, keepdim=True)L2 归一化,让点积等价于余弦相似度。
  7. probs = (img_feat @ txt_feat.T).squeeze(0).softmax(dim=-1)相似度矩阵经 softmax 变成匹配概率。

常见误区

误区很多人以为“CLIP 里的 ViT 就是训好的图像分类模型,直接拿最后一层特征接个分类头就行”,于是跳过文本侧,只把 ViT 当特征提取器。

正解CLIP ViT 是在对比学习目标下训练的,它的特征空间是“图文对齐”的度量空间,而非类别边界。它擅长回答“这张图和这句话像不像”,不擅长直接输出类别。最佳实践是保留文本编码器做零样本打分,或用它初始化后做 VLM 微调。

为何常见:因为 ViT 本来就起源于图像分类,大家惯性思维以为它只能干分类,忽略了 CLIP 的“配对”本质。

误区“B/32 太慢,我把 patch 改成 16 试试?或者把 L/14 的 patch 改成 32,应该更快。”

正解patch size 决定序列长度和感受野,官方权重的位置编码和投影层都是按固定 patch size 训练的。直接改 patch 大小,等于让红娘戴着错位的眼镜看拼图,性能暴跌。想换精度,请直接换官方版本。

为何常见:patch size 看起来只是个超参数,小白认为改改没关系,忽略了模型权重与结构强绑定。

误区“CLIP 不是多模态吗?那我放大到 448×448 应该看得更清、效果更好。”

正解CLIP 预训练分辨率固定(224 或 336),位置编码数量与分辨率绑定。超分辨率输入会让位置编码失效、patch 分布偏移。需要高分辨率时,选官方微调过的 @336px 版本,或自己微调位置编码。

为何常见:直观上“分辨率越高越清楚”,但忽略了模型内部结构对输入尺寸的强假设。

误区“InfoNCE 损失就是在对 batch 里的 N 个文本做分类嘛,和交叉熵不是一回事吗?”

正解形式上确实像(softmax 分类),但本质不同:分类是学习固定类别边界,InfoNCE 学的是相对相似度排序,负样本是动态变化的,类别“字典”是非参数化的。这正让 CLIP 能零样本扩展到任意文本类别。

为何常见:softmax 的数学形式相似,容易让学生忽略两者的学习目标和泛化能力差异。

误区“微调 CLIP 就要把 ViT 和文本塔全部解冻,不然效果上不去。”

正解小数据全量微调极易破坏预训练图文对齐,造成灾难性遗忘。常见做法是冻结 ViT、只调投影层/文本侧,或用 LoRA 等参数高效微调。数据量很大且任务接近图文对齐时,才适合全量微调。

为何常见:习惯了“全量微调=效果好”的 CNN 时代经验,忽略了预训练大模型对灾难性遗忘的敏感性。

面试题

Q1. CLIP 视觉编码器的核心任务是?

单选题 · easy

  • A.把图片压成极小的字节码
  • B.把图片映射为语义特征向量← 正确答案
  • C.把图片识别成固定类别
  • D.把图片切割成多个文件

答案:B。CLIP 的视觉塔(ViT)把图像编码成语义向量,为后续与文本向量配对打分服务。它不是压缩算法、不是分类头、也不是文件切分工具。选项 B 准确描述了“编码器”的本质。

Q2. 224×224 图像按 16×16 patch 切分,token 序列长度(不含 CLS)是?

单选题 · easy

  • A.一共 49 个序列单元
  • B.一共 196 个序列单元← 正确答案
  • C.一共 224 个序列单元
  • D.一共 256 个序列单元

答案:B。224÷16=14,14×14=196 个 patch,所以序列长度是 196。49 是 patch size 为 32 时的数量,别混淆。CLIP 的 ViT-B/32 走的是 49 个 token 的轻量路线,ViT-L/14 则是 256 个 token 的精度路线。

Q3. ViT 中加到 token 上的位置编码作用是?

单选题 · easy

  • A.加快模型训练的收敛速度
  • B.保留 patch 空间顺序信息← 正确答案
  • C.降低训练时的显存占用
  • D.增加模型的总参数量

答案:B。Transformer 本身是“词袋”结构,天然不感知顺序。位置编码给每块拼图盖“位置戳”,告诉模型这是左上角还是右下角。虽然它客观上也会增加参数量,但那是副作用,不是目的。

Q4. 对比学习中“负样本对”指的是?

单选题 · mid

  • A.语义完全一致的图文组合
  • B.内容不匹配的图文组合← 正确答案
  • C.属于同一类别的两幅图像
  • D.同一条文本的两次编码结果

答案:B。在一个 batch 里,第 i 张图与第 i 句配套是正样本,与其余 B−1 句都是负样本。CLIP 通过“拉近正样本、推远负样本”学到判别性的图文对齐空间。语义一致或同类别属于正样本范畴。

Q5. CLIP 训练时把图文配对分数除以温度 τ 的目的是?

单选题 · mid

  • A.让最终的损失值变小
  • B.调节相似度分布锐利程度← 正确答案
  • C.减少负样本的参与数量
  • D.降低整体计算的复杂度

答案:B。τ 越小,分数差异越悬殊,softmax 输出越“尖锐”,模型训练时对难负样本更敏感;τ 越大,分布越平滑。它不改变计算量、不改变样本数量,只是缩放分数的标尺。

Q6. 关于 ViT-B/32 与 ViT-L/14 的说法,正确的是?

多选题 · hard

  • A.B/32 的 patch 更大序列更短← 正确答案
  • B.L/14 的 patch 更小序列更长← 正确答案
  • C.B/32 的计算量通常比 L/14 大
  • D.L/14 精度通常更好但更重← 正确答案

答案:ABD。patch 大则序列短,所以 B/32 的 49 个 token 比 L/14 的 256 个 token 轻量得多,计算量更小而非更大,C 错误。L/14 因更细的 patch 密度和更大的模型容量,精度更高、参数量和计算量也更大。

Q7. 使用 CLIP ViT 做特征提取时,正确的做法包括?

多选题 · mid

  • A.对特征做 L2 归一化处理← 正确答案
  • B.resize 到任意分辨率均可
  • C.遵循预训练预处理统计← 正确答案
  • D.直接用原始像素送入模型

答案:AC。特征 L2 归一化后点积即余弦相似度,是 CLIP 的标准姿势;预处理必须遵循预训练时的 resize、crop 和归一化统计,不能随意改分辨率,也不能拿原始像素直接进模型。B、D 会破坏训练分布。

Q8. 想零样本判断图中物体,正确做法是?

单选题 · mid

  • A.重新训练一个全新分类头
  • B.构造文本候选并计算相似度← 正确答案
  • C.用聚类算法分割图像区域
  • D.直接输出目标的坐标框

答案:B。零样本分类的秘诀是用模板把类别名变成句子(如 “a photo of a cat“),让文本塔编码后与图像特征算相似度,取最高分。重新训练分类头就谈不上”零样本”,聚类和检测定位也不是分类。

Q9. 关于 CLIP 的 InfoNCE 损失,正确的是?

多选题 · hard

  • A.分母包含正样本和负样本← 正确答案
  • B.分子拉近正样本分数← 正确答案
  • C.只需要一张图一个文本
  • D.温度越高分布越平滑← 正确答案

答案:ABD。InfoNCE 的分子是当前图文对的指数分数,分母是该图像与 batch 内所有文本的指数分数之和(含正负样本),通过 softmax 归一化实现“正样本排第一”。没有 batch 就没有负样本,C 错误;τ 越大分布越平滑,正确。

Q10. CLS token 最终输出的特征代表?

单选题 · easy

  • A.图像中某个 patch 的局部内容
  • B.整张图像的全局语义特征← 正确答案
  • C.文本序列的上下文特征
  • D.位置编码的权重数值

答案:B。CLS 是序列头部的特殊“总览卡”,经过多层 Transformer 自注意力后,它聚合了所有 patch 的信息,最终输出代表整幅图的全局特征。它不属于某个 patch、不是文本特征、也不是位置编码。