ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/11 17:49: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_in1kvit_base_patch32_clip_384.openai_ft_in12k_in1k是一个基于Vision TransformerViT架构的图像分类模型由OpenAI使用CLIP在WIT-400M图像文本对上预训练然后在ImageNet-12k和ImageNet-1k数据集上进行微调。该模型不仅可用于图像分类还能高效生成图像嵌入向量助力各种计算机视觉任务。模型基础信息核心参数模型类型图像分类/特征骨干网络参数量88.3M图像尺寸384×384特征维度768通过config.json可知num_features为768预训练数据集WIT-400M、ImageNet-12k方法一移除分类头获取嵌入向量这种方法通过设置num_classes0来移除模型的分类层直接输出特征向量。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_classes0移除分类器 model timm.create_model( vit_base_patch32_clip_384.openai_ft_in12k_in1k, 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(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, pretrainedTrue, ) model model.eval() # 获取图像变换 data_config timm.data.resolve_model_data_config(model) transforms timm.data.create_transform(**data_config, is_trainingFalse) # 获取中间特征未池化 output model.forward_features(transforms(img).unsqueeze(0)) print(f未池化特征维度: {output.shape}) # 输出 (1, 145, 768) # 进一步处理为最终嵌入向量 output model.forward_head(output, pre_logitsTrue) 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(imagesimg, return_tensorspt) # 生成嵌入向量 with torch.no_grad(): outputs model(**inputs) # 获取[CLS] token对应的特征作为嵌入向量 embedding outputs.last_hidden_state[:, 0, :] print(f嵌入向量维度: {embedding.shape}) # 输出 (1, 768)模型应用场景生成的图像嵌入向量可广泛应用于图像检索通过比较嵌入向量相似度实现相似图像搜索零样本分类结合文本嵌入进行跨模态分类特征提取作为其他下游任务的输入特征迁移学习在小数据集上进行微调以提高性能注意事项图像预处理必须使用模型特定的预处理参数可通过data_config获取包括归一化均值[0.48145466, 0.4578275, 0.40821073]和标准差[0.26862954, 0.26130258, 0.27577711]模型加载确保使用pretrainedTrue加载预训练权重性能优化推理时使用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),仅供参考