想象你走进一家藏书千万的图书馆,这里没有分类标签,管理员却能在你说出“一朵雨后初晴时盛开的红色玫瑰”之后,三秒内从角落抽出一张对应的照片。更神奇的是,他从未接受过“找玫瑰”的专门培训。这位管理员就是今天的主角——CLIP,一个在4亿张“图片配文字”卡片堆里泡大的双语图书管理员。 CLIP全称Contrastive Language-Image Pre-training(对比语言-图像预训练),它用两套编码器分别“读图”和“读文”,把图片和文字映射到同一片“语义空间”。凭着这份见识,它不需要重新训练就能做两件大事:零样本分类(给图片贴标签)和零样本检索(用文字搜图片)。本文会沿着管理员的学习经历、工作方法和实战技巧,一步步拆解CLIP的零样本超能力。

岗位关联

掌握CLIP零样本能力,意味着你不需要标注数据和GPU训练就能快速搭建图像分类、跨模态搜索等视觉应用,是AI应用开发者的高效起手式。

目录
  1. 可视化演示
  2. CLIP工作原理
  3. 零样本分类
  4. 零样本检索
  5. Prompt工程优化
  6. 跨模态检索原理
  7. 性能对比分析
  8. 视觉应用构建
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示CLIP三大零样本能力:零样本分类将图像与文本提示匹配、跨模态检索实现图文互搜、提示模板优化提升准确率,动态演示多模态共享语义空间工作原理。

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

零样本分类:图文匹配实现分类 紫色为图像嵌入 绿色为最佳匹配 灰色为低相似度 sim(I, T) = I · T / (||I|| ||T||) 图像与各类别文本提示计算余弦相似度,取最大值作为预测类别

CLIP工作原理

在成为“万事通”之前,这位图书管理员每天只做一件简单的事:翻阅4亿张“图文配对卡”。卡片左边是一张照片,右边是一句人话,比如一张金毛的照片配着“一只在草地上奔跑的金毛犬”。他一张张看,慢慢地,大脑里形成了一张神奇的“概念地图”——凡是语义相近的图片和文字,在地图上都挤在同一个街区。

CLIP的训练过程和这位管理员如出一辙。它由两个“器官”组成:图像编码器负责“看”图片,把一张图浓缩成一串数字(图片向量);文本编码器负责“读”文字,把一句话浓缩成等长的向量(文本向量)。预训练时,CLIP做的是最朴素的“连线题”:面对一批图文对,把配对的图片和文本拉近,把不匹配的推远。

这道连线题的解题目标叫做对比学习损失。以一个小批次为例,里面有N张图片和N句文本,真实配对关系已知。对每张图,CLIP要“认出”自己真正对应那句文本,把它的相似度打分提到最高,同时压低其他N-1句“干扰文本”的分数。

就是这样日复一日地做了4亿道连线题,管理员大脑里的概念地图越来越精细。他并没有刻意背过“猫”长什么样,但猫的图片和“猫”的文字早已在地图上相互簇拥。这份“见过世面”的底子,正是他日后零样本表演的真正本钱。

L=−log⁡exp⁡(sim⁡(I,T)/τ)∑j=1Nexp⁡(sim⁡(I,Tj)/τ)\mathcal{L} = -\log \frac{\exp\big(\operatorname{sim}(I,T)/\tau\big)}{\sum_{j=1}^{N}\exp\big(\operatorname{sim}(I,T_j)/\tau\big)}
通俗说明:这是让模型在N个文本候选中做“选择题”,正确答案得分越高、错误答案得分越低,这道题就越简单,损失就越小。
  1. 配对相似度先计算图片I与正确文本T的相似度,分数越高代表模型越确信它们是一对。
    sim⁡(I,T)=f(I)⋅g(T)∥f(I)∥ ∥g(T)∥\operatorname{sim}(I,T) = \frac{f(I)\cdot g(T)}{\|f(I)\|\,\|g(T)\|}
  2. 温度系数缩放把相似度除以温度τ,让分数分布更尖锐或更平缓,控制模型“下注”的自信程度。
    τ=0.07\tau = 0.07
  3. 负样本归一化分母把批次内所有文本的得分加起来做归一化,相当于把判断题变成“多选一”的选择题。
    ∑j=1Nexp⁡(sim⁡(I,Tj)/τ)\sum_{j=1}^{N}\exp\big(\operatorname{sim}(I,T_j)/\tau\big)

