三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

WebLI数据集上训练的视觉大模型:ViT-L-16-SigLIP-256性能深度测评

WebLI数据集上训练的视觉大模型:ViT-L-16-SigLIP-256性能深度测评

WebLI数据集上训练的视觉大模型:ViT-L-16-SigLIP-256性能深度测评

【免费下载链接】ViT-L-16-SigLIP-256项目地址: https://ai.gitcode.com/hf_mirrors/timm/ViT-L-16-SigLIP-256

ViT-L-16-SigLIP-256是一款基于WebLI数据集训练的视觉大模型,采用Sigmoid loss for Language-Image Pre-training(SigLIP)技术,支持零样本图像分类和图像嵌入提取,是计算机视觉领域的高效解决方案。

🌟 模型核心优势解析

🔍 先进的双模态架构

该模型采用对比式图像-文本预训练架构,视觉部分基于ViT-Large(16×16 patch)设计,图像输入尺寸为256×256像素。从open_clip_config.json中可知,模型嵌入维度达1024,文本编码器包含24层Transformer和16个注意力头,能同时处理视觉和语言信息,实现跨模态语义理解。

🚀 高效的预训练策略

区别于传统对比学习使用的softmax交叉熵损失,ViT-L-16-SigLIP-256创新性地采用Sigmoid损失函数(源自论文Sigmoid loss for language image pre-training),在WebLI大规模数据集上训练,显著提升了零样本分类性能和计算效率。

🛠️ 快速上手指南

安装与环境配置

# 克隆项目仓库 git clone https://gitcode.com/hf_mirrors/timm/ViT-L-16-SigLIP-256 # 安装依赖 pip install open-clip-torch>=2.23.0 timm>=0.9.8 torch pillow

使用OpenCLIP进行零样本分类

import torch import torch.nn.functional as F from urllib.request import urlopen from PIL import Image from open_clip import create_model_from_pretrained, get_tokenizer # 加载模型和预处理工具 model, preprocess = create_model_from_pretrained('hf-hub:timm/ViT-L-16-SigLIP-256') tokenizer = get_tokenizer('hf-hub:timm/ViT-L-16-SigLIP-256') # 预处理图像 image = Image.open(urlopen('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png')) image = preprocess(image).unsqueeze(0) # 定义分类标签 labels_list = ["a dog", "a cat", "a donut", "a beignet"] text = tokenizer(labels_list, context_length=model.context_length) # 计算分类概率 with torch.no_grad(), torch.cuda.amp.autocast(): image_features = model.encode_image(image) text_features = model.encode_text(text) image_features = F.normalize(image_features, dim=-1) text_features = F.normalize(text_features, dim=-1) text_probs = torch.sigmoid(image_features @ text_features.T * model.logit_scale.exp() + model.logit_bias) print("分类结果:", list(zip(labels_list, [round(p.item(), 3) for p in text_probs[0]])))

使用timm提取图像特征

from urllib.request import urlopen from PIL import Image import timm # 加载图像 image = Image.open(urlopen('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png')) # 创建模型(仅图像编码器) model = timm.create_model( 'vit_large_patch16_siglip_256', pretrained=True, num_classes=0, # 禁用分类头,输出特征向量 ) model = model.eval() # 获取模型特定的预处理转换 data_config = timm.data.resolve_model_data_config(model) transforms = timm.data.create_transform(**data_config, is_training=False) # 提取图像特征(输出形状:[1, 1024]) output = model(transforms(image).unsqueeze(0))

📊 技术参数详解

参数类别具体配置
视觉模型ViT-Large, 16×16 patch, 256×256输入尺寸
文本模型24层Transformer, 16头注意力, 64上下文长度
嵌入维度1024维
词汇表大小32000
预训练数据集WebLI
支持框架PyTorch
许可证Apache-2.0

📚 应用场景与实践建议

零样本图像分类

适合在缺乏标注数据的场景下快速实现图像识别,只需提供文本标签即可完成分类任务,如产品质检、医学影像初筛等领域。

图像检索与相似度计算

通过提取图像特征向量,可用于构建图像搜索引擎或实现相似图片推荐功能,特征提取代码参考timm使用示例。

跨模态研究与开发

作为对比学习的典型实现,可用于学术研究或构建更复杂的多模态系统,原始模型转换自Big Vision的JAX checkpoint。

📝 引用与致谢

如果您在研究中使用该模型,请引用以下论文:

@article{zhai2023sigmoid, title={Sigmoid loss for language image pre-training}, author={Zhai, Xiaohua and Mustafa, Basil and Kolesnikov, Alexander and Beyer, Lucas}, journal={arXiv preprint arXiv:2303.15343}, year={2023} }

模型权重由HuggingFace社区提供,基于Google Research的Big Vision项目开发,感谢所有贡献者的努力。

⚠️ 使用注意事项

  • 模型需要Python 3.8+环境和至少8GB显存
  • 图像预处理需遵循配置文件open_clip_config.json中定义的均值([0.5, 0.5, 0.5])和标准差([0.5, 0.5, 0.5])
  • 文本输入需使用配套的tokenizer进行处理,支持"canonicalize"清洁模式

【免费下载链接】ViT-L-16-SigLIP-256项目地址: https://ai.gitcode.com/hf_mirrors/timm/ViT-L-16-SigLIP-256

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表