☰
如何10分钟快速上手cait_xxs24_384.fb_dist_in1k:从零跑通第一张图像分类推理(附完整代码)
2026/10/20 1:24:47 网站建设 项目流程

【免费下载链接】cait_xxs24_384.fb_dist_in1k

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

cait_xxs24_384.fb_dist_in1k 是一个基于 timm 框架的 CaiT(Class-Attention in Image Transformers)图像分类模型,由 Facebook 研究团队在 ImageNet-1k 数据集上通过知识蒸馏预训练,仅约 1200 万参数,可对任意图片输出 1000 个类别的概率分布。本文带你从零环境搭建到跑通第一张图像的推理,10 分钟内即可完成全部步骤。

一、1分钟了解:这个模型是什么

CaiT 是 2021 年 ICCV 论文《Going Deeper With Image Transformers》提出的模型结构,它在 ViT 的基础上增加了局部注意力,让网络既能看局部细节、又能看全局语义。

cait_xxs24_384.fb_dist_in1k中的命名拆解如下:

名称片段含义
caitClass-Attention in Image Transformers 模型家族
xxs24xxs 超小型规格,patch size 为 24
384输入图像尺寸为 384×384
fb_distFacebook 官方权重,经知识蒸馏训练
in1k在 ImageNet-1k(1000 类)上预训练

几个关键指标,非常适合入门尝鲜:

  • 📦 参数量:约 12.0M(很小,CPU 也能跑)
  • ⚡ 计算量:约 9.6 GMACs(推理速度很快)
  • 🖼️ 输入尺寸:384×384(固定,不可随意更改)
  • 🏷️ 输出类别:1000(ImageNet-1k 类别编号 0~999)

仓库内包含 4 个核心文件:

文件说明
README.md模型卡片,包含模型详情与使用示例
config.json模型配置文件,含输入尺寸、归一化参数等
model.safetensors模型权重(safetensors 格式)
pytorch_model.bin模型权重(PyTorch 格式)

二、环境准备:一条命令装好依赖

推理只需要 3 个依赖:PyTorch、timm 和 Pillow。

pip install torch timm Pillow

💡 说明:timm.create_model('cait_xxs24_384.fb_dist_in1k', pretrained=True)首次调用时会自动下载预训练权重并缓存到本地,无需手动 clone 仓库。

三、完整推理代码:一次跑通图像分类

把下面这段代码保存为inference.py,用一张本地图片(如cat.jpg)替换路径,即可运行:

import torch import timm from PIL import Image # 1. 加载预训练模型(首次会自动下载权重) model = timm.create_model('cait_xxs24_384.fb_dist_in1k', pretrained=True) model.eval() # 2. 自动获取该模型的预处理配置(缩放、归一化等) data_config = timm.data.resolve_model_data_config(model) transforms = timm.data.create_transform(**data_config, is_training=False) # 3. 打开本地图片 -> 预处理 -> 增加 batch 维度 -> 放到对应设备 device = 'cuda' if torch.cuda.is_available() else 'cpu' model = model.to(device) img = Image.open('cat.jpg').convert('RGB') tensor = transforms(img).unsqueeze(0).to(device) # 形状 (1, 3, 384, 384) # 4. 推理,取 Top-5 类别 with torch.no_grad(): output = model(tensor) top5_probs, top5_idx = torch.topk(output.softmax(dim=1) * 100, k=5) print('Top-5 概率(%):', top5_probs) print('Top-5 类别编号:', top5_idx)

代码关键点解读

  1. 第 2 步是新手最容易忽略的:不同模型需要的 resize、裁剪、归一化参数不同,resolve_model_data_config会直接从 config.json 中读取正确配置,避免"图片处理不对导致结果不准"。
  2. unsqueeze(0)把单张图片变成 batch,这是 PyTorch 模型的输入惯例。
  3. 输出的类别编号对应 ImageNet-1k 的 1000 个类别(0~999),例如206通常是"金毛寻回犬"。

四、读懂 config.json:这些参数意味着什么

打开 config.json,有几个字段值得了解:

{ "architecture": "cait_xxs24_384", "num_classes": 1000, "num_features": 192, "global_pool": "token" }
  • num_classes: 1000:分类头输出 1000 个类别的得分
  • num_features: 192:模型主干特征维度,若用于提取图像向量就是这个维度
  • global_pool: token:用分类 token 做全局聚合
  • pretrained_cfg.input_size: [3, 384, 384]:输入必须是 3 通道、384×384 的 RGB 图像
  • pretrained_cfg.mean / std:ImageNet 标准的归一化均值和标准差(0.485/0.456/0.406),create_transform已自动应用

五、新手最易踩的 3 个坑与排查方法

报错 / 现象原因解决方式
Expected all tensors to be on the same device模型和输入图片张量不在同一设备(CPU/GPU)按上文代码统一model.to(device)和tensor.to(device)
结果明显不准确自己手写了 resize/归一化,参数不匹配用resolve_model_data_config+create_transform自动生成预处理
首次运行卡住无响应正在自动下载约 50MB 的预训练权重耐心等待,权重会缓存到~/.cache,第二次秒开

六、进阶玩法:把模型当"图像特征提取器"

除了分类,该模型还能输出 192 维的图像特征向量,可用于相似图片检索、聚类、做下游小样本分类等:

model = timm.create_model('cait_xxs24_384.fb_dist_in1k', pretrained=True, num_classes=0) # 去掉分类头,只保留特征主干 model.eval() with torch.no_grad(): features = model(transforms(img).unsqueeze(0)) # 形状 (1, 192)

更多用法(如forward_features获取未池化的 577×192 token 级特征)可参考 README.md 中的 Image Embeddings 章节。

七、总结

  • 🎯 模型定位:轻量级(12M 参数)CaiT 图像分类器,ImageNet-1k 蒸馏预训练
  • ⏱️ 上手成本:装依赖 1 条命令 + 推理代码约 20 行,10 分钟可跑通
  • 📁 仓库文件:模型卡片见 README.md,配置见 config.json,权重见 model.safetensors
  • 🚀 下一步建议:尝试更换不同图片观察 Top-5 变化;把num_classes换成你的数据类别数,做少量数据的微调训练

现在就可以打开终端,把cat.jpg换成你手边的任意一张照片,跑通属于你自己的第一次 AI 图像分类推理。

【免费下载链接】cait_xxs24_384.fb_dist_in1k

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

相关推荐

上一篇:SpinKit动画时间管理:基于请求优先级的动态调整
下一篇:开源射频设计工具的未来:RF-Tools-KiCAD路线图与社区发展

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询