零样本分类

有一天,馆长递给图书管理员一张新照片,问:“这上面是猫还是狗?”管理员没有翻教材、没有问同事,只是在心里默念两张“知识卡片”——“一张猫的照片”和“一张狗的照片”——然后把新照片往概念地图上一放,看看它和哪张卡片更“气味相投”。

这就是零样本分类的核心逻辑:分类根本不依赖任何标注图像。用户只需给出类别的名字,CLIP先把它套进一句自然语言模板里变成文本,比如"a photo of a cat",再交给文本编码器得到类别文本向量。与此同时,待分类图片经过图像编码器得到图像向量。最后比较图像向量和每个类别向量的距离,谁最近,图片就属于谁。

形式化地说,设图片为I,类别集合为{c₁,……,c_C},每个类别c对应的模板文本为T_c,预测结果就是相似度最大的那个类别。

整个过程就像管理员在地图上做了一次“就近落户”:新图片落在哪个街区的“邻居”最多,它就归入哪个街区。全程没有任何标注、没有任何训练,这就是“零样本”的含义——一次训练,处处可用。

y^=arg⁡max⁡csim⁡(f(I), g(Tc))\hat{y} = \arg\max_{c} \operatorname{sim}\big(f(I),\, g(T_c)\big)
通俗说明:在所有候选类别中,挑出与图片向量“距离最近”的类别文本作为预测答案。
  1. 图像特征f(I)是图像编码器输出的特征向量,浓缩了图片的视觉语义。
    f(I)∈Rdf(I) \in \mathbb{R}^{d}
  2. 类别文本特征g(T_c)是第c个类别模板经文本编码器得到的向量,与图像特征同处一个维度空间。
    g(Tc)∈Rdg(T_c) \in \mathbb{R}^{d}
  3. 遍历比较选冠军argmax遍历所有类别,把相似度得分最高者作为预测标签。
    scorec=sim⁡(f(I),g(Tc)),y^=arg⁡max⁡cscorec\text{score}_c = \operatorname{sim}\big(f(I), g(T_c)\big), \quad \hat{y} = \arg\max_c \text{score}_c

零样本检索

馆长又从口袋掏出一张纸条,上面写着“下雨天窗边趴着的猫”,命令管理员:“去图库里把这张图找出来。”管理员扫了一眼纸条,把这句话翻译成一个坐标,飞身跃入概念地图,逐一与图库中每张图的坐标比对距离,最近的那张被一把抓住。

这就是零样本检索。与分类不同,检索面对的不是几个固定类别,而是一个开放式大图库。查询端是任意自然语言,候选端是成千上万张图片。CLIP把查询文本变成向量,再与所有图片向量批量计算相似度,按分值从高到低排序,返回最相关的K张图。反过来,给一张图片去搜文本描述,流程完全对称,这就是“双向检索”。

对每个候选图片p_i,模型给出它与查询q的匹配概率,常用softmax形式的相似度打分。

管理员“听描述找图”靠的是地图上的距离感,而“看图找描述”只是把探针换成了图片。同一张地图、同一套距离法则,只是方向换了,这就是跨模态检索最优雅的地方。

P(q,pi)=exp⁡(sim⁡(g(q),f(pi))/τ)∑j=1Nexp⁡(sim⁡(g(q),f(pj))/τ)P(q, p_i) = \frac{\exp\big(\operatorname{sim}(g(q), f(p_i))/\tau\big)}{\sum_{j=1}^{N}\exp\big(\operatorname{sim}(g(q), f(p_j))/\tau\big)}
通俗说明:把查询与图库中N张图的相似度“拧成”一个概率分布,每张图得到的概率就是它的检索得分。
  1. 查询文本向量g(q)是用户查询经过文本编码器得到的向量,是检索的“探针”。
    g(q)∈Rdg(q) \in \mathbb{R}^{d}
  2. 候选图片向量f(p_i)是图库中第i张图的图像特征,检索前通常离线全部算好并建索引。
    f(pi)∈Rdf(p_i) \in \mathbb{R}^{d}
  3. 排序并取前K把所有候选按概率从大到小排成一列,取最前面的K个作为检索结果返回。
    P(1)≥P(2)≥⋯≥P(N),取前 K 个P_{(1)} \ge P_{(2)} \ge \cdots \ge P_{(N)},\quad \text{取前 } K \text{ 个}

