pit_xs_224.in1k图像Embedding提取教程:num_classes=0与forward_features两种写法全解

【免费下载链接】pit_xs_224.in1k

项目地址:https://ai.gitcode.com/hf_mirrors/timm/pit_xs_224.in1k
点击查看免费下载

本教程详解pit_xs_224.in1k图像模型的 Embedding 提取方法,对比num_classes=0参数与forward_features函数两种写法,帮你在 timm 框架中快速拿到 384 维图像特征向量,适用于检索、分类、迁移学习等场景。

📌 模型简介:pit_xs_224.in1k 是什么

pit_xs_224.in1k是 timm 库中的一个轻量级图像分类模型,全称PiT (Pooling based Vision Transformer),基于 ICCV 2021 论文《Rethinking Spatial Dimensions of Vision Transformers》实现。关键参数如下:

指标数值
参数量10.6 M(超轻量)
计算量 GMACs1.4
输入尺寸224 × 224
特征维度384 维
预训练数据ImageNet-1k(1000 类)
全局池化方式token 池化

得益于仅 10.6M 的参数量,它特别适合部署在对算力敏感的场景(如移动端检索、批量图像指纹),这也是它常被选作 Embedding 提取骨干的原因。

📄 模型卡片详情可参考 README.md,模型配置(如num_features: 384、global_pool: token)定义在 config.json 中。

🎯 为什么需要提取图像 Embedding

直接把图片送入模型得到的是 1000 维的类别概率,而Embedding(特征向量)才能表达"这张图长什么样":

  • 图像检索:以图搜图,用余弦相似度匹配
  • 迁移学习:冻结特征层,只训练分类头
  • 去重/聚类:按 Embedding 距离合并相似图片
  • 多模态对齐:与文本向量计算相似度

pit_xs_224.in1k 提取出的向量形状为(batch_size, 384),可直接投入上述任务。

📦 环境准备:安装依赖与加载模型

pip install timm torch

加载模型只需一行:

import timm model = timm.create_model('pit_xs_224.in1k', pretrained=True)

pretrained=True表示下载 ImageNet-1k 预训练权重(本仓库提供 model.safetensors 与 pytorch_model.bin 两种格式)。预处理参数(均值、标准差、crop 比例等)可从config.json中的pretrained_cfg字段读到,无需手调。

🚀 写法一:num_classes=0 移除分类头

第一种最直观的写法,是在创建模型时指定num_classes=0,timm 会自动移除末端的nn.Linear分类层,前向传播直接输出特征向量:

