多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

革命性视觉语言模型ViT-B-16-SigLIP-512:从零开始的零样本图像分类完整指南

革命性视觉语言模型ViT-B-16-SigLIP-512:从零开始的零样本图像分类完整指南 革命性视觉语言模型ViT-B-16-SigLIP-512从零开始的零样本图像分类完整指南【免费下载链接】ViT-B-16-SigLIP-512项目地址: https://ai.gitcode.com/hf_mirrors/timm/ViT-B-16-SigLIP-512ViT-B-16-SigLIP-512是一款基于Sigmoid损失函数的语言-图像预训练SigLIP模型专为零样本图像分类任务设计在WebLI数据集上训练而成。它实现了图像与文本的深度语义对齐让计算机能够像人类一样理解视觉内容无需大量标注数据即可完成图像分类任务。什么是ViT-B-16-SigLIP-512核心技术解析ViT-B-16-SigLIP-512融合了两大创新技术视觉TransformerViT将图像分割成16×16的补丁序列通过Transformer架构提取图像特征SigLIP损失函数采用Sigmoid交叉熵损失替代传统对比学习的InfoNCE损失大幅提升了图像-文本匹配精度该模型最初由Google Research在Big Vision项目中用JAX框架开发现已转换为PyTorch格式可通过OpenCLIP库图像文本或timm库仅图像使用。模型关键参数输入尺寸512×512像素架构类型对比式图像-文本模型预训练数据WebLI大规模图像-文本数据集许可证Apache-2.0快速上手3步实现零样本图像分类环境准备首先克隆项目仓库并安装依赖git clone https://gitcode.com/hf_mirrors/timm/ViT-B-16-SigLIP-512 cd ViT-B-16-SigLIP-512 pip install open-clip-torch2.23.0 timm0.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-B-16-SigLIP-512) tokenizer get_tokenizer(hf-hub:timm/ViT-B-16-SigLIP-512) # 加载并预处理图像 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_lengthmodel.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) # 输出结果 zipped_list list(zip(labels_list, [round(p.item(), 3) for p in text_probs[0]])) print(Label probabilities: , zipped_list)使用timm提取图像特征如果只需获取图像嵌入特征用于其他任务可使用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_base_patch16_siglip_512, pretrainedTrue, num_classes0, ) model model.eval() # 获取模型特定的预处理变换 data_config timm.data.resolve_model_data_config(model) transforms timm.data.create_transform(**data_config, is_trainingFalse) # 提取特征 output model(transforms(image).unsqueeze(0)) # 输出形状: (batch_size, num_features)模型优势与应用场景为什么选择ViT-B-16-SigLIP-512✅零样本能力无需标注数据即可对新类别进行分类✅跨模态理解深度融合视觉和语言语义✅高效迁移预训练特征可用于下游任务微调✅轻量级部署Base规模模型平衡性能与计算成本典型应用场景内容审核自动识别图像内容是否符合规范智能检索通过文本描述搜索相关图像辅助创作为图像自动生成描述性标签机器人视觉帮助机器人理解周围环境技术细节与原理SigLIP损失函数创新传统对比学习使用InfoNCE损失而SigLIP采用Sigmoid交叉熵损失这一改进允许每个图像与多个文本标签匹配减轻了负样本选择偏差问题提高了模型对细分类别的区分能力相关论文Sigmoid loss for language image pre-trainingWebLI数据集模型训练于WebLI数据集该数据集包含大规模网络图像-文本对多样化的场景和概念高质量的语言描述引用与致谢如果您在研究中使用了ViT-B-16-SigLIP-512请引用以下论文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} }misc{big_vision, author {Beyer, Lucas and Zhai, Xiaohua and Kolesnikov, Alexander}, title {Big Vision}, year {2022}, publisher {GitHub}, journal {GitHub repository}, howpublished {\url{https://github.com/google-research/big_vision}} }本模型基于Google Research的Big Vision项目开发感谢原作者团队的贡献。【免费下载链接】ViT-B-16-SigLIP-512项目地址: https://ai.gitcode.com/hf_mirrors/timm/ViT-B-16-SigLIP-512创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表