Prompt工程优化

时间久了,馆长发现一个规律:同一句话,说得越“像人话”,管理员找得越快。如果你只说“狗”,他还要犹豫一下;但如果你说“一只狗的彩色照片”,他几乎秒回。因为管理员当年读的4亿张卡片上,配文都是完整的句子,而不是孤零零的单词。

这个发现对应到CLIP上,就是Prompt Engineering(提示工程)。CLIP的文本编码器是在“完整句子”上训练的,直接喂一个裸标签“dog“,得到的向量不够稳定;套上模板”a photo of a dog”后,文本分布与训练时更接近,提取出的语义特征更可靠。

类别文本的构造可以抽象成模板公式。对通用场景,最常见的是“a photo of a {label}“;对专业领域,可定制前后缀,例如卫星图用”a satellite photo of a {}”。

就像跟管理员说话时,把“狗”扩展成“一只狗的彩色照片”,他会心领神会。Prompt的深意正在于此:它不是命令,而是与预训练模型“沟通”的说话方式——话说得越对路,模型越懂你。

Tc=Pprefix+labelc+PsuffixT_c = P_{\text{prefix}} + \text{label}_c + P_{\text{suffix}}
通俗说明:类别文本不是只有标签名,还可以在前面和后面加“话”,把标签放进一个完整的句子里,让文本编码器更好地理解它。
  1. 前后缀包裹prefix和suffix是人为设计的短语,它们把标签补齐成训练分布中常见的完整句子,本质上是一种域适配。
    Tc="a photo of a "+labelcT_c = \text{"a photo of a "} + \text{label}_c
  2. 领域定制模板针对特定数据分布改前缀,例如遥感图像用"a satellite photo of a",能明显提升下游零样本准确率。
    Tcsat="a satellite photo of a "+labelcT_c^{\text{sat}} = \text{"a satellite photo of a "} + \text{label}_c
  3. 多模板集成同一类别写多个同义模板分别编码,再平均得到类别向量,可以消除单一模板带来的随机偏差。
    Tcens=1M∑m=1Mg(Tc(m))T_c^{\text{ens}} = \frac{1}{M}\sum_{m=1}^{M} g\big(T_c^{(m)}\big)

跨模态检索原理

为什么管理员能在图片和文字之间自由穿梭?因为他脑海里那张概念地图有一个迷人的特性:猫的图片和“猫”这个词,在坐标上几乎重合;“下雨天窗边趴着的猫”和对应的照片,也紧紧相邻。图片和文本,两个原本毫不相干的模态,在共享空间里被“钉”在了一起。

跨模态检索的全部秘密,就是这份共享语义空间。CLIP训练时把配对的图文拉近、不配对的推远,最终使图像编码器和文本编码器输出的向量落在同一片空间里,让“文本向量与图像向量直接比较大小”成为可能。任何跨模态检索,本质上都是在这片空间里做最近邻查找。

两个向量接近程度的度量,最常用的是余弦相似度——它只看方向、不受向量长度影响。

所以CLIP检索的本质,不是“理解”句子,而是把句子和图片都翻译成同一坐标系里的坐标,然后在坐标系里丈量距离。管理员穿梭图文世界的“超能力”,不过是一张精密的语义地图加上一把刻度清晰的尺子。

sim⁡(u,v)=u⋅v∥u∥2 ∥v∥2=cos⁡θ\operatorname{sim}(u, v) = \frac{u \cdot v}{\|u\|_2\,\|v\|_2} = \cos\theta
通俗说明:把两个向量想象成从原点出发的两支箭,余弦相似度描述的是两支箭夹角的大小,夹角越小越相似。
  1. 向量点积u·v把两个向量的对应分量相乘再相加,数值越大方向越一致。
    u⋅v=∑k=1dukvku \cdot v = \sum_{k=1}^{d} u_k v_k
  2. L2范数归一化分母除以各自的长度,消除图像向量与文本向量在“尺度”上的差异,只保留方向信息。
    ∥u∥2=∑k=1duk2\|u\|_2 = \sqrt{\sum_{k=1}^{d} u_k^2}
  3. 夹角θ的意义余弦值等于cosθ,θ越接近0度相似度越接近1,θ为90度时相似度为0,超过90度为负。
    cos⁡θ∈[−1,1]\cos\theta \in [-1, 1]