import timm import torch from PIL import Image model = timm.create_model( 'pit_xs_224.in1k', pretrained=True, num_classes=0, # 移除分类头 nn.Linear ) model = model.eval() # 自动获取模型推荐的数据预处理 data_config = timm.data.resolve_model_data_config(model) transforms = timm.data.create_transform(**data_config, is_training=False) img = Image.open('sample.jpg') output = model(transforms(img).unsqueeze(0)) # 形状: (1, 384)

关键要点:

  • num_classes=0必须在create_model时设置,本质是"截掉分类头"
  • 输出output形状为(batch_size, 384),即最终 Embedding
  • unsqueeze(0)用于给单张图补上 batch 维度
  • 预处理交给timm.data.create_transform自动生成,保证与训练时一致

🔧 写法二:forward_features + forward_head 分步执行

第二种写法不需要设置num_classes=0,保留完整模型结构,通过显式调用forward_features获取"未池化"特征,再用forward_head完成池化:

model = timm.create_model('pit_xs_224.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) img = Image.open('sample.jpg') x = transforms(img).unsqueeze(0) # 第一步:提取未池化特征 (1, 1, 384) features = model.forward_features(x) # 第二步:应用池化头得到 Embedding (1, 384) output = model.forward_head(features, pre_logits=True)

关键要点:

  • forward_features输出(1, 1, 384),是池化前的未展开张量
  • forward_head(..., pre_logits=True)只做池化不做最后线性变换,得到(1, 384)的最终 Embedding
  • 如果模型使用avgpool等空间池化模式,此方式还能拿到中间层特征图;pit_xs_224.in1k 采用token池化(见 config.json 中global_pool字段),因此两种写法结果一致

⚖️ 两种写法全解:怎么选?

对比项num_classes=0forward_features+forward_head
是否需要改模型结构✅ 是(移除分类头)❌ 否,模型保持完整
代码量更短,一步到位稍长,分两步
灵活性只能拿到最终 Embedding可拿到中间特征/未池化特征
适合场景纯 Embedding 检索需要分析特征结构、多任务头
输出形状(B, 384)(B, 1, 384)→(B, 384)

选择建议:

  1. 只做"以图搜图"→ 用num_classes=0,代码最简洁
  2. 需要中间层特征做可视化、探针(probe)→ 用forward_features分步写法
  3. 后续还要微调分类头 → 保留完整模型(写法二),推理时按需切换

💡 无论哪种写法,都建议在提取向量前调用model.eval(),并在with torch.no_grad():中推理以节省显存。

🧩 Embedding 的常见后续用法

拿到(1, 384)的向量后,典型操作包括:

# 归一化(余弦相似度检索的标准做法) emb = torch.nn.functional.normalize(output, dim=1) # 与另一张图片的 Embedding 计算相似度 sim = torch.cosine_similarity(emb1, emb2)

批量提取时,只要把多张图组成 batch 一次前向,即可获得(N, 384)的特征矩阵,直接喂给 FAISS 等检索库。

❓ 常见问题(FAQ)

Q1:num_classes=0和forward_features输出不一样?

不会。pit_xs_224.in1k 使用 token 池化,二者殊途同归,都是 384 维向量。差异只在"是否保留分类头"这一结构层面。

Q2:图片尺寸不是 224×224 可以吗?

timm 的create_transform会自动完成 resize 与 center crop(config.json中crop_pct: 0.9、crop_mode: center),你只需传入任意尺寸的 PIL 图像。

Q3:想换其他池化方式怎么办?

创建模型时可传global_pool='avg'等参数替代默认的 token 池化,此时用写法二(forward_features)获取空间特征图更灵活。

📚 总结

本教程完整解析了pit_xs_224.in1k 图像 Embedding 提取的两种核心写法:

  • ✅num_classes=0:一步移除分类头,拿到(B, 384)特征向量,适合纯检索场景
  • ✅forward_features+forward_head:保留完整模型,分步控制池化过程,适合需要中间特征的高级用法

10.6M 的参数量 + 384 维语义向量,让 pit_xs_224.in1k 成为轻量级图像检索与迁移学习的理想选择。配合 README.md 中的完整示例,你可以快速搭建起自己的图像 Embedding 流水线。

【免费下载链接】pit_xs_224.in1k

项目地址:https://ai.gitcode.com/hf_mirrors/timm/pit_xs_224.in1k
点击查看免费下载
上一篇:OpenClaw 接入 Together AI 实战指南:API Key 认证、模型选择与视频生成配置
下一篇:fhEVM 智能合约 ACL 实战指南:密文授权、访问校验与用户解密权限管理

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

相关新闻

【C++】 初阶篇 STL list的模拟实现

【C++】 初阶篇 STL list的模拟实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:15:49 阅读更多 →
【C++】 初阶篇 STL list的使用

【C++】 初阶篇 STL list的使用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:15:49 阅读更多 →
车间班组标准化作业提质体系

车间班组标准化作业提质体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:14:49 阅读更多 →

最新新闻

思科模拟器6.2:从安装到避坑的完整实战指南

思科模拟器6.2:从安装到避坑的完整实战指南

简介:这是一份思科模拟器6.2安装包,官方名称为Packet Tracer,面向网络技术学习者、思科认证考生以及开展网络实验教学的教师。软件以图形化方式搭建虚拟网络环境,可模拟路由器、交换机、无线接入点、防火墙等设备,支持…

2026/10/21 2:47:00 阅读更多 →
思科模拟器6.2全攻略:从网络仿真到CCNA实验与排错

思科模拟器6.2全攻略:从网络仿真到CCNA实验与排错

简介:网络仿真工具是网络工程师和认证学习者不可或缺的实践平台,它通过软件模拟真实设备的行为,让复杂的协议交互和故障排查变得可视化、可重复。思科模拟器作为经典的网络仿真环境,不仅支持路由、交换、无线等基础实验&#xff0…

2026/10/21 2:47:00 阅读更多 →
iOS地图定位Demo:原生MapKit+CoreLocation从权限到落图

iOS地图定位Demo:原生MapKit+CoreLocation从权限到落图

简介:一个面向iOS开发者的地图定位入门Demo,演示Core Location与MapKit的集成方式,清晰解决定位权限申请、位置获取、地图展示等基础问题,适合初学者到中级开发者作为实践参考。压缩包共23个文件,主要包含Objective-C源…

2026/10/21 2:47:00 阅读更多 →
拆解一个做 PPT 工具:素材自动变大纲一键出片

拆解一个做 PPT 工具:素材自动变大纲一键出片

## 背景这篇记录一次把做 PPT流程工程化的尝试。## 核心能力- 文本素材自动梳理大纲- 大纲支持二次编辑- 多套配色模板可选- 渲染16:9标准PPTX文件## 落地场景学习提升等场景都能直接搬进工作流,输入是散乱的原始材料,输出是可直接交付的成品。## 实现要…

2026/10/21 2:47:00 阅读更多 →
Git核心操作与四区模型详解:从基础命令到协作实战避坑指南

Git核心操作与四区模型详解:从基础命令到协作实战避坑指南

1. 为什么“git 基本操作”值得单独拎出来讲刚入行那会儿,我对 Git 的态度就是“能用就行”——clone、pull、push三板斧走天下,遇到冲突就慌,遇到回退就懵,实在不行就把整个项目删了重新拉一遍。后来参与协作的项目多了&#xff…

2026/10/21 2:47:00 阅读更多 →
Hurys毫米波雷达CAN调试软件安装与通信故障排查指南

Hurys毫米波雷达CAN调试软件安装与通信故障排查指南

简介:本资源是面向汽车电子工程师与ADAS系统开发者的毫米波雷达调试工具集,聚焦Hurys雷达参数配置、CAN通信联调与故障诊断等核心场景,解决雷达实车测试中软硬件协同调试难、驱动兼容性差、数据解析门槛高等实际问题。压缩包共19个文件&#…

2026/10/21 2:46:00 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →