新闻详情

新闻详情

首页 / 资讯中心 / 详情

Chinese-CLIP 完全指南:中文跨模态检索与零样本图像分类的模型、训练与部署实战

发布时间:2026/10/2 17:26:39来源:尧图网络
Chinese-CLIP 完全指南:中文跨模态检索与零样本图像分类的模型、训练与部署实战
人工智能多模态预训练模型评测【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP点击查看免费下载Chinese-CLIP 是基于约 2 亿中文图文对训练的中文版 CLIP 模型覆盖文本到图像检索、图像到文本检索、图文特征生成与零样本图像分类四大能力。本文以仓库 README_En.md 为骨架结合源码与运行脚本系统讲解 5 个开源模型规模的选型、数据预处理、分布式微调、特征提取、KNN 检索与 Recall 评测以及零样本分类的完整落地流程读完即可在自己的中文业务数据上复现检索与分类全链路。一、项目概览与能力定位Chinese-CLIP 是 CLIP 模型的中文版本使用大规模中文图文对数据约 2 亿对训练而成目标是帮助开发者便捷地完成中文数据上的图文特征与相似度计算API 调用、跨模态检索和零样本图像分类。项目代码基于 open_clip project 建设并针对中文数据做了专门优化。从源码结构看仓库 cn_clip 目录下包含了四个核心模块共同支撑起上述能力模块相对路径职责模型定义与加载cn_clip/clip视觉/文本骨干网络、模型配置 JSON、tokenizer、API 加载函数评测cn_clip/eval特征提取、KNN 检索、Recall 计算、零样本评测训练cn_clip/training分布式训练入口、参数解析、调度器预处理cn_clip/preprocessTSV/Jsonl 数据序列化为 LMDB二、模型规模与性能基准2.1 模型卡5 个开源规模的选型参考项目当前开源了 5 个不同规模的 Chinese-CLIP 模型从轻量到重量级覆盖了不同的算力与精度需求模型信息与下载渠道如下表 对应 Hugging Face Hub 对应 ModelScopeModel ID模型规模总参数量视觉骨干视觉参数量文本骨干文本参数量分辨率chinese-clip-rn50CN-CLIPRN5077MResNet5038MRBT339M224chinese-clip-vit-base-patch16CN-CLIPViT-B/16188MViT-B/1686MRoBERTa-wwm-Base102M224chinese-clip-vit-large-patch14CN-CLIPViT-L/14406MViT-L/14304MRoBERTa-wwm-Base102M224chinese-clip-vit-large-patch14-336pxCN-CLIPViT-L/14336px407MViT-L/14304MRoBERTa-wwm-Base102M336chinese-clip-vit-huge-patch14CN-CLIPViT-H/14958MViT-H/14632MRoBERTa-wwm-Large326M224其中 ViT-H/14 的文本侧采用了更大的 RoBERTa-wwm-Large 骨干其余 ViT 系列均搭配 RoBERTa-wwm-BaseRN50 则搭配轻量的 RBT3 文本编码器。在代码侧API 加载函数 cn_clip/clip/utils.py 中的_MODELS与_MODEL_INFO两张映射表与上表一一对应同时记录了各模型的结构组合与输入分辨率例如ViT-B-16RoBERTa-wwm-ext-base-chinese、RN50RBT3-chinese模型在创建时正是依据vision_modeltext_model这种组合命名读取 cn_clip/clip/model_configs 下的两套 JSON 配置来实例化CLIP网络。2.2 实验结果检索与零样本分类基准项目在MUGE Retrieval、Flickr30K-CN、COCO-CN三个中文图文检索数据集上进行了零样本与微调实验并在 ELEVATER benchmark 的 10 个图像分类数据集上验证了零样本分类能力。篇幅所限下表仅列出表现最佳的 Chinese-CLIP 规模模型与基线模型的对比各规模模型的详细指标请参见 Results.md。MUGE 文本到图像检索官方验证集模型R1 (ZS)R5 (ZS)R10 (ZS)MR (ZS)R1 (FT)R5 (FT)R10 (FT)MR (FT)Wukong42.769.078.063.252.777.985.672.1R2D249.575.783.269.560.182.989.477.5CN-CLIP63.084.189.278.868.988.793.183.6Flickr30K-CN 检索官方测试集模型T2I R1 (ZS)T2I R5 (ZS)T2I R10 (ZS)T2I R1 (FT)T2I R5 (FT)T2I R10 (FT)I2T R1 (ZS)I2T R5 (ZS)I2T R10 (ZS)I2T R1 (FT)I2T R5 (FT)I2T R10 (FT)Wukong51.778.986.377.494.597.076.194.897.592.799.199.6Taiyi60.885.091.0---------R2D260.986.892.784.496.798.477.696.798.995.699.8100.0CN-CLIP71.291.495.583.896.998.681.697.598.895.399.7100.0COCO-CN 检索官方测试集模型T2I R1 (ZS)T2I R5 (ZS)T2I R10 (ZS)T2I R1 (FT)T2I R5 (FT)T2I R10 (FT)I2T R1 (ZS)I2T R5 (ZS)I2T R10 (ZS)I2T R1 (FT)I2T R5 (FT)I2T R10 (FT)Wukong53.480.290.174.094.498.155.281.090.673.394.098.0Taiyi60.084.093.3---------R2D256.485.093.179.196.598.963.389.395.779.397.198.7CN-CLIP69.289.996.181.596.999.163.086.692.983.597.399.2零样本图像分类ELEVATER 10 个数据集模型CIFAR10CIFAR100DTDEuroSATFERFGVCKITTIMNISTPCVOCGIT88.561.142.943.441.46.722.168.950.080.2ALIGN94.976.866.152.150.825.041.274.055.283.0CLIP94.977.056.063.048.333.311.579.062.384.0Wukong95.477.140.950.3-------CN-CLIP96.079.751.252.055.126.249.979.463.584.9三、环境安装与 API 快速上手3.1 环境要求与安装开始之前请确认环境满足以下依赖Python 3.6.4PyTorch 1.8.0含 torchvision 0.9.0CUDA Version 10.2安装 Python 依赖包pip install -r requirements.txt如需使用 API 调用方式请先安装cn_clip包# 安装最新稳定版 pip install cn_clip # 或从源码安装 cd Chinese-CLIP pip install -e .3.2 图文特征与相似度 API 示例安装完成后即可用几行代码计算图文特征与相似度。以下示例基于仓库 examples/pokemon.jpeg 图片import torch from PIL import Image import cn_clip.clip as clip from cn_clip.clip import load_from_name, available_models print(Available models:, available_models()) # Available models: [ViT-B-16, ViT-L-14, ViT-L-14-336, ViT-H-14, RN50] device cuda if torch.cuda.is_available() else cpu # 如果本地没有模型权重会自动从 Hugging Face Hub 下载需安装 huggingface_hub model, preprocess load_from_name(ViT-B-16, devicedevice, download_root./) model.eval() image preprocess(Image.open(examples/pokemon.jpeg)).unsqueeze(0).to(device) text clip.tokenize([杰尼龟, 妙蛙种子, 小火龙, 皮卡丘]).to(device) with torch.no_grad(): image_features model.encode_image(image) text_features model.encode_text(text) # 下游任务请务必使用归一化后的特征 image_features / image_features.norm(dim-1, keepdimTrue) text_features / text_features.norm(dim-1, keepdimTrue) logits_per_image, logits_per_text model.get_similarity(image, text) probs logits_per_image.softmax(dim-1).cpu().numpy() print(Label probs:, probs) # [[1.268734e-03 5.436878e-02 6.795761e-04 9.436829e-01]]从源码实现看这段 API 的背后逻辑位于 cn_clip/clip/utils.pyavailable_models()直接返回_MODELS字典的键cn_clip/clip/utils.pyload_from_name()会先在本地查找权重文件未命中则通过huggingface_hub从OFA-Sys组织下载也可传use_modelscopeTrue从 ModelScope 下载随后读取ViT-B-16.json与RoBERTa-wwm-ext-base-chinese.json两份配置创建模型cn_clip/clip/utils.py、cn_clip/clip/utils.pytokenize()将中文文本按[CLS] tokens [SEP]的形式编码为固定长度 52 的 token 序列cn_clip/clip/utils.py默认预处理为Resize((224, 224)) RGB 转换 ToTensor 标准化归一化均值与方差见 cn_clip/clip/utils.py。模型内部的视觉与文本编码路径可在 cn_clip/clip/model.py 的encode_image/encode_text中看到视觉侧支持ModifiedResNet与VisualTransformer两种骨干文本侧使用 BERT 编码器取[CLS]位置的输出再经text_projection投影到公共嵌入空间logit_scale作为可学习的温度参数初始化为ln(1/0.07)。四、跨模态检索完整教程4.1 代码组织与工作目录结构克隆项目后建议新建${DATAPATH}目录存放数据集、权重与日志推荐的工作区结构如下Chinese-CLIP/ ├── run_scripts/ │ ├── muge_finetune_vit-b-16_rbt-base.sh │ ├── flickr30k_finetune_vit-b-16_rbt-base.sh │ └── ... # 更多微调与评测脚本 └── src/ ├── clip/ ├── eval/ ├── preprocess/ └── training/ ${DATAPATH} ├── pretrained_weights/ ├── experiments/ ├── deploy/ # 存放 ONNX 与 TensorRT 部署模型 └── datasets/ ├── MUGE/ ├── Flickr30k-CN/ └── .../ # 更多数据集说明仓库当前将源码收敛到了 cn_clip 目录cn_clip/clip、cn_clip/eval、cn_clip/preprocess、cn_clip/training与文档中最初的src布局一一对应下文所有脚本均以仓库实际路径为准。4.2 数据准备预训练权重参考上文模型卡选择模型并下载 checkpoint建议将权重放入${DATAPATH}/pretrained_weights/目录。数据组织格式为提升数据访问效率建议按如下方式组织数据${DATAPATH} └── datasets/ └── ${dataset_name}/ ├── train_imgs.tsv # 图像 id 与图像内容 ├── train_texts.jsonl # 文本 id 与文本内容含配对图像 id 列表 ├── valid_imgs.tsv ├── valid_texts.jsonl ├── test_imgs.tsv └── test_texts.jsonl其中${dataset_name}指数据集名称如 MUGE。为避免大量小文件带来的 IO 开销项目不直接存储小体积图片文件而是将图片编码为 base64 字符串存入${split}_imgs.tsv。每行代表一张图片由 idint和 base64 字符串组成以\t分隔1000002 /9j/4AAQSkZJ...YQj7314oA//2Q将图片文件转换为 base64 字符串很简单from PIL import Image from io import BytesIO import base64 img Image.open(file_name) # 图片文件路径 img_buffer BytesIO() img.save(img_buffer, formatimg.format) byte_data img_buffer.getvalue() base64_str base64.b64encode(byte_data) # bytes base64_str base64_str.decode(utf-8) # str文本与图文配对关系存放在${split}_texts.jsonl中每行一个 json{text_id: 8428, text: 高级感托特包斜挎, image_ids: [1076345, 517602]}对于只有文本、配对关系未知的测试集将image_ids留为空列表image_ids: []即可。序列化为 LMDB最后需要将 tsv 与 jsonl 序列化为 LMDB 文件便于训练时随机访问python src/preprocess/build_lmdb_dataset.py \ --data_dir ${DATAPATH}/datasets/${dataset_name} --splits train,valid,test其中--splits用逗号分隔且不加空格。脚本执行后入口见 cn_clip/preprocess/build_lmdb_dataset.py--data_dir为必填、--splits为必填还支持可选参数--lmdb_dir自定义输出目录会在数据目录下生成${DATAPATH} └── datasets/ └── ${dataset_name}/ └── lmdb/ ├── train │ ├── imgs │ └── pairs ├── valid └── test为方便使用项目提供了预处理好的 MUGE 与 Flickr30K-CN 数据集zip 格式下载后解压到${DATAPATH}/datasets/即可。COCO-CN 数据集需先向原作者申请权限再联系项目方获取。4.3 微调Finetuning项目以预训练 Chinese-CLIP 为基础进行微调。针对 MUGE 和 Flickr30K-CN 分别提供了脚本 run_scripts/muge_finetune_vit-b-16_rbt-base.sh 和 run_scripts/flickr30k_finetune_vit-b-16_rbt-base.sh。脚本同时支持单机与分布式训练。运行前请按照脚本开头注释配置分布式参数然后执行cd Chinese-CLIP/ bash run_scripts/muge_finetune_vit-b-16_rbt-base.sh ${DATAPATH}若 GPU 显存不足可在配置中开启梯度检查点策略见下文grad-checkpointing。日志与 checkpoint 将保存在指定路径。以 run_scripts/muge_finetune_vit-b-16_rbt-base.sh 为例其完整参数组织如下含脚本内的具体取值# 分布式训练 GPUS_PER_NODE8 # 每台机器的 GPU 数 WORKER_CNT1 # 机器数单机训练设为 1 export MASTER_ADDRXX.XX.XX.XX # rank-0 机器的 IP单机设为 localhost export MASTER_PORT8514 # 通信端口 export RANK0 # 当前 worker 的 rank取值 {0, ..., WORKER_CNT-1} export PYTHONPATH${PYTHONPATH}:pwd/cn_clip/ DATAPATH${1} # 数据 train_data${DATAPATH}/datasets/MUGE/lmdb/train val_data${DATAPATH}/datasets/MUGE/lmdb/valid # 不指定则自动关闭验证 # 恢复 resume${DATAPATH}/pretrained_weights/clip_cn_vit-b-16.pt reset_data_offset--reset-data-offset reset_optimizer--reset-optimizer # 输出 output_base_dir${DATAPATH}/experiments/ namemuge_finetune_vit-b-16_roberta-base_bs128_8gpu save_step_frequency999999 save_epoch_frequency1 log_interval1 report_training_batch_acc--report-training-batch-acc # 训练超参 context_length52 warmup100 batch_size128 valid_batch_size128 accum_freq1 lr5e-5 wd0.001 max_epochs3 valid_step_interval150 valid_epoch_interval1 vision_modelViT-B-16 text_modelRoBERTa-wwm-ext-base-chinese use_augment--use-augment训练配置的完整参数说明如下源码定义见 cn_clip/training/params.py分布式训练WORKER_CNT机器数量。GPUS_PER_NODE每台机器上的 GPU 数量。训练/验证数据train-data训练数据目录需按上述步骤生成 LMDB 文件参数解析见 cn_clip/training/params.py。val-data验证数据目录设为None时微调期间关闭验证。num-workers训练集 DataLoader 的 worker 数默认 4。valid-num-workers验证集 DataLoader 的 worker 数默认 1。训练超参数vision-model视觉骨干可选[ViT-B-16, ViT-L-14, ViT-L-14-336, ViT-H-14, RN50]默认ViT-B-16。text-model文本骨干可选[RoBERTa-wwm-ext-base-chinese, RoBERTa-wwm-ext-large-chinese, RBT3-chinese]默认RoBERTa-wwm-ext-base-chinese。context-length文本输入序列长度默认 52含[CLS]与[SEP]。warmupwarmup 步数默认 500。batch-size单 worker 的 batch size需保证训练样本数大于batch-size * GPUs默认 64。lr学习率。脚本 MUGE 示例取5e-5。wd权重衰减默认 0.2。max-steps训练步数也可用max-epochs指定训练轮数max-steps优先级更高。freeze-vision是否冻结视觉骨干。use-augment是否使用 AutoAugment 数据增强。valid-batch-size单 worker 的验证 batch size需保证验证样本数大于valid-batch-size * GPUs默认 64。valid-step-interval/valid-epoch-interval验证的步/轮频率设为 -1 则微调期间不验证。grad-checkpointing开启梯度检查点前向时不保留激活以更多计算和迭代时间换取更低显存占用store_true参数脚本中直接加--grad-checkpointing即可要求 PyTorch 1.8.0。mask-ratioFLIP 策略随机遮挡一定比例的图像 patch 以节省显存、加速训练默认 0.0关闭。从源码可见其实现于 cn_clip/clip/model.py 的random_masking仅在VisualTransformer骨干中生效。use-flash-attention是否使用 FlashAttention 加速微调并降低显存配置好环境后加--use-flash-attention即可启用详见 flash_attention_En.md。源码中通过importlib探测flash_attn包命中时以FlashMHA替换nn.MultiheadAttentioncn_clip/clip/model.py、cn_clip/clip/model.py。accum-freq梯度累积频率默认 1设为大于 1 的整数可模拟更大 batch size单 worker batch 为m时总 batch 为accum_freq * m * GPUs。gather-with-grad是否启用特征聚合的完整分布式梯度默认关闭。输出name输出路径标识超参日志、训练日志与 checkpoint 保存在${DATAPATH}/experiments/${name}/。save-step-frequency/save-epoch-frequency保存 checkpoint 的步/轮间隔。report-training-batch-acc是否报告训练 batch 内的图像到文本与文本到图像检索准确率。Checkpointresume恢复权重的 checkpoint 路径。示例脚本中指向预训练权重路径可改为自己的 checkpoint。reset-data-offset是否从数据断点处恢复训练。reset-optimizer是否重置优化器状态。值得注意的源码细节是学习率等 Adam 超参数会根据视觉骨干自动设置默认值get_default_paramscn_clip/training/params.py为 RN50 系列返回lr5.0e-4, beta10.9, beta20.999, eps1.0e-8为 ViT-B/H 返回lr5.0e-4, beta10.9, beta20.98, eps1.0e-6为 ViT-L 系列返回lr4.0e-4, beta10.9, beta20.98, eps1.0e-6仅当命令行未显式指定时才填充cn_clip/training/params.py。训练结束后的日志示例2022-12-11,20:40:34 | INFO | Rank 0 | Global Steps: 1/735 | Train Epoch: 1 [1024/250880 (0%)] | Loss: 2.371020 | Image2Text Acc: 49.90 | Text2Image Acc: 48.73 | Data Time: 1.039s | Batch Time: 3.625s | LR: 0.000000 | logit_scale: 4.605 | Global Batch Size: 1024验证日志示例2022-12-11,20:42:47 | INFO | Rank 0 | Validation Result (epoch 1 150 steps) | Valid Loss: 0.502810 | Image2Text Acc: 84.95 | Text2Image Acc: 84.26 | logit_scale: 4.605 | Valid Batch Size: 128注意事项对比学习的收敛与稳定性与总 batch size高度相关。若使用的 batch size 小于默认配置每卡 128 × 8 GPU建议使用更小的学习率为获得更好效果推荐使用更多 GPU 与更大的 batch size。4.4 推理与评测图文特征提取当前代码支持单 worker 的特征提取。如需部署 ONNX / TensorRT 模型加速特征推理详见 deployment_En.md。cd Chinese-CLIP/ export CUDA_VISIBLE_DEVICES0 export PYTHONPATH${PYTHONPATH}:pwd/src splitvalid # validation / test set resume${DATAPATH}/pretrained_weights/clip_cn_vit-b-16.pt python -u src/eval/extract_features.py \ --extract-image-feats \ --extract-text-feats \ --image-data${DATAPATH}/datasets/${dataset_name}/lmdb/${split}/imgs \ --text-data${DATAPATH}/datasets/${dataset_name}/${split}_texts.jsonl \ --img-batch-size32 \ --text-batch-size32 \ --context-length52 \ --resume${resume} \ --vision-modelViT-B-16 \ --text-modelRoBERTa-wwm-ext-base-chinese脚本 cn_clip/eval/extract_features.py 的--extract-image-feats与--extract-text-feats为开关参数不可同时为 False--img-batch-size/--text-batch-size默认 64。默认情况下特征保存在${DATAPATH}/datasets/${dataset_name}下图像特征存于${split}_imgs.img_feat.jsonl每行一条{image_id: 1000002, feature: [0.0198, ..., -0.017, 0.0248]}文本特征存于${split}_texts.txt_feat.jsonl每行一条{text_id: 248816, feature: [0.1314, ..., 0.0018, -0.0002]}KNN 检索对于小规模检索数据集项目提供了简单的 KNN 检索实现用于快速获取跨模态检索的 top-k 结果。实用建议若要在自己的项目中搭建检索 Demo建议先用 Chinese-CLIP 计算图文嵌入再借助开源服务框架 clip-retrieval 部署前后端服务。文本到图像检索cd Chinese-CLIP/ splitvalid # validation / test splits python -u src/eval/make_topk_predictions.py \ --image-feats${DATAPATH}/datasets/${dataset_name}/${split}_imgs.img_feat.jsonl \ --text-feats${DATAPATH}/datasets/${dataset_name}/${split}_texts.txt_feat.jsonl \ --top-k10 \ --eval-batch-size32768 \ --output${DATAPATH}/datasets/${dataset_name}/${split}_predictions.jsonl结果保存到指定 jsonl每行为一个文本查询对应的 top-k 图像 id{text_id: 153915, image_ids: [5791244, 1009692167, 7454547004, 3564007203, 38130571, 2525270674, 2195419145, 2503091968, 4966265765, 3690431163]}图像到文本检索splitvalid # validation / test splits python -u src/eval/make_topk_predictions_tr.py \ --image-feats${DATAPATH}/datasets/${dataset_name}/${split}_imgs.img_feat.jsonl \ --text-feats${DATAPATH}/datasets/${dataset_name}/${split}_texts.txt_feat.jsonl \ --top-k10 \ --eval-batch-size32768 \ --output${DATAPATH}/datasets/${dataset_name}/${split}_tr_predictions.jsonl每行为一个图像查询对应的 top-k 文本 id{image_id: 977856234, text_ids: [156914, 157914, 158914, 155914, 156179, 158907, 157179, 154179, 154914, 154723]}Recall 指标计算项目提供脚本计算 Recall1/5/10 与平均召回率三个 Recall 的均值。文本到图像检索splitvalid # validation / test splits python src/eval/evaluation.py \ ${DATAPATH}/datasets/${dataset_name}/${split}_texts.jsonl \ ${DATAPATH}/datasets/${dataset_name}/${split}_predictions.jsonl \ output.json cat output.json图像到文本检索先转换标注格式再计算指标python src/eval/transform_ir_annotation_to_tr.py \ --input ${DATAPATH}/datasets/${dataset_name}/${split}_texts.jsonlsplitvalid # validation / test splits python src/eval/evaluation_tr.py \ ${DATAPATH}/datasets/${dataset_name}/${split}_texts.tr.jsonl \ ${DATAPATH}/datasets/${dataset_name}/${split}_tr_predictions.jsonl \ output.json cat output.json输出示例{success: true, score: 85.67, scoreJson: {score: 85.67, mean_recall: 85.67, r1: 71.2, r5: 90.5, r10: 95.3}}从源码实现看cn_clip/eval/evaluation.py 首先读取 ground-truth 标注read_reference再以k10严格校验提交文件每条预测必须恰好包含 10 个不重复的整数图像 id、不能缺查询、不能有重复随后计算 r1/r5/r10 并以三者均值作为scorecn_clip/eval/evaluation.py、cn_clip/eval/evaluation.py。为便于理解项目还提供了可运行的 Jupyter Notebook Chinese-CLIP-on-MUGE-Retrieval.ipynb它基于 MUGE 检索数据集覆盖了上述微调与推理流程可直接打开体验。五、零样本图像分类本节介绍如何用 Chinese-CLIP 进行零样本图像分类。以 ELEVATER benchmark 的一个数据集为例。ELEVATER 由多个广泛使用的分类数据集组成含 CIFAR-10、CIFAR-100、MNIST 等用于评测零样本性能。项目为每个 ELEVATER 数据集准备了中文 prompt 与中文标签名下载方式见 zeroshot_dataset_en.md。读者也可以按照下述流程准备并评测自己的分类数据集。5.1 数据准备只需准备测试集与预训练 checkpoint。建议在自定义的${DATAPATH}下组织目录${DATAPATH} ├── pretrained_weights/ └── datasets/ └── ${dataset_name}/ ├── label_cn.txt └── test/ ├── 000/ # 标签 id左侧补 0 至 3 位数字保证标签按字母序排列 │ ├── image_0003.jpg # 样本图片命名无特殊要求 │ ├── image_0005.jpg │ └── ... ├── 001/ │ ├── image_0001.jpg │ ├── image_0002.jpg │ └── ... └── 002/ ├── image_0003.jpg ├── image_0005.jpg └── ... ...要点数据必须按标签 id 分目录存放且目录名要保证字母序有序数字大于 10 时用label.zfill(3)左侧补 0 至 3 位如 001、002 等。label_cn.txt存放中文标签名每行一个accordion airplane anchor ...标签 id 为[行号]-1第一行对应 id 0第二行对应 id 1。若标签数大于 10所有标签补 0 为 3 位数字如 100 个标签对应 id000-099并为每个标签创建同名目录放入对应样本。项目提供了处理好的 CIFAR-100 数据集作为示例可从 OFA-Sys/chinese-clip-eval 数据集仓库下载使用。ELEVATER 其他数据集的下载说明见 zeroshot_dataset_en.md。仓库 datasets/ImageNet-1K 下的 label.txt 与 label_cn.txt 即为该格式的中英文标签文件示例。5.2 预测与评测项目提供了预测与评测脚本详见 run_scripts/zeroshot_eval.sh。示例命令bash run_scripts/zeroshot_eval.sh 0 \ ${DATAPATH} ${dataset_name} \ ${vision_model} ${text_model} \ ${ckpt_path} ${index_file}参数含义第一个参数0GPU ID。DATAPATH存放 checkpoint 与数据集的根目录见上方 Preparation 部分。dataset_name数据集目录名如cifar-100。vision_model视觉编码器类型可选[ViT-B-32, ViT-B-16, ViT-L-14, ViT-L-14-336, RN50, ViT-H-14]。text_model文本编码器类型可选[RoBERTa-wwm-ext-base-chinese, RoBERTa-wwm-ext-large-chinese, RBT3-chinese]。ckpt_path预训练 checkpoint 的完整路径。index_file可选参数仅当需要向 ELEVATER 官网提交时使用详见 zeroshot_dataset_en.md。例如在 CIFAR-100 上评测 ViT-B/16${DATAPATH}替换为真实路径bash run_scripts/zeroshot_eval.sh 0 \ ${DATAPATH} cifar-100 \ ViT-B-16 RoBERTa-wwm-ext-base-chinese \ ${DATAPATH}/pretrained_weights/clip_cn_vit-b-16.pt脚本 run_scripts/zeroshot_eval.sh 只支持单 GPU 推理其内部会调用 cn_clip/eval/zeroshot_evaluation.py传参--img-batch-size64并输出 Top-1 准确率Result: zeroshot-top1: 0.6444即在 CIFAR-100 上 ViT-B/16 模型达到 64.4% 准确率。其他模型规模与数据集的零样本评测结果请参见 Results.md。此外脚本会保存一个用于 ELEVATER 提交的 json 文件示例如下{model_name: CN-CLIP-ViT-B-16, dataset_name: cifar-100, num_trainable_params: 0, num_params: 188262913, num_visual_params: 86192640, num_backbone_params: 188262913, n_shot: 0, rnd_seeds: [123], predictions: prediction probability tensor [size: (1, 10000, 100)]}该文件包含模型名称model_name、数据集名称dataset_name、总参数量num_params、视觉编码器参数量num_visual_params等元数据以及模型输出——尺寸为[1, num_samples, num_labels]的预测概率张量。5.3 在线零样本分类 Demo基于已集成到 Huggingface transformers 的特征生成 API项目为每个规模的 Chinese-CLIP 模型在 Huggingface Model Hub 提供了零样本分类在线 Demo并在 2023.12.10 更新了汇聚全部 4 个 ViT 模型规模、支持自定义 prompt 模板的统一 Demo 页面可在线体验。六、进阶能力速览README 新闻时间线中还记录了若干值得关注的进阶能力相关专项文档位于仓库根目录知识蒸馏微调基于 ModelScope 库支持知识蒸馏微调详见 distillation_En.md。FlashAttention 加速提升训练速度、降低显存占用详见 flash_attention_En.md。ONNX / TensorRT 部署支持将 PyTorch 模型转换为 ONNX 与 TensorRT 格式并提供预训练 TensorRT 模型详见 deployment_En.md。部署转换脚本位于 cn_clip/deploy包括 pytorch_to_onnx.py、onnx_to_tensorrt.py、pytorch_to_coreml.py 等。梯度累积对比学习中的梯度累积支持可模拟更大 batch size 的训练效果对应参数accum-freq。FLIP 策略微调时随机遮挡图像 patch 以节省显存并加速训练对应参数mask-ratio。Pytorch2.0 适配项目已适配 Pytorch2.0。ELEVATER 中文数据集中文版 ELEVATER 数据集已公开详见 zeroshot_dataset_en.md。七、引用如果本项目对你有帮助欢迎引用相关论文article{chinese-clip, title{Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese}, author{Yang, An and Pan, Junshu and Lin, Junyang and Men, Rui and Zhang, Yichang and Zhou, Jingren and Zhou, Chang}, journal{arXiv preprint arXiv:2211.01335}, year{2022} }本文所有命令与代码均以当前仓库实际内容为准微调参数的定义与默认值可对照 cn_clip/training/params.py模型结构与加载逻辑可对照 cn_clip/clip/model.py 与 cn_clip/clip/utils.py评测流程可对照 cn_clip/eval 目录下的脚本。建议在实际运行前根据自身 GPU 资源调整 batch size、accum-freq与学习率并通过小规模验证集先行验证配置可行性。赞分享人工智能多模态预训练模型评测【免费下载链接】Chinese-CLIPChinese version of CLIP which achieves Chinese cross-modal retrieval and representation generation.项目地址https://gitcode.com/GitHub_Trending/ch/Chinese-CLIP点击查看免费下载相关推荐Hugging Face Transformers 中的 Chinese-CLIP中文图文跨模态检索与零样本视觉任务实战指南Hugging Face Transformers 中的 Chinese CLIP中文图文跨模态检索与零样本视觉任务实战指南 本文以 Hugging Face人工智能大模型深度学习NLP预训练微调模型推理服务OpenAI CLIP 实战指南零样本图像分类、跨模态检索与语义搜索AI-Research-SKILLsOpenAI CLIP 实战指南零样本图像分类、跨模态检索与语义搜索AI Research SKILLs 本指南以 18 multimodal/clip/AI 技能人工智能大模型深度学习深度剖析Guanaco-3B-Uncensored-v2模型架构基于GPTNeoX的3B参数文本生成原理深度剖析Guanaco 3B Uncensored v2模型架构基于GPTNeoX的3B参数文本生成原理 Guanaco 3B Uncensored v2是一上一篇Cloudreve搜索自动纠错基于编辑距离的建议功能下一篇Grist AI集成终极指南7个自定义提示和模型调优技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门 2026/10/2 21:36:35

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门 【免费下载链接】claude-desktop-buddy Reference and an example for the Bluetooth API for makers in Claude Cowork & Claude Code Desktop 项目地址: https://gitcode.com/g…

阅读更多 →
Figma-Context-MCP 路线图深度解析:从组件提取到企业级变量系统的演进规划 2026/10/2 21:36:07

Figma-Context-MCP 路线图深度解析:从组件提取到企业级变量系统的演进规划

AI 应用MCP 服务 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP 点击查看 免费下载 导读 ROADMAP.md 是 Figma-Context-M…

阅读更多 →
Jev-Omni:轻量多模态决策模型的动态门控与一致性校准 2026/10/2 21:36:00

Jev-Omni:轻量多模态决策模型的动态门控与一致性校准

1. 项目概述:Jev-Omni不是“玩具模型”,而是多模态决策能力的工程化落地切口你可能在热搜里看到过“Jev-Omni”这个名字,搭配着“图文音视频全支持”“《原神》声音被仿冒判赔75万”这类标题一起刷屏。但别急着划走——这不是又一个PPT级AI概…

阅读更多 →
SAP MIGO收货报错BK128/K5112:科目确定失败排查与修复指南 2026/10/2 21:35:53

SAP MIGO收货报错BK128/K5112:科目确定失败排查与修复指南

前两天收到一个同事的求助,说他们在SAP系统里执行MIGO收货时被拦住了,屏幕上同时弹出两个报错:BK128和K5112。这位同事是MM模块出身,对财务集成的科目确定逻辑本来就有点头大,一看到这两个编号连着蹦出来,整…

阅读更多 →
Redis Lua原子预扣:大模型API网关配额防透支实践 2026/10/2 21:35:53

Redis Lua原子预扣:大模型API网关配额防透支实践

做网关层大模型API治理有一段时间了,最让我记忆深刻的是某次月底账单事故:内部一个测试项目开了每日100万token的配额,结果一个压测脚本十几分钟就把当天配额烧穿,等发现时账单已经飘红。事后复盘,问题不在于没做限流&…

阅读更多 →
蓝牙芯片驱动开发-第4章第6题-OTA升级中如何确保固件完整性 2026/10/2 21:35:31

蓝牙芯片驱动开发-第4章第6题-OTA升级中如何确保固件完整性

蓝牙面试题解析:OTA 升级中如何确保固件完整性? 难度:⭐⭐⭐⭐ 较难 | 场景:社招二面/三面、OTA 开发 | 高频:🔥🔥🔥🔥🔥 标准答案 OTA 升级通过 传输层加密 + 分块校验 + 哈希验证 + 数字签名 四层保障固件的端到端完整性: ① OTA 完整性保障模型 手机/云端…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