Chinese-CLIP
中文CLIP多模态模型,支持中文图文跨模态检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
中文CLIP多模态模型,支持中文图文跨模态检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你是一位电商平台的运营人员,商品图片库里有数十万张商品图,每张图都配有中文商品描述。现在,你只需要输入"适合夏天穿的轻薄连衣裙",系统就能从图库中精准找出匹配的商品图片——不是靠文字标签匹配,而是真正理解了图片的内容和文字的语义对应关系。这正是 Chinese-CLIP 所解决的核心问题。
2022 年,随着 OpenAI 发布 CLIP 模型,多模态学习领域迎来重大突破。CLIP 通过大规模图文对比学习,让模型能够理解图像与自然语言的对应关系,在 zero-shot 图像分类、跨模态检索等任务上展现了惊人的泛化能力。然而,原版 CLIP 主要在英文数据上训练,中文场景下的效果大打折扣。正是在这一背景下,Chinese-CLIP 应运而生——由上海科学智能研究院(OFA-Sys)开源,专门针对中文图文数据进行训练,成为中文多模态领域的重要里程碑。

图:Chinese-CLIP 跨模态检索效果示意——输入中文文本,从图库中检索出语义最匹配的图像。
Chinese-CLIP 的核心架构基于双塔对比学习(Dual-Encoder Contrastive Learning)范式,由图像编码器和文本编码器两部分组成,两者分别将图像和文本映射到同一高维向量空间,通过最大化配对样本的余弦相似度、最小化不配对样本的相似度来学习跨模态表示。
图像编码器方面,Chinese-CLIP 采用了与原版 CLIP 相同的 Vision Transformer(ViT)架构,支持从轻量级的 ViT-B/32 到超大规模的 ViT-H/14 多种模型规格。ViT 将输入图像切分为固定大小的 patch(如 16×16 像素),每个 patch 通过线性投影后作为 token 输入标准 Transformer 编码器,最终聚合全局特征。开发者可以选择适合自己硬件条件的模型规模:
| 模型规格 | 图像分辨率 | 参数量 | 推荐显存 | 适用场景 |
|---|---|---|---|---|
| ViT-B/32 | 224×224 | 151M | 4GB+ | 快速推理、边缘部署 |
| ViT-B/16 | 224×224 | 188M | 8GB+ | 精度-速度平衡 |
| ViT-L/14 | 224×224 | 428M | 16GB+ | 高精度生产环境 |
| ViT-L/14-336 | 336×336 | 428M | 24GB+ | 高分辨率图像 |
| ViT-H/14 | 224×224 | 986M | 48GB+ | 最强性能、科研 |
文本编码器是 Chinese-CLIP 的关键差异点。原版 CLIP 使用 CLIP 专用文本编码器,在中文上效果有限。Chinese-CLIP 则选用了业界公认最强中文预训练模型之一——RoBERTa-wwm-ext(来自哈工大讯飞联合实验室),作为文本侧编码器。该模型在大规模中文语料上进行了全词掩码(Whole Word Masking)预训练,能够更好地捕捉中文语义信息。此外,对于轻量级场景,还支持 RBT3(3层 RoBERTa)作为文本编码器,显著降低计算开销。
在训练数据方面,Chinese-CLIP 使用了约 2 亿对高质量中文图文数据,涵盖网页图文、新闻、电商等多种来源。这一数据规模虽不及 GPT 时代的大模型,但在多模态对比学习领域已属大规模,为模型提供了坚实的中文语义理解基础。
对于大多数用户而言,无需深入训练代码,直接调用预训练模型即可完成多种任务。Chinese-CLIP 提供了清晰的 Python API:
import cn_clip.clip as clip
from PIL import Image
# 加载模型
model, preprocess = clip.load_from_name("ViT-B-16", device="cuda")
model.eval()
# 图片特征提取
image = preprocess(Image.open("example.jpg")).unsqueeze(0).to("cuda")
with torch.no_grad():
image_features = model.encode_image(image)
# 文本特征提取
text = clip.tokenize(["一只可爱的猫", "一辆红色的汽车"]).to("cuda")
with torch.no_grad():
text_features = model.encode_text(text)
# 计算图文相似度
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print(similarity) # 输出每张图与各文本的匹配概率
Chinese-CLIP 最典型的应用场景是图文互检:给定一段中文文本,从图库中找到最匹配的图像;或者给定一张图像,从文本库中找到最相关的描述。这一能力在电商搜索、内容推荐、知识图谱构建等领域有广泛应用。项目在 MUGE、Flickr30k-CN、COCO-CN 等中文基准数据集上进行了系统性评测,效果显著优于直接用英文 CLIP 模型处理中文输入。
无需任何训练数据,用户可以通过自然语言描述来指定分类类别。这种"用语言定义类别"的能力,是 CLIP 系列模型区别于传统分类模型的核心优势——用户无需重新训练模型,即可适配任意分类任务。
在生产环境中推理速度至关重要。Chinese-CLIP 支持将 PyTorch 模型转换为 ONNX 和 TensorRT 格式,在 GPU 上可获得数倍的推理加速。项目提供了完整的转换脚本,支持 FP16 精度推理(进一步降低显存占用、加快速度),部署流程文档详细,覆盖从环境配置到 Benchmark 的完整环节。

图:零样本图像分类示例——输入一张宝可梦图片,通过"是妙蛙种子/是小火龙/是杰尼龟"等文本描述,即可识别图中角色类别。
如果用户有私有领域数据,可以使用知识蒸馏(Knowledge Distillation)方式微调 Chinese-CLIP。项目接入了 ModelScope 模型库,支持使用更大规模的教师模型(如 Chinese-CLIP ViT-H 版本)蒸馏较小规模的学生模型(如 ViT-B 版本),在保持推理速度优势的同时提升精度。这一功能特别适合有领域数据积累但算力有限的研究团队。
项目中还引入了 FLIP(Fast Language-Image Pre-training)训练策略,在微调阶段随机遮蔽部分图像 patch,在减少 50% 图像侧计算量的同时保持模型精度,为资源受限场景提供了高效的微调方案。
Chinese-CLIP 的代码组织清晰,采用了标准的深度学习项目结构:
Chinese-CLIP/
├── cn_clip/
│ ├── clip/ # 核心模型架构定义
│ │ └── model_configs/ # 各规模 ViT 模型配置(JSON)
│ ├── training/ # 训练流程(数据加载、损失函数、优化器)
│ ├── eval/ # 评测流程(Benchmark 评测脚本)
│ ├── deploy/ # 部署相关(ONNX/TensorRT/CoreML 转换)
│ └── preprocess/ # 数据预处理
├── examples/ # 丰富的使用示例(检索结果可视化)
├── run_scripts/ # 微调脚本(MUGE、COCO-CN、Flickr30k 等数据集)
├── deployment.md # 部署详细文档
├── distillation.md # 知识蒸馏文档
└── requirements.txt # 核心依赖
核心依赖:PyTorch ≥ 1.7.1、timm(图像模型库)、Transformers(NLP工具库)、lmdb 1.3.0(大规模数据管理)。
工程亮点:
尽管 Chinese-CLIP 带来了出色的中文多模态能力,在使用时仍需注意以下几点:
算力门槛较高:最大规格 ViT-H/14 模型需要 48GB+ 显存才能高效推理,即便 ViT-B/16 也建议配备 8GB+ 显存的 GPU 设备。这一硬件门槛限制了其在纯 CPU 环境或移动端的直接使用。不过,通过 ONNX/TensorRT 量化压缩,以及 ModelScope/HuggingFace 的在线推理服务,可以有效规避这一问题。
中文 CLIP 的评测基准有限:目前中文图文领域缺乏像英文领域 ImageNet 那样公认的全面评测基准,Chinese-CLIP 主要在几个中文图文检索数据集上评测,在开放域图像分类、细粒度识别等更广泛任务上的泛化能力有待更多验证。
大模型时代的竞争:2023 年以来,GPT-4V、Gemini、Qwen-VL 等大型多模态模型相继问世,它们不仅支持中文,还能进行更复杂的视觉问答、OCR、图表理解等任务。相比之下,Chinese-CLIP 作为对比学习驱动的双塔模型,在端到端视觉理解能力上有天然局限,更适合作为特征提取和检索工具,而非通用视觉助手。
Chinese-CLIP 的开源对中文多模态生态具有深远影响。首先,它填补了中文图文对比学习领域的空白——在它之前,开发者通常只能使用英文 CLIP 模型处理中文图文,或者自行爬取中文数据训练,门槛极高。Chinese-CLIP 提供了一套开箱即用的高质量解决方案,大幅降低了中文多模态应用的开发成本。
其次,Chinese-CLIP 在 ModelScope 和 HuggingFace 两大人工智能开源平台同步发布,并提供了在线 Demo,让没有 GPU 的用户也能直接体验模型的图文检索能力。这种多平台分发策略有效地扩大了项目的传播范围和影响力。
从学术角度看,Chinese-CLIP 论文(arXiv:2211.01335)在中文多模态预训练领域提供了重要的基线工作。其提出的训练方法、评测方案和消融实验,为后续中文多模态研究提供了重要的参考框架。截至目前,该项目已在 GitHub 获得 5983 stars,被 552 个项目 fork,并在中文 NLP 和计算机视觉社区得到广泛使用。
| 场景 | 推荐方式 |
|---|---|
| 快速体验 | ModelScope 在线 Demo(无需配置环境) |
| Python 应用开发 | pip install cn_clip,加载预训练模型直接调用 API |
| 模型微调 | 使用 run_scripts/muge_finetune_vit-b-16_rbt-base.sh 脚本,配合私有数据 |
| 高性能部署 | 参考 deployment.md,转换 ONNX/TensorRT 格式在 GPU 推理 |
| 知识蒸馏 | 参考 distillation.md,使用 ModelScope 教师模型蒸馏小模型 |
Chinese-CLIP 的部署不依赖 Docker/容器化,对于有 GPU 环境的开发者,通过 pip 安装后通常在 30 分钟内即可完成环境配置并运行第一个示例。项目文档提供了中英文两个版本,对不同语言背景的开发者都很友好。