open_clip

开源复现 CLIP,训练微调零样本多模态模型

Open_CLIP 是 CLIP 模型的开源实现,由 LAION 等社区维护,旨在复现并扩展 OpenAI 的 CLIP 模型。它解决了 CLIP 原始代码未开源、训练细节缺失的问题,提供了完整的训练、微调和评估流程。核心能力包括:支持多种视觉和文本骨干网络(如 ViT、ResNet、BERT 等),提供大量预训练权重(如 ViT-B/32、ViT-L/14 等),支持零样本图像分类、图文检索等任务。项目基于 PyTorch,代码模块化清晰,支持分布式训练,并集成了 OpenCLIP 的模型库,方便用户快速加载使用。此外,它还提供了数据预处理、评估脚本和模型转换工具,适合研究者和开发者进行多模态模型的二次开发与部署。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 14160
维护状态 较活跃
是否开源 是
定价模式 free

项目数据

分类开源模型
开发团队mlfoundations
所属国家
官网地址
定价模式free
价格说明开源实现,完全免费,可自行部署使用。
访问状态
是否开源是
开源协议NOASSERTION
主要语言Python
技术栈/模型computer-vision,contrastive-loss,deep-learning,language-model,multi-modal-learning,pretrained-models,pytorch,zero-shot-classification
GitHub 星标★ 14160
30天Star增速
HF 下载量
上线时间2021-07-28 00:00:00
最近更新2026-09-22 00:00:00
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-10
浏览次数6

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 7 步

环境要求

  • Python 3 环境
  • pip(可执行 pip install -U pip)
  • 安装 PyTorch(示例代码使用 torch 与 torch.autocast("cuda"),GPU 推理需 CUDA 环境)
  • 使用 timm 图像编码器的模型需安装最新版 timm
  • 使用 transformers 分词器的模型需安装 transformers

安装与启动步骤

  1. 1创建虚拟环境

    在项目目录下创建名为 .env 的 Python 虚拟环境,避免污染系统环境。

    python3 -m venv .env
  2. 2激活虚拟环境

    激活刚创建的虚拟环境,后续 pip 安装都会装到这个环境里。

    source .env/bin/activate
  3. 3升级 pip

    先把 pip 升级到最新,减少依赖解析和安装失败问题。

    pip install -U pip
  4. 4安装 OpenCLIP

    安装 open_clip_torch 包即可使用预训练模型的推理功能。

    pip install open_clip_torch
  5. 5安装训练依赖

    如果需要自己训练模型,安装带 training 附加项的版本。

    pip install 'open_clip_torch[training]'
  6. 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. 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

项目介绍

open_clip 是开源模型领域的开源项目,由 mlfoundations 开发,2021 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(14,160)位列前 4%,在开源模型分类的 422 个项目里位列前 4%。

近 44 天,它的 GitHub 星标从 14,052 增加到 14,160,净增 108。

项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-22。开源实现,完全免费,可自行部署使用。

它主要面向的使用场景是:零样本图像分类和图文检索。同类可对比的替代方案包括 OpenAI CLIP、Hugging Face Transformers CLIP、SLIP。

上一篇:awesome-ltx2

下一篇:CoreML-Models

同类项目推荐

Machine-Learning 开源

跟着博客笔记,边看边跑机器学习代码

All content related to machine learning from my blog

★ 115 2026-08-09
CoreML-Models 开源

下载即用的苹果端 AI 模型库,免去转换烦恼

Core ML model zoo for iOS/macOS — PyTorch models converted to ready-to-use .mlpacka···

★ 1873 2026-08-10