性能对比分析

馆长身边有一些“专才图书员”,他们只负责认猫,在一个包含100万张猫图的资料库里训练了整整一个月,并在测试集上达到95%的准确率。馆长问管理员:“你从没受过猫图专项训练,敢和专才比比吗?”管理员笑了笑,接过同一批测试图。

比试结果很有意思。在ImageNet这样的大规模通用图像数据集上,CLIP零样本准确率达到76.2%,而经典有监督模型ResNet-50为76.3%——几乎持平!一个没做过专项训练的通才,与一个精心训练过的专才打平了。更令人惊讶的是,当图像分布发生偏移(比如换艺术风格、加噪声),通才的鲁棒性反而常常更好。

不过比分并非一边倒。在细粒度分类、医学影像等专有领域,CLIP零样本与专项有监督模型差距明显,因为这些类别的语义在预训练数据中出现得少。用相对准确率增益公式可以直观量化差距:

这场比试告诉我们:零样本不是万能神药,但它最大的价值在于“通用性”——在一个领域里攒下的见识,可以零成本迁移到无数新任务上。通才与专才,各有各的用武之地。

Δ=Acc⁡ZS−Acc⁡SUPAcc⁡SUP×100%\Delta = \frac{\operatorname{Acc}_{\text{ZS}} - \operatorname{Acc}_{\text{SUP}}}{\operatorname{Acc}_{\text{SUP}}} \times 100\%
通俗说明:Δ表示零样本相对有监督准确率的“领先/落后百分比”,正数代表零样本更强。
  1. 零样本准确率Acc_ZS是CLIP不做任何微调直接分类的准确率,例如ImageNet上的76.2%。
    Acc⁡ZS=76.2%\operatorname{Acc}_{\text{ZS}} = 76.2\%
  2. 有监督准确率Acc_SUP是专才模型在完整标注训练集上训练后的准确率,例如ResNet-50的76.3%。
    Acc⁡SUP=76.3%\operatorname{Acc}_{\text{SUP}} = 76.3\%
  3. 计算增益代入公式得到Δ≈-0.13%,说明两者几乎打平;在分布偏移场景下Δ往往为正。
    Δ≈−0.13%\Delta \approx -0.13\%

视觉应用构建

馆长终于决定建设一座新图书馆,从零搭建图片分类和搜索系统。按老办法,要先招募专才、花几个月标注数据、训练模型;但有了管理员,新馆只用了一天就上线了——因为管理员不需要培训,只需要“说清楚规则”。

这正是CLIP零样本能力在工程上的巨大价值:快速原型验证。当业务方提出“帮我识别图片里的车辆类型”或“让我用一句话搜公司内网图片”时,AI应用开发者不需要四处收集标注、不启动训练任务,直接用CLIP的零样本分类/检索接口即可交付可用MVP,验证需求后再决定是否训练专用模型。

搭建一个以文搜图系统,典型流程是:离线把图库所有图片过一遍图像编码器,得到向量后建立索引;在线将用户查询送入文本编码器,与索引向量计算相似度并取Top-K。评估系统质量常用Recall@K指标:

零样本能力的工程意义,是把“模型训练”从视觉应用的启动条件变成了可选项。管理员一个人就是一支成建制的部队,先让他顶上去,等业务规模验证了、标注数据攒够了,再训练专才也不迟。

Recall@K⁡(q)=1[rank⁡(q,p+)≤K]\operatorname{Recall@K}(q) = \mathbb{1}\big[\operatorname{rank}(q, p^+) \le K\big]
通俗说明:对于一次查询,如果正确答案排在返回的前K名之内,这次搜索就“命中”了;统计所有查询的命中率,就是Recall@K。
  1. 正样本排序rank(q, p⁺)是查询q对应正确图片p⁺在相似度排序中的名次。
    rank⁡(q,p+)=1+∑j=1N1[sim⁡(q,pj)>sim⁡(q,p+)]\operatorname{rank}(q, p^+) = 1 + \sum_{j=1}^{N}\mathbb{1}\big[\operatorname{sim}(q, p_j) > \operatorname{sim}(q, p^+)\big]
  2. 命中判定指示函数在名次≤K时为1,否则为0,表示“是否进了前K”。
    1[⋅]∈{0,1}\mathbb{1}[\cdot] \in \{0, 1\}
  3. 汇总统计对所有测试查询求平均,得到系统在Top-K下的召回能力。
    Recall@K⁡=1∣Q∣∑q∈QRecall@K⁡(q)\operatorname{Recall@K} = \frac{1}{|Q|}\sum_{q\in Q}\operatorname{Recall@K}(q)

