OpenCLIP: 开源实现的CLIP模型

Ray

OpenCLIP简介

OpenCLIP是OpenAI CLIP(Contrastive Language-Image Pre-training)模型的开源实现。CLIP是一种强大的视觉-语言预训练模型,可以通过自然语言描述来理解图像内容。OpenCLIP项目旨在提供CLIP的开源复现,并在此基础上进行改进和扩展。

OpenCLIP的主要特点包括:

  1. 提供多种预训练模型,包括在LAION-400M、LAION-2B等大规模数据集上训练的模型。

  2. 支持多种模型架构,如ViT、ResNet等。

  3. 实现了CLIP的训练和评估代码,支持分布式训练。

  4. 提供了详细的使用文档和示例代码。

  5. 支持在自定义数据集上进行微调。

  6. 实现了一些CLIP的改进版本,如CoCa等。

OpenCLIP为研究人员和开发者提供了一个灵活的CLIP实现,可以用于各种视觉-语言任务。

模型性能

OpenCLIP训练了多个模型,在ImageNet零样本分类任务上取得了优秀的性能。以下是部分模型的性能对比:

模型训练数据分辨率样本数ImageNet零样本准确率
ConvNext-XXLargeLAION-2B256px34B79.5%
ViT-L/14DataComp-1B224px13B79.2%
ViT-G/14LAION-2B224px34B80.1%
ViT-L/14 (原始CLIP)WIT224px13B75.5%

可以看到,OpenCLIP训练的模型性能已经超过了原始CLIP模型。

CLIP模型架构

使用方法

安装

可以通过pip安装OpenCLIP:

pip install open_clip_torch

加载预训练模型

使用以下代码可以加载预训练模型:

import open_clip

model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='laion2b_s34b_b79k')
tokenizer = open_clip.get_tokenizer('ViT-B-32')

图像-文本相似度计算

import torch
from PIL import Image

image = preprocess(Image.open("image.jpg")).unsqueeze(0)
text = tokenizer(["a diagram", "a dog", "a cat"])

with torch.no_grad():
    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)

这段代码展示了如何使用OpenCLIP计算图像和文本之间的相似度。

训练技巧

OpenCLIP提供了丰富的训练选项和技巧,以下是一些重要的训练技巧:

  1. 多GPU训练:支持使用torchrun进行多GPU分布式训练。

  2. 梯度累积:使用--accum-freq参数可以模拟更大的batch size。

  3. 混合精度训练:使用--precision amp启用混合精度训练。

  4. 数据并行:支持使用多个数据源进行训练,可以通过::分隔不同的数据路径。

  5. Patch Dropout:可以通过设置patch_dropout参数来提高训练速度。

  6. 模型蒸馏:支持从预训练模型进行知识蒸馏。

  7. Int8量化:支持Int8训练和推理,可以提高训练速度。

  8. 远程训练:支持从S3等远程存储加载和保存模型。

CoCa模型

OpenCLIP还实现了CoCa(Contrastive Captioners)模型,这是CLIP的一个改进版本。CoCa在CLIP的基础上增加了一个生成式解码器,可以同时进行对比学习和图像描述生成。

使用CoCa生成图像描述的示例代码:

import open_clip
import torch
from PIL import Image

model, _, transform = open_clip.create_model_and_transforms(
  model_name="coca_ViT-L-14",
  pretrained="mscoco_finetuned_laion2B-s13B-b90k"
)

im = Image.open("cat.jpg").convert("RGB")
im = transform(im).unsqueeze(0)

with torch.no_grad():
  generated = model.generate(im)

print(open_clip.decode(generated[0]).split("<end_of_text>")[0].replace("<start_of_text>",
avatar
0
0
0
相关项目
Project Cover

open_clip

OpenCLIP是一个先进的开源深度学习项目,专注于OpenAI的CLIP模型的实现和优化。该项目在多样化的数据源和不同的计算预算下成功训练出多个高效能模型,涵盖图像和文本嵌入、模型微调及新模型开发等多个领域。通过增强图像与语言的联合理解能力,OpenCLIP显著推动了人工智能技术的发展,拓宽了其应用领域。

Project Cover

CLIP-ViT-L-14-DataComp.XL-s13B-b90K

CLIP ViT-L/14是一个基于DataComp-1B大规模数据集训练的多模态模型。在ImageNet-1k上达到79.2%的零样本分类准确率,可用于图像分类、检索等任务。该模型主要面向研究社区,旨在促进对零样本和任意图像分类的探索。由stability.ai提供计算资源支持,不建议直接用于部署或商业用途。

Project Cover

CLIP-convnext_base_w-laion2B-s13B-b82K

这是一系列基于LAION-5B数据集训练的CLIP ConvNeXt-Base模型。经过13B样本训练后,模型在ImageNet零样本分类中实现了70.8%以上的Top-1准确率,显示出比ViT-B/16更高的样本效率。模型使用timm的ConvNeXt-Base作为图像塔,并探索了增强图像增强和正则化的效果。作为首个在CLIP ViT-B/16和RN50x4规模下训练的ConvNeXt CLIP模型,它为零样本图像分类研究提供了新的选择。

Project Cover

MobileCLIP-S2-OpenCLIP

MobileCLIP-S2-OpenCLIP是一款基于多模态强化训练的高效图像-文本模型。相比SigLIP的ViT-B/16模型,它在性能上有所超越,同时速度提升2.3倍,模型体积缩小2.1倍,且仅使用了1/3的训练样本。在ImageNet零样本分类任务中,该模型达到74.4%的Top-1准确率,在38个数据集上的平均性能为63.7%,体现了出色的效率与性能平衡。

Project Cover

ViT-L-14-CLIPA-datacomp1B

ViT-L-14-CLIPA-datacomp1B是一个基于CLIPA-v2架构的视觉-语言模型,在datacomp1B数据集上训练。该模型采用对比学习方法,能够进行零样本图像分类,在ImageNet上实现81.1%的准确率。通过OpenCLIP库,用户可以方便地进行图像和文本的特征编码。这个模型不仅性能优异,还具有训练成本低的特点,为计算机视觉研究提供了新的发展方向。

Project Cover

CLIP-ViT-B-32-roberta-base-laion2B-s12B-b32k

该模型基于OpenCLIP,并利用LAION-5B中的LAION-2B英文子集进行训练,实现了有效的零样本图像分类和跨模态检索。在ImageNet、MSCOCO和Flickr30k测试集上的表现优于基线,适用于图像分类和生成等任务。训练过程中采用32k批次大小处理12B训练样本,并通过VTAB+、COCO和Flickr等数据集进行评估。

Project Cover

DFN2B-CLIP-ViT-B-16

DFN2B-CLIP-ViT-B-16通过Data Filtering Networks从12.8B对未筛选的数据中选出优质样本,提升CLIP模型训练效果。该模型在ImageNet 1k、CIFAR-10等数据集上表现优异,平均精度为0.609232,支持OpenCLIP,增强了图像与文本匹配能力。特别适合需要提升零样本图像分类准确性的用户。

最新项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号