
open_clip
开源复现 CLIP,训练微调零样本多模态模型
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-10 · 当前星标 ★ 14247
使用教程
环境要求
- Python 3 环境
- pip(可执行 pip install -U pip)
- 安装 PyTorch(示例代码使用 torch 与 torch.autocast("cuda"),GPU 推理需 CUDA 环境)
- 使用 timm 图像编码器的模型需安装最新版 timm
- 使用 transformers 分词器的模型需安装 transformers
安装与启动步骤
-
1创建虚拟环境
在项目目录下创建名为 .env 的 Python 虚拟环境,避免污染系统环境。
python3 -m venv .env -
2激活虚拟环境
激活刚创建的虚拟环境,后续 pip 安装都会装到这个环境里。
source .env/bin/activate -
3升级 pip
先把 pip 升级到最新,减少依赖解析和安装失败问题。
pip install -U pip -
4安装 OpenCLIP
安装 open_clip_torch 包即可使用预训练模型的推理功能。
pip install open_clip_torch -
5安装训练依赖
如果需要自己训练模型,安装带 training 附加项的版本。
pip install 'open_clip_torch[training]' -
6运行推理示例
加载 ViT-B-32 预训练权重,对 docs/CLIP.png 做零样本分类,注意文件路径要存在。
import torch from PIL import Image import open_clip model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='laion2b_s34b_b79k') model.eval() tokenizer = open_clip.get_tokenizer('ViT-B-32') image = preprocess(Image.open("docs/CLIP.png")).unsqueeze(0) text = tokenizer(["a diagram", "a dog", "a cat"]) with torch.no_grad(), torch.autocast("cuda"): image_features = model.encode_image(image) text_features = model.encode_text(text) image_features /= image_features.norm(dim=-1, keepdim=True) text_features /= text_features.norm(dim=-1, keepdim=True) text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1) print("Label probs:", text_probs) -
7启动单机训练
用 CSV 数据集启动单进程训练,需先把路径和列名换成自己的真实值。
python -m open_clip_train.main \ --save-frequency 1 \ --zeroshot-frequency 1 \ --report-to tensorboard \ --train-data="/path/to/train_data.csv" \ --val-data="/path/to/validation_data.csv" \ --csv-img-key filepath \ --csv-caption-key title \ --imagenet-val=/path/to/imagenet/root/val/ \ --warmup 10000 \ --batch-size=128 \ --lr=1e-3 \ --wd=0.1 \ --epochs=30 \ --workers=8 \ --model RN50
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
pretrained | 否 | create_model_and_transforms 的预训练权重名 | laion2b_s34b_b79k |
--train-data | 是 | 训练数据 CSV 文件路径 | /path/to/train_data.csv |
--val-data | 否 | 验证数据 CSV 文件路径 | /path/to/validation_data.csv |
--csv-img-key | 是 | CSV 中存放图片路径的列名 | filepath |
--csv-caption-key | 是 | CSV 中存放文本标题的列名 | title |
--imagenet-val | 否 | ImageNet 验证集根目录,用于训练中零样本评估 | /path/to/imagenet/root/val/ |
如何确认成功
推理脚本运行后打印出 Label probs: [[1., 0., 0.]] 形式的标签概率,说明模型加载与推理成功。
常见问题
Q:报 'Unknown model' 错误怎么解决?
A:该模型使用了 timm 图像编码器(convnext、siglip、eva 等),需要安装最新版 timm;升级 timm 后重试。
Q:提示缺少分词器怎么办?
A:如果模型使用 transformers 的分词器,先安装 transformers 再运行。
Q:训练接口和以前不一样了?
A:main 分支默认使用重构后的训练栈(TrainingTask、FSDP2、NaFlex 等);需要旧版稳定训练 API 可切换到 v3 分支或安装最新 3.x 版本。
Q:imagenet-val 应该指向训练集吗?
A:不是,它指向 ImageNet 的验证集,仅用于训练期间的零样本评估;不需要该评估时可以去掉这个参数。
注意事项
- main 分支训练栈已重构,预训练图像/文本模型的推理用法保持兼容,但训练脚本和下游集成升级前需查看变更说明。
- --imagenet-val 的 val 目录必须包含子文件夹,若没有需先用 README 中提到的脚本做预处理。
- 需要高效计算海量嵌入时,可使用支持 openclip 的 clip-retrieval。
- 推理示例使用 torch.autocast("cuda"),没有 GPU 时需去掉该上下文或改用 CPU。
核心亮点
- 提供大量预训练权重,开箱即用,覆盖多种模型规模
- 训练代码完整,支持分布式训练,可复现论文结果
- 模型架构灵活,支持自定义视觉和文本编码器
不足之处
- 训练资源需求高,普通用户难以从头训练
- 文档相对简略,部分高级用法需自行阅读源码
适用场景
- 零样本图像分类和图文检索
- 多模态模型的微调和迁移学习
- 学术研究中的 CLIP 基线对比
替代项目
OpenAI CLIP、Hugging Face Transformers CLIP、SLIP
上一篇:awesome-ltx2
下一篇:CoreML-Models
同类项目推荐
MeanFlow
开源
一步出图的生成模型 PyTorch 实现
PyTorch implementation of MeanFlow & iMF (one-step generative modeling).
Time-Series-Reasoning-Survey
开源
一篇综述看懂LLM如何推理时间序列
[TMLR 2026] A Survey of Reasoning and Agentic Systems in Time Series with Large Lang···
Awesome-LLM-KG
开源
一页看懂LLM与知识图谱融合的所有关键论文
Awesome papers about unifying LLMs and KGs
OpenGraph
开源
训练一次,零样本适配任意新图任务
[EMNLP'2024] "OpenGraph: Towards Open Graph Foundation Models"
tapestry
开源
联合全球力量,训练属于你的主权AI模型
Project Tapestry aims to give every nation and participant frontier AI they can call···
SoulChat
开源
中文心理对话模型,一键部署情绪支持助手
中文领域心理健康对话大模型SoulChat
mockserver-monorepo
开源
一键模拟任意API,拦截流量注入故障,让测试更稳更准
MockServer is an HTTP(S) mock server and proxy for testing that lets you mock APIs, ···
XR-1
开源
统一视觉与运动表征,让机器人模型学会跨任务泛化
Towards Versatile Vision-Language-Action Models via Learning Unified Vision-Motion R···
HuBERT-ECG
开源
用无标注心电数据预训练,打造能适应多种心脏任务的通用AI模型。
A self-supervised foundation ECG model for broad and scalable cardiac applications