【免费下载链接】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中的命名拆解如下:
| 名称片段 | 含义 |
|---|---|
cait | Class-Attention in Image Transformers 模型家族 |
xxs24 | xxs 超小型规格,patch size 为 24 |
384 | 输入图像尺寸为 384×384 |
fb_dist | Facebook 官方权重,经知识蒸馏训练 |
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)代码关键点解读
- 第 2 步是新手最容易忽略的:不同模型需要的 resize、裁剪、归一化参数不同,
resolve_model_data_config会直接从 config.json 中读取正确配置,避免"图片处理不对导致结果不准"。 unsqueeze(0)把单张图片变成 batch,这是 PyTorch 模型的输入惯例。- 输出的类别编号对应 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
相关推荐
基于 Claude Code 子代理实现加密货币实时分析:crypto-coin-analyzer-sonnet 配置与提示词全解
基于 Claude Code 子代理实现加密货币实时分析:crypto coin analyzer sonnet 配置与提示词全解 本篇技术指南围绕 claud
人工智能计算机视觉深度学习如何快速上手 AgentScope Java:10 分钟从零跑通你的第一个智能体(附完整代码)
如何快速上手 AgentScope Java:10 分钟从零跑通你的第一个智能体(附完整代码) AgentScope Java 是一个面向生产环境的 Java
人工智能AI Agent多智能体Agent 框架工具调用RAG如何5分钟跑通 InternVL3-8B-Instruct:零基础上手你的第一张图像对话(附完整代码)
如何5分钟跑通 InternVL3 8B Instruct:零基础上手你的第一张图像对话(附完整代码) 🐼 想在 5 分钟内让多模态大模型 InternVL3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考