想象一间双语幼儿园。外教 CLIP 来自英文世界,只会说“cat、dog、car”;小朋友们却拿着中文绘本追问:“老师,这只橘色的猫叫什么呀?”外教只能摊手——它从没见过“橘猫、流浪猫、加菲猫”这些中文表达。Chinese-CLIP 就是一位读过两亿张“中文看图说话卡片”的双语班主任:图片还是那张图,却终于学会了用中文描述它。这篇文章就用“双语课堂”这个比喻,从模型诞生背景、双塔架构、中文数据与分词器、与原版 CLIP 的对比、零样本能力以及工程应用六个角度,帮零基础读者建立对多语言 CLIP 的完整直觉。
对 AI 从业者的价值:学会 Chinese-CLIP 后,你可以为电商搜索、内容审核、多模态问答等场景直接构建中文多模态应用,而不必依赖英文 CLIP 再做昂贵的中文适配。
可视化演示
展示Chinese-CLIP双编码器架构、跨模态对比学习对齐空间,以及与原始CLIP在语言、数据和零样本能力上的对比分析。
本节配有交互动效(进入视口后自动加载,约 3KB)。
双编码器架构:文本与图像并行编码 TXT=中文文本 BERT/RoBERTa编码 IMG=图像 ViT视觉编码器 T_emb = BERT(text), I_emb = ViT(image) 双塔结构映射到共享语义空间
模型诞生背景
想象一所只接收外教的“双语幼儿园”。原版 CLIP 就是从美国来的外教,它认识英文卡片:cat、dog、car。你可以把它掌握的知识想象成一本厚厚的英文儿童画册。中国小朋友拿着一张画着“猫”的图片问外教“这是什么”,外教只会回答“cat”。至于“一只橘猫”“加菲猫”“街角的流浪猫”这种更细的中文表达,它完全无法组织。
Chinese-CLIP 的出现,相当于给这所幼儿园请来一位双语班主任。班主任既懂图片里的视觉常识(猫长什么样),又掌握中文这门语言(“猫”“橘猫”“猫咪”都指向同一个对象)。它要做的事情,就是让“看图说话”这件事在中文语境里同样成立。
原始 CLIP 使用约 4 亿个英文图文对训练,文本主要来自英文网页的 alt 描述,中文图文数据占比极低。更根本的问题是,CLIP 的 BPE 词表面向英文,汉字在词表中覆盖率低,成语、叠词、网络新词很难被完整表达。Chinese-CLIP 构建了约 2 亿个中文图文对,从中文语义出发重新训练双塔,让“图片”和“中文描述”进入同一个语义度量空间。这里说的“度量空间”,是指所有图片和文本都被编码成向量,向量之间的距离衡量语义相似度。
所以中文 CLIP 要做的第一件事,就是把“外教卡册”替换成“中文绘本”——图片还是那张猫,文本从“cat”变成“一只橘猫”,并且让两者在向量坐标系里尽量靠近。这一步不完成,后续所有中文零样本应用都是空中楼阁。
- 图像向量\( \mathbf{v}_I \):视觉编码器把图片压缩成固定长度向量,相当于老师眼中这张图片的“画像”。
- 文本向量\( \mathbf{v}_T \):文本编码器把中文句子转成同样维度的向量,相当于学生听到的“口令”。
- 归一化分母\( \lVert \cdot \rVert_2 \):除以两个向量的模长,让相似度只由方向决定,不受句子长短影响。归一化后,语义越接近,点积越接近 1。
双塔架构与对比学习
继续看这所双语幼儿园的“配对游戏”:老师把图片挂在黑板左侧,小朋友把中文词卡举在右侧。游戏规则很简单——把正确的图文配成一对。图片“猫”要配“一只猫”,而不是配“汽车”。这个配对游戏,就是对比学习。
Chinese-CLIP 有两个编码器,俗称“双塔”。图像塔负责看图,常见结构是 ViT 或 ResNet;文本塔负责读中文,通常基于 BERT/RoBERTa 的中文预训练模型。两个塔各自输出特征向量后,通过对比学习让正确图文对的向量在空间中互相靠近、错误配对互相远离。训练时,一个批次里有 N 张图和 N 条文本,可以组成 N×N 个候选对,其中只有 N 个是正样本,其余都是负样本。
技术实现上,它使用对称的 InfoNCE 损失,也就是 CLIP 损失。这个损失等价于同时做两个分类任务:从图找文,从文找图。温度系数 τ 控制相似度分布的锐利程度,τ 越小,模型越“敢”给出极端置信度。
训练完成后,图片与正确中文文本就像同桌,向量距离很近;其他文本则被推到远处。推理时不需要再“上课”,随便给一张图和一段中文,模型都能算出它们能不能对上暗号。
- 分子奖励\( e^{\mathrm{sim}(\mathbf{I}_i,\mathbf{T}_i)/\tau} \):第 i 张图与它自己的文本相似度被指数放大,作为正确配对的得分。
- 分母负样本惩罚\( \sum_{j=1}^{N} e^{\mathrm{sim}(\mathbf{I}_i,\mathbf{T}_j)/\tau} \):把第 i 张图和批次里所有文本的相似度都加起来,正确配对必须在“全班同学”中足够突出。
- 温度系数\( 1/\tau \):放大相似度之间的差距,帮助模型更果断地区分正负样本。
- 对称平均\( \frac{1}{2N}\sum_{i=1}^{N}[\cdot + \cdot] \):既看“图找文”,也看“文找图”,保证两个塔同步进步。
中文数据与分词器
外教以前用的是英文闪卡,现在班主任要换成中文绘本,还得先准备一本“中文词典”。中文分词与英文不同,英文单词之间有天然空格,中文必须靠分词器把连续的汉字切分成有意义的单元。经典的例子是“武汉市长江大桥”——切分成“武汉/市/长江/大桥”和“武汉市/长江/大桥”意思完全不同。
Chinese-CLIP 的训练数据来自搜索和社交网络的中文图文对,论文中规模约 2 亿对。这些数据不能直接使用,需要清洗:过滤图文无关的配对、重复图片、低分辨率图片以及质量过低的描述文本。清洗之后,原始 CLIP 的英文 BPE 分词器也不适用,Chinese-CLIP 使用面向中文的 BERT/RoBERTa-wwm 词表,能按字或词切分,并保留中文特有的成语、叠词等语义单元。
一句话进入文本塔的完整过程,可以写成这样的公式:
分词器准备好之后,口语课上就不会再把“猫”听成“毛”了。同一张图片,外教说英文“cat”,班主任说中文“猫”,学生都能指向同一张卡——这正是共享语义空间的妙处。
- 分词\( \text{Tokenize}(\cdots) \):把句子拆成 token 序列,例如“一 / 只 / 橘猫 / 在 / 晒太阳”。
- 拼接标记\( [\text{CLS}] \oplus \):在 token 序列最前面加入 CLS 标记,BERT 系模型用它汇总整句语义。
- 文本编码器\( \text{Encoder}_{\text{text}} \):多层 Transformer 把 token 序列编码为向量,CLS 位置的输出就是整句话的语义向量。
与原版CLIP对比
外教在英国课堂上教得很好,但一来到中文幼儿园,口语成绩就大幅下滑。双语班主任在中文本科班毕业,又继承了外教的视觉经验——它看得懂图片内容,也听得懂中文,自然比外教更适合这间教室。
Chinese-CLIP 与原始 CLIP 的核心差异体现在四个方面。第一是训练数据,原版用英文图文对,中文版用中文图文对,中文概念和语感天然更强。第二是文本编码器,原版基于英文词表,中文版基于中文 RoBERTa-wwm,能高效处理中文长句和特殊表达。第三是初始化方式,Chinese-CLIP 通常复用原版 CLIP 的图像编码器权重作为热启动,再在中文数据上全量微调,既保留通用视觉常识,又完成语言切换。第四是效果,在 MUGE、Flickr30K-CN、COCO-CN 等中文图文检索基准上,Chinese-CLIP 的零样本检索成绩显著高于未做中文适配的原版 CLIP。
衡量图文检索效果最常用的指标是 Recall@K,它回答的问题是:在返回的前 K 个结果里,正确的那一个有没有出现。
所以不要以为 Chinese-CLIP 只是给 CLIP 换了一本词典——它连“教材、口语环境、班主任的语言习惯”全部换成了中文。更妙的是,因为两种语言共享同一个语义空间,中文“猫”和英文“cat”会被映射到邻近位置,跨语言检索因此成为可能。
- TopK 排名\( \mathrm{Top}_K(\mathrm{sim}(\mathbf{I}_i, \mathbf{T}_j)) \):对第 i 张图,把所有候选文本按相似度从高到低排序,取前 K 个。
- 命中判断\( \mathbb{1}(y_i \in \cdot) \):如果正确文本 y_i 落在前 K 名内,记 1,否则记 0。
- 平均召回\( \frac{1}{N}\sum_{i=1}^{N} \):对所有查询样本求平均,得到整体召回率。
中文零样本能力
期中考试来了。班主任不给学生任何预先复习材料,直接拿出一张从没见过的新照片问:“这是猫还是狗?”学生只需要在脑海中把图片与中文词卡“猫”“狗”一一比对,就能给出答案。这就是零样本能力——不动任何模型参数,只靠“图片”和“中文文本”的语义匹配完成分类。
零样本图像分类的具体做法是:把每个候选类名填进模板,比如“一张{类别}的照片”,文本塔把这些模板变成类别向量;图像塔把测试图片变成图像向量;然后计算图片向量与所有类别向量的相似度,做 softmax 概率归一化。概率最高的类别就是预测结果。
在 MUGE、Flickr30K-CN、COCO-CN 等中文基准上,Chinese-CLIP 仅靠零样本就能达到较高的图文检索准确率。提示词模板也很讲究,“一张{类别}的照片”和“{类别}的图片”结果会有差异,常见做法是准备多个中文模板取相似度平均。班主任从没“背”过考试题,但因为她见过两亿张看图说话卡片,图片和中文词之间的规律已经内化成了大脑底稿。
- 类别文本向量\( \mathbf{T}_c \):第 c 类的模板文本经过编码后得到的向量,相当于一个动态生成的分类器权重。
- 图像相似度\( \mathrm{sim}(\mathbf{I}_x, \mathbf{T}_c) \):测试图像与每个类别描述的匹配程度。
- Softmax 归一化\( e^{\cdot}/\sum_{c'} e^{\cdot} \):把所有类别的分数转成和为 1 的概率,取最大者作为预测类别。
中文应用实践
双语课堂毕业,学生到社会上能做什么?最简单的例子:用户说“我要买一双白色的运动鞋”,系统直接从商品图库中找出正确的商品图片——这就是从“口令”到“实物”的中文图文检索。
实际应用通常把图库离线编码成向量,存入向量数据库(如 Milvus、Faiss);线上只对中文查询编码一次,再和图库向量做 TopK 相似度检索。图库就算有几亿张图,也能毫秒级返回结果。典型场景包括电商图文检索、内容审核、多模态问答和通用跨语言搜索。
检索排序的核心操作是先算查询向量与所有图片向量的点积,再取前 K 个。
工程部署上,可以用 FP16 半精度和 ONNX 导出加速推理;图片向量预先计算并建立索引,新增大类只需修改提示词模板,不需要重新训练模型。从幼儿园到职场,这个会中文的“看图说话班主任”已经能独立上岗了。
- 查询向量\( \mathbf{q} \):对中文查询文本编码得到的向量,相当于这条“口头订单”的标准写法。
- 点积排序\( \langle \mathbf{q}, \mathbf{v}_{I_i} \rangle \):查询向量与图库中每张图片的特征向量做内积,得到相关分。
- 切片取前 K\( [:K] \):按分数从高到低排序后取前 K 个作为检索结果。
AI 应用场景
电商跨模态图文检索
阶段:商品召回与内容理解
解决的问题:传统电商搜索依赖“关键词→商品标签”的匹配,长尾词覆盖不全。用户说“适合户外运动穿的防水外套”,传统系统很难把它和商品标题“男士冲锋衣”联系起来。Chinese-CLIP 把商品图片和中文标题放进同一个语义空间,任意中文描述都能直接检索图片。
具体案例:某电商平台把 2000 万张商品图离线编码为向量,用户输入“显瘦的黑色连衣裙”,文本塔在线编码查询词后,从向量库中召回 Top50 候选商品,再叠加价格、销量等排序策略。整个链路从过去只能匹配“黑色 连衣裙”两个标签,升级为理解“显瘦”这种抽象语义。
内容安全审核与违规识别
阶段:内容理解与审核
解决的问题:平台每天收到海量 UGC 图片,涉黄、涉政、广告水印等违规样式千变万化,规则库很难穷举。Chinese-CLIP 可以把已确认的违规样本图编码成“黑样本向量库”,然后对新增图片做向量相似度检索。
具体案例:某社区平台整理出 5000 张违规样本图(包含二维码、水印、广告屏摄),用图像塔编码后存入向量库。新上传图片先做一次相似度检索,相似度高于阈值的直接进入人工复审,大幅减少漏判。
多模态问答助手
阶段:任务编排与知识对齐
解决的问题:大语言模型本身不能“看”图片,传统做法是 OCR 抽文字,但 OCR 对非文字类视觉信息无能为力。Chinese-CLIP 可以先把图片编码成视觉向量,再结合中文问题,交给多模态大模型生成答案。
具体案例:用户上传一张菜谱图片,问“这道菜需要什么调料?”系统先用 CLIP 图像塔提取图片特征,检索出最相似的几道菜谱文本,再由 LLM 综合图片和菜谱信息生成回答。这样既利用 CLIP 的视觉理解,又发挥 LLM 的生成能力。
Python 演示
# -*- coding: utf-8 -*-"""使用 Chinese-CLIP 构建一个简易中文零样本图像分类器安装依赖: pip install cn_clip torch pillow"""import torchfrom PIL import Imagefrom cn_clip import clipfrom cn_clip.clip import load_from_name device = "cuda" if torch.cuda.is_available() else "cpu"model, preprocess = load_from_name("ViT-B-16", device=device, download_root="./checkpoints")model.eval()tokenizer = clip.get_tokenizer() categories = ["猫", "狗", "汽车", "飞机", "轮船"]prompts = [f"一张{name}的照片" for name in categories] with torch.no_grad(): text_features = model.encode_text(tokenizer(prompts)) text_features = text_features / text_features.norm(dim=-1, keepdim=True) def predict_image(image_path): image = Image.open(image_path).convert("RGB") image_input = preprocess(image).unsqueeze(0).to(device) with torch.no_grad(): image_features = model.encode_image(image_input) image_features = image_features / image_features.norm(dim=-1, keepdim=True) similarity = image_features @ text_features.T probs = similarity.softmax(dim=-1).squeeze(0).cpu().numpy() return dict(zip(categories, probs)) if __name__ == "__main__": result = predict_image("demo_cat.jpg") for name, prob in result.items(): print(f"{name}: {prob:.3f}")
model, preprocess = load_from_name("ViT-B-16", ...)下载并加载官方中文预训练权重,ViT-B-16 是一个兼顾速度与效果的视觉骨干。tokenizer = clip.get_tokenizer()获取中文分词器,它会把“一张猫的照片”切成模型能读懂的 token。text_features = model.encode_text(tokenizer(prompts))文本塔把所有类别提示词一次性编码成类别向量。similarity = image_features @ text_features.T图片向量和所有类别向量做矩阵乘法,得到“这张图像不像猫、像不像狗”的分数表。probs = similarity.softmax(dim=-1)把分数转成概率分布,最大概率对应的类别就是预测结果。
常见误区
误区以为只需要换一个中文 tokenizer,再加一点中文数据微调就能得到 Chinese-CLIP。
正解Chinese-CLIP 需要大规模中文图文对(约 2 亿对)的端到端训练,并且通常复用原版 CLIP 的图像编码器作为热启动,文本塔在中文数据上全量微调。只换分词器不训练,中文语义和图像特征之间根本没有对齐信号。
为何常见:分词器是“看得见的差异”,而训练数据规模和质量是“看不见的差异”,初学者容易忽略后者。
误区zero-shot 就是“拿来就用”,所以直接拿原版 CLIP 做中文零样本分类也应该有效。
正解零样本是指下游任务不需要微调,但模型本身的预训练必须包含中文对齐信号。原版 CLIP 的中文数据极少,中文零样本效果很差。Chinese-CLIP 正是靠大规模中文预训练才获得真正可用的中文零样本能力。
为何常见:“zero-shot”字面意思容易让人误解为“上游也零训练”,实际上它只是“下游免训练”。
误区英文一个模型、中文一个模型、日语一个模型,各自独立,互不相关。
正解共享语义空间才是多语言 CLIP 的灵魂。中文、英文文本和图像被映射到同一个坐标系,因此英文描述可以检索中文图片,中文描述也可以匹配英文图片。各自独立训练无法实现跨语言互检索。
为何常见:看到不同语言版本,容易联想到“本地化”和“翻译”,而忽略了共享空间带来的跨语言对齐能力。
误区面试和论文里都用 Recall@K,所以选模型只看 R@1 就行。
正解Recall@K 只关心正确结果是否命中,不关心错误结果的排序位置。真实业务还要看 NDCG、MAP 等排序质量指标,以及推理延迟、向量存储成本。当图库达到千万级,向量索引和工程优化的影响可能比模型本身的 R@1 更关键。
为何常见:学术评测指标方便对比,但工程落地是“精度 + 延迟 + 成本”的多目标问题,单一指标容易误导决策。
面试题
Q1. Chinese-CLIP 的文本编码器主要基于哪种预训练模型?
- A.BERT 系列中文预训练模型← 正确答案
- B.LSTM 序列建模单元网络
- C.ResNet 图像特征提取网络
- D.决策树集成模型和算法
答案:A。Chinese-CLIP 的文本塔基于 BERT/RoBERTa-wwm 等中文预训练模型,这是因为它能更好地建模中文语义。LSTM 是循环网络,ResNet 是图像网络,决策树显然不是深度文本编码器。
Q2. CLIP 类模型的核心预训练任务是什么?
- A.预测图像分类标签
- B.匹配海量图文语义组← 正确答案
- C.生成自然语言描述句子
- D.预测下一帧图像像素
答案:B。CLIP 使用对比学习,本质是判断“哪张图和哪段文本是一对”,而不是预测分类标签或生成句子。它通过正负样本配对学习,让正确图文对在向量空间里相互靠近。
Q3. 关于对比学习损失,下列哪个说法正确?
- A.只需要正样本不需要负样本
- B.正样本靠近负样本拉远即可← 正确答案
- C.正样本分开负样本聚拢就行
- D.只为单个量化回归指标优化
答案:B。对比学习的核心是“拉近正样本、推远负样本”。没有负样本,模型会把所有图文都映射到同一点;没有正样本,模型学不到相似语义。选项 C 把正负样本的关系说反了,选项 D 与分类目标无关。
Q4. 在 Chinese-CLIP 图文检索中,图像侧推理输出通常还需要做哪一步?
- A.向量标准化归一化操作← 正确答案
- B.转成小写字符串然后哈希
- C.进行大模型对话式生成
- D.随机裁剪然后做数据增强
答案:A。检索时图像特征和文本特征都要做 L2 归一化,这样点积就等于余弦相似度,分数不受向量长度影响。转字符串、对话生成、数据增强都与检索推理无关。
Q5. Chinese-CLIP 相比原始 CLIP 获得更强中文能力的关键原因是什么?
- A.冻结英文参数只换词典
- B.用中文图文对重新预训练← 正确答案
- C.彻底抛弃视觉编码器部分
- D.只用单模态文本语料库
答案:B。Chinese-CLIP 使用约 2 亿中文图文对进行训练,文本塔在中文数据上全量微调,才获得中文语义和视觉的对齐能力。只换词典不训练没有对齐信号,抛弃视觉塔或只用文本语料都无法完成多模态对齐。
Q6. 零样本图像分类中使用“一张{类别}的照片”这类模板的原因是?
- A.让文本和图像在统一语义空间更好对齐← 正确答案
- B.让模板里的中文单词被分词器忽略掉
- C.降低视觉编码器的参数数量和计算复杂度
- D.将所有类别映射到同一个向量以减小开销
答案:A。模板把离散的类名补全成自然句子,文本塔编码后生成的类别向量更接近真实图文分布。类名单独编码时容易丢失上下文,而模板能提升相似度计算的稳定性。
Q7. 下列哪些是 Chinese-CLIP 的典型应用场景?
- A.电商平台中文图文检索← 正确答案
- B.图片内容的违规审核← 正确答案
- C.视频压缩算法设计
- D.跨语言商品图片匹配← 正确答案
答案:ABD。电商图文检索和内容审核是 CLIP 最直接的应用;跨语言商品匹配依靠共享语义空间也能实现。视频压缩属于传统编码领域,与图文语义对齐无关。
Q8. Chinese-CLIP 的多语言扩展能力体现在哪些方面?
- A.支持中文图文对数据训练← 正确答案
- B.共享空间可跨语言对齐← 正确答案
- C.中文查询检索英文图片← 正确答案
- D.替代所有文本翻译模型
答案:ABC。中文训练数据、共享语义空间和跨语言检索都是多语言扩展的直接体现。但 CLIP 是检索模型,不是生成式翻译模型,不能替代翻译系统。
Q9. 关于 Chinese-CLIP 的工程部署,下面哪些做法合理?
- A.预先把图片库编码到向量库← 正确答案
- B.文本查询在线编码再做检索← 正确答案
- C.直接用原版英文模型代替
- D.用半精度权重加速推理← 正确答案
答案:ABD。图库离线编码、查询在线编码是标准做法,半精度推理可以降低显存和延迟。直接用英文模型会损失中文能力,违背部署 Chinese-CLIP 的初衷。
Q10. 对比损失中温度系数 τ 的作用是什么?
- A.控制相似度分布的锐利程度← 正确答案
- B.决定数据集的样本数量
- C.调整图像分辨率大小
- D.设置不同学习率的值
答案:A。τ 出现在指数内部,除以 τ 后再 softmax,相当于放大或缩小相似度之间的差距。τ 越小,分布越尖锐,模型越“自信”;τ 越大,分布越平坦,训练初期更稳定。它与样本数、分辨率、学习率无关。