AI 应用场景

跨境电商“以文搜图”

阶段:零样本检索 + 跨模态检索应用

解决的问题:传统商品搜索依赖人工打好的文本标签和类目,用户很难用“日落时分的海边露营风格”这种语义描述找到商品;人工打标成本高且覆盖不了长尾商品。

具体案例:某跨境电商平台接入CLIP,把数万张商品图离线编码成向量并建立索引。用户输入任意自然语言描述,系统在毫秒级返回Top-10相似商品。新商品上架无需任何人工作标即可被搜到,搜索转化率提升明显。

内容审核的零样本初筛

阶段:零样本分类应用

解决的问题:违规图片种类繁多且变化快,传统分类模型需要不断收集新标注、重新训练,响应速度跟不上黑产节奏。

具体案例:某内容平台安全团队把“违规图片描述”写成类别文本(如“含有刀具的危险场景”),用CLIP对全平台新上传图片做零样本分类初筛。出现新型违规时,只需改一行prompt就能在一小时内覆盖新规则,先过滤明显违规,再交给人工复审。

智能相册的自然语言回忆

阶段:零样本检索 + 图文双向检索

解决的问题:传统相册只能按时间、地点或人工相册分类,用户想找“去年夏天在海滩的合照”往往要翻很久。

具体案例:手机厂商在端侧部署轻量CLIP模型,将本地照片全部编码成向量。用户用自然语言描述记忆中的画面(“生日聚会切蛋糕”),相册App直接返回匹配照片,体验上相当于给整个相册装了一个“万能搜索框”。

Python 演示

python41 行
import torchfrom PIL import Imagefrom transformers import CLIPProcessor, CLIPModel  class CLIPZeroShot:    """CLIP zero-shot classification and retrieval demo."""     def __init__(self, model_name="openai/clip-vit-base-patch32"):        self.model = CLIPModel.from_pretrained(model_name)        self.processor = CLIPProcessor.from_pretrained(model_name)     def classify(self, image_path, labels, template="a photo of a {}"):        image = Image.open(image_path)        texts = [template.format(label) for label in labels]        inputs = self.processor(text=texts, images=image,                                return_tensors="pt", padding=True)        with torch.no_grad():            logits = self.model(**inputs).logits_per_image[0]        probs = logits.softmax(dim=0).tolist()        return sorted(zip(labels, probs), key=lambda x: x[1], reverse=True)     def search(self, query, image_paths, template="a photo of a {}",               top_k=3):        images = [Image.open(path) for path in image_paths]        inputs = self.processor(text=template.format(query), images=images,                                return_tensors="pt", padding=True)        with torch.no_grad():            logits = self.model(**inputs).logits_per_text[0]        probs = logits.softmax(dim=0).tolist()        ranked = sorted(zip(image_paths, probs),                        key=lambda x: x[1], reverse=True)        return ranked[:top_k]  if __name__ == "__main__":    clf = CLIPZeroShot()    result = clf.classify("cat.jpg", ["cat", "dog", "bird"])    print(result)    hits = clf.search("a dog playing", ["cat.jpg", "dog.jpg", "bird.jpg"])    print(hits)
目的:使用transformers库加载CLIP模型,实现零样本图像分类和以文搜图检索的完整流程。
  1. self.model = CLIPModel.from_pretrained(model_name)加载预训练好的CLIP模型,权重来自4亿图文对。
  2. self.processor = CLIPProcessor.from_pretrained(model_name)处理器负责把图片和文字统一整理成模型需要的输入格式。
  3. texts = [template.format(label) for label in labels]把每个类别标签套进prompt模板,生成类别句子。
  4. inputs = self.processor(text=texts, images=image, return_tensors="pt", padding=True)图像和文本一起送入处理器,得到张量输入。
  5. logits = self.model(**inputs).logits_per_image[0]得到图片与每个类别文本的匹配得分向量。
  6. probs = logits.softmax(dim=0).tolist()把得分转成概率,方便排序比较。
  7. ranked = sorted(zip(image_paths, probs), key=lambda x: x[1], reverse=True)检索时按相似度概率降序排列图片路径。

常见误区

误区既然叫零样本,那CLIP应该对图像和文本一无所知吧?它是靠某种神奇规则在硬猜,和随机瞎猜差不多。

正解零样本指的是“没有针对某个下游任务微调”,而不是“没有见过训练数据”。CLIP在4亿图文对上进行过大规模预训练,它见多识广,只是没有为“猫狗分类”这件事专门补课。就像图书管理员读了4亿张卡片,只是没参加过“猫狗鉴别”考试,但他对世界是有充分常识的。

为何常见:“零样本”这个名字太有迷惑性,新手很容易从字面理解成“零数据、零见识”。

误区CLIP这么强,那我把任何类别名称写进去,它都应该分得很准,包括罕见鸟类、医学病理、抽象概念。

正解CLIP的零样本性能高度依赖预训练数据中该类别的覆盖程度。常见物体(猫、狗、汽车)效果很好,但细粒度品种、冷门专业领域、抽象艺术概念等会明显掉点。管理员虽然博学,但也不是所有冷门领域的专家。

为何常见:看到ImageNet上76.2%的惊艳成绩后,人们容易高估模型的泛化边界,把它当成万能分类器。

误区类别标签用“dog“还是”a photo of a dog”,差别不大,反正都是同一个意思,模型应该都能理解。

正解对CLIP来说差别很大。文本编码器是在完整句子上训练的,裸标签的文本特征不稳定,套上贴近训练分布的模板后,零样本准确率能提升好几个百分点。对专业场景,定制模板的收益更明显。跟管理员说话的方式,直接决定他办事的准确度。

为何常见:人们习惯用“标签即关键词”的旧思路,忽略了CLIP是在“句子语义”层面工作的。

误区专门训练过的模型肯定比没训练过的CLIP强,有监督是永远的神,零样本只是玩具。

正解在ImageNet上CLIP零样本(76.2%)与ResNet-50有监督(76.3%)几乎持平;在分布偏移或数据稀缺场景,零样本的鲁棒性和泛化性反而更优。有监督模型在它的“舒适区”很强,但一出舒适区就容易崩;通才虽然单项成绩不突出,胜在全面。

为何常见:直觉上“专门训练”应该碾压“通用预训练”,忽略了CLIP预训练数据规模带来的常识积累。

误区我把CLIP在下游任务上微调了一下,准确率更高了,那以后所有任务都交给它就行。

正解微调可能损害CLIP原本的零样本泛化能力,尤其在数据量小的任务上,模型容易“学忘本”(灾难性遗忘)。微调时需要保留部分原始能力或使用正则化技巧,不能指望一个模型吃遍所有场景。

为何常见:人们看到微调后指标上涨就认为万事大吉,忽略了泛化能力的隐性损失。

面试题

Q1. CLIP中“零样本”主要指什么?

单选题 · easy

  • A.模型完全不需要任何训练语料
  • B.模型没针对下游任务专门微调← 正确答案
  • C.模型只学文本没有学过图像
  • D.模型的所有参数恰好全部为零

答案:B。零样本的核心是“没为具体任务微调”,而不是“没训练过”。CLIP在4亿图文对上预训练过,只是下游分类/检索时直接使用、不再针对任务更新参数,就像见多识广的管理员没参加专门的猫狗考试,但常识丰富。

Q2. CLIP用什么方式同时编码图像和文本?

单选题 · easy

  • A.单个编码器同时处理两个模态
  • B.图像文本各用独立编码器处理← 正确答案
  • C.三个编码器融合多模态信息
  • D.只在推理阶段才执行编码操作

答案:B。CLIP采用双塔结构,图像编码器和文本编码器各自独立,分别输出图像向量和文本向量,最后在共享语义空间中对齐。这就像管理员的“眼睛”和“耳朵”是两套系统,但信息汇入同一张概念地图。

Q3. CLIP预训练时的核心优化目标是什么?

