news 2026/8/14 7:44:11

完整指南:使用vit_base_patch32_clip_384.openai_ft_in12k_in1k生成图像嵌入向量的3种方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
完整指南:使用vit_base_patch32_clip_384.openai_ft_in12k_in1k生成图像嵌入向量的3种方法

完整指南:使用vit_base_patch32_clip_384.openai_ft_in12k_in1k生成图像嵌入向量的3种方法

【免费下载链接】vit_base_patch32_clip_384.openai_ft_in12k_in1k项目地址: https://ai.gitcode.com/hf_mirrors/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k

vit_base_patch32_clip_384.openai_ft_in12k_in1k是一个基于Vision Transformer(ViT)架构的图像分类模型,由OpenAI使用CLIP在WIT-400M图像文本对上预训练,然后在ImageNet-12k和ImageNet-1k数据集上进行微调。该模型不仅可用于图像分类,还能高效生成图像嵌入向量,助力各种计算机视觉任务。

模型基础信息

核心参数

  • 模型类型:图像分类/特征骨干网络
  • 参数量:88.3M
  • 图像尺寸:384×384
  • 特征维度:768(通过config.json可知num_features为768)
  • 预训练数据集:WIT-400M、ImageNet-12k

方法一:移除分类头获取嵌入向量

这种方法通过设置num_classes=0来移除模型的分类层,直接输出特征向量。

from urllib.request import urlopen from PIL import Image import timm # 加载图像 img = Image.open(urlopen( 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png' )) # 创建模型,设置num_classes=0移除分类器 model = timm.create_model( 'vit_base_patch32_clip_384.openai_ft_in12k_in1k', 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) # 生成嵌入向量 output = model(transforms(img).unsqueeze(0)) # 输出形状为 (batch_size, num_features) print(f"嵌入向量维度: {output.shape}") # 应输出 (1, 768)

方法二:使用forward_features获取中间特征

通过调用模型的forward_features方法,可以获取未经池化的中间特征,适用于需要更细粒度特征的场景。

from urllib.request import urlopen from PIL import Image import timm # 加载图像 img = Image.open(urlopen( 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png' )) # 创建模型(无需移除分类头) model = timm.create_model( 'vit_base_patch32_clip_384.openai_ft_in12k_in1k', pretrained=True, ) model = model.eval() # 获取图像变换 data_config = timm.data.resolve_model_data_config(model) transforms = timm.data.create_transform(**data_config, is_training=False) # 获取中间特征(未池化) output = model.forward_features(transforms(img).unsqueeze(0)) print(f"未池化特征维度: {output.shape}") # 输出 (1, 145, 768) # 进一步处理为最终嵌入向量 output = model.forward_head(output, pre_logits=True) print(f"最终嵌入向量维度: {output.shape}") # 输出 (1, 768)

方法三:结合Hugging Face Transformers库使用

如果你熟悉Transformers库,也可以通过该库加载模型并生成嵌入向量(需确保已安装transformers库)。

from urllib.request import urlopen from PIL import Image from transformers import ViTImageProcessor, ViTModel # 加载图像处理器和模型 processor = ViTImageProcessor.from_pretrained('hf_mirrors/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k') model = ViTModel.from_pretrained('hf_mirrors/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k') # 加载并预处理图像 img = Image.open(urlopen( 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png' )) inputs = processor(images=img, return_tensors="pt") # 生成嵌入向量 with torch.no_grad(): outputs = model(**inputs) # 获取[CLS] token对应的特征作为嵌入向量 embedding = outputs.last_hidden_state[:, 0, :] print(f"嵌入向量维度: {embedding.shape}") # 输出 (1, 768)

模型应用场景

生成的图像嵌入向量可广泛应用于:

  • 图像检索:通过比较嵌入向量相似度实现相似图像搜索
  • 零样本分类:结合文本嵌入进行跨模态分类
  • 特征提取:作为其他下游任务的输入特征
  • 迁移学习:在小数据集上进行微调以提高性能

注意事项

  1. 图像预处理:必须使用模型特定的预处理参数(可通过data_config获取),包括归一化均值([0.48145466, 0.4578275, 0.40821073])和标准差([0.26862954, 0.26130258, 0.27577711])
  2. 模型加载:确保使用pretrained=True加载预训练权重
  3. 性能优化:推理时使用model.eval()torch.no_grad()提高速度并减少内存占用

总结

vit_base_patch32_clip_384.openai_ft_in12k_in1k提供了灵活多样的图像嵌入向量生成方法,无论是通过timm库的简洁API,还是结合Transformers库的丰富功能,都能轻松获取高质量的图像特征。这些嵌入向量为计算机视觉任务提供了强大的基础,帮助开发者快速构建各类应用。

要开始使用该模型,可通过以下命令克隆仓库:

git clone https://gitcode.com/hf_mirrors/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k

【免费下载链接】vit_base_patch32_clip_384.openai_ft_in12k_in1k项目地址: https://ai.gitcode.com/hf_mirrors/timm/vit_base_patch32_clip_384.openai_ft_in12k_in1k

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 7:44:05

3分钟完成GitHub Desktop汉化:告别英文界面的终极指南

3分钟完成GitHub Desktop汉化:告别英文界面的终极指南 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desktop…

作者头像 李华
网站建设 2026/8/14 7:41:56

Steam挂刀行情站:24小时追踪四大平台饰品价格数据的完整指南

Steam挂刀行情站:24小时追踪四大平台饰品价格数据的完整指南 【免费下载链接】SteamTradingSiteTracker Steam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163…

作者头像 李华
网站建设 2026/8/11 17:37:15

甜品展示铝箔容器颜色怎么搭配甜品?按实际食品、配送或冷藏条件确认

做杯装蛋糕时,甜品展示铝箔容器的判断要从成品状态开始。杯口、表面、盖型和配套物料放在一起看,才能知道它是否适合这次上新。 一、先从颜色陈列开始打样 把甜品展示铝箔容器用于小份海绵蛋糕时,建议记录装杯量、出炉或冷藏后的表面状态&…

作者头像 李华
网站建设 2026/8/11 17:36:27

GEO在线分析指令工具怎么用

GEO在线诊断报告分析指令工具怎么用最准?我把坑先踩了,你直接抄作业 GEO在线诊断报告分析指令这个工具上线了https://gj.geobaike.com,免费用。今天不卖关子,直接讲清楚它是干嘛的、怎么用最准、哪些地方容易用错。 先说清楚&a…

作者头像 李华
网站建设 2026/8/11 17:31:35

Ryujinx:用C构建的跨平台任天堂Switch模拟器完整指南

Ryujinx:用C#构建的跨平台任天堂Switch模拟器完整指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 在PC上畅玩任天堂Switch独占游戏,这曾经是玩家们的梦想&a…

作者头像 李华
网站建设 2026/8/11 17:30:48

AKShare终极教程:Python免费财经数据接口库的完整使用指南

AKShare终极教程:Python免费财经数据接口库的完整使用指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/ak…

作者头像 李华