单选题 · mid

  • A.让图像和文本各自进行像素重建
  • B.使配对图文相似度高不配对低← 正确答案
  • C.让文本模型直接预测图像内容
  • D.把图像压缩成低维稠密特征向量

答案:B。CLIP训练目标是对比学习:让配对的图文对相似度更高,不配对的相似度更低。它不做像素重建,也不预测像素,而是通过“拉近正确配对、推远错误配对”来学习图文语义对齐。

Q4. 零样本分类中,将“dog“改为”a photo of a dog”这类模板为什么有用?

多选题 · mid

  • A.模板与预训练见过的文本更接近← 正确答案
  • B.模板让语义特征更稳定更清晰← 正确答案
  • C.模板会直接修改图像的内容
  • D.模板只能使用完全固定的英文

答案:AB。CLIP的文本编码器在完整句子上训练,裸标签特征不稳定,套用自然语言模板后文本分布更接近训练分布,语义特征更稳定。模板不会改图片,也不限于固定英文,可以按领域定制。

Q5. 给定文本查询“一只在沙滩奔跑的金毛犬”,CLIP检索图片的主要依据是什么?

单选题 · mid

  • A.文本关键词在图片中有形标注
  • B.文本与图片的余弦相似度最高← 正确答案
  • C.图片文件的创建时间最新鲜
  • D.图片分辨率在库中最高最清晰

答案:B。CLIP将查询文本编码为向量,再与图库中每张图片的向量计算余弦相似度,相似度最高的图片被返回。相似度度量的是语义距离,与文件时间、分辨率等元信息无关。

Q6. 与单模态检索相比,跨模态检索的最大特点是什么?

单选题 · mid

  • A.查询与候选分别来自两个模态← 正确答案
  • B.检索无需索引也能精准召回
  • C.检索对象必须全部都是文本
  • D.检索结果永远没有排序概念

答案:A。跨模态检索中,查询和候选对象来自不同模态(如文本查图片、图片查文本),通过共享语义空间统一比较。B、C、D都不符合事实:大图库仍需索引,对象可以是图片或文本,输出通常按相似度排序。

Q7. 下列哪些做法能提升CLIP零样本效果?

多选题 · hard

  • A.精心设计类别文本的提示模板← 正确答案
  • B.补充上下文让类别语义更清晰← 正确答案
  • C.已训好的模型增大批大小微调
  • D.推理时随机裁剪图片干扰查询

答案:AB。Prompt工程(设计模板、补充上下文)能显著提升零样本准确率。C是训练期技巧,对已训好的模型在推理时无效;D是干扰操作,会降低检索/分类效果。

Q8. CLIP在ImageNet零样本准确率(约76.2%)接近ResNet-50有监督(约76.3%),最主要原因是什么?

单选题 · hard

  • A.ImageNet类别在预训练数据中高频← 正确答案
  • B.CLIP参数量远大于ResNet五零
  • C.零样本效果天然胜过有监督
  • D.有监督报告的结果包含明显错误

答案:A。CLIP的4亿图文对覆盖了大量常见物体,ImageNet的1000个类别大多在预训练数据中高频出现,所以零样本才能逼近有监督。参数量大不是充分理由,零样本也不会天然胜过有监督,有监督结果本身可靠。

Q9. 关于CLIP零样本能力的局限,下列说法正确的有哪些?

多选题 · extreme

  • A.细粒度新类别识别准确率很低← 正确答案
  • B.抽象概念和罕见领域理解有限← 正确答案
  • C.任意分布下都超过有监督模型
  • D.未见过的类别词效果急剧下降← 正确答案

答案:ABD。CLIP对细粒度类别、抽象概念、罕见领域理解有限,类别词若不在预训练分布中,效果会明显下降。它并非在任何分布下都超过有监督,C过于绝对,是错误的。

Q10. 利用CLIP快速构建图像分类应用时,最合适的流程是什么?

单选题 · easy

  • A.先采百万标注数据再重新训练
  • B.类别文本加相似度排序快速上线← 正确答案
  • C.手工设计图像特征提取器部署
  • D.必须用GPU训练三个完整周期

答案:B。CLIP零样本分类不需要标注数据和训练,只需把候选类别写成文本模板,与图片算相似度排序即可快速上线原型。A、C、D都是传统耗时做法,与零样本快速构建的理念相悖。