【免费下载链接】cait_xxs36_384.fb_dist_in1k
cait_xxs36_384.fb_dist_in1k 是 timm 库中基于 CaiT(Class-Attention in Image Transformers)架构的图像分类模型,由原作者在 ImageNet-1k 上以知识蒸馏方式预训练。本文带你逐行读懂它的模型卡片与 config.json 配置参数,从 architecture 到 mean/std 标准化值,每个字段的作用一次讲清楚。📖
一、30 秒认识这个模型
在解析配置之前,先用几句话了解它"是谁":
| 项目 | 说明 |
|---|---|
| 架构类型 | CaiT(Class-Attention in Image Transformers)视觉 Transformer |
| 模型规模 | 参数量 17.4M,GMACs 14.4,属于轻量级模型 |
| 输入分辨率 | 384 × 384 |
| 预训练数据 | ImageNet-1k(1000 类图像分类) |
| 训练方式 | 论文作者原始训练,含知识蒸馏(distillation) |
| 出处 | 《Going Deeper with Image Transformers》(ICCV 2021) |
模型名cait_xxs36_384.fb_dist_in1k本身就是信息:xxs36表示 extra-extra-small 规模、嵌入维度 36,384表示输入分辨率;后缀fb_dist_in1k则表示 Facebook 原版、蒸馏训练、ImageNet-1k 预训练。
二、仓库文件一览 🗂️
打开仓库,你能看到 4 个文件,各司其职:
- 模型卡片:README.md —— 记录模型类型、参数统计、使用示例代码和论文引用,是了解模型的第一入口
- 模型配置:config.json —— 本文主角,定义架构与预训练行为
- 模型权重:model.safetensors 与 pytorch_model.bin —— 同一份权重的两种存储格式,加载时选其一即可
三、config.json 逐项深度解析
完整的配置文件仅 33 行,但几乎每个字段都会影响模型的行为。下面按 config.json 中的出现顺序逐个拆解。
3.1 顶层参数:模型长什么样?
①architecture(config.json)
值为cait_xxs36_384。它告诉 timm 应该实例化哪一种 CaiT 变体——层数、通道数、注意力结构全部由这个名字决定,你无需手写模型结构代码。
②num_classes(config.json)
值为1000,对应 ImageNet-1k 的类别数。也就是说,该模型分类器最后一层输出 1000 个 logits。做迁移学习换成自己的类别时,只需在创建模型时覆盖这个参数。
③num_features(config.json)
值为192,指模型最终输出特征向量的维度。当用作图像 Embedding 模型(去掉分类头)时,提取出的全局特征就是 192 维。
④global_pool(config.json)
值为token,表示全局池化采用"类令牌"(class token)取值方式:从 Transformer 输出中直接取 class token 的表示作为整图特征,而不是对所有 token 做平均池化。CaiT 专门设计了 class attention 机制,token池化正是发挥其优势的标准做法。
3.2pretrained_cfg:预训练行为全记录
pretrained_cfg子对象(config.json)是理解模型"怎么用"的关键,timm 加载预训练权重和构造数据预处理管道时都会读取它。
⑤tag(config.json)
值为fb_dist_in1k,是预训练版本的标签:fb(Facebook 原版权重)+dist(知识蒸馏训练)+in1k(ImageNet-1k 预训练)。同一架构可能有多个 tag(如in1k_384、in1k_448等不同分辨率版本),tag 用于区分。
⑥custom_load(config.json)
值为false,表示加载权重时不需要任何特殊处理(比如剔除某些层、重映射层名),标准流程直接加载即可。
⑦input_size(config.json)
值为[3, 384, 384],即 3 通道、高 384、宽 384 的 RGB 图像。这是模型预训练时的输入规格,推理时建议保持一致。
⑧fixed_input_size(config.json)
值为true,说明该模型对输入尺寸敏感(CaiT 的位置编码按 24×24 的 patch 网格设计),不建议随意改动输入分辨率。
⑨interpolation(config.json)
值为bicubic。当输入图像尺寸与 384×384 不一致时,使用双三次插值进行缩放,它比最近邻插值能保留更多细节。
⑩crop_pct与crop_mode(config.json)
crop_pct为1.0、crop_mode为center:推理评估时不做裁剪,直接居中取整图。crop_pct小于 1 才会触发裁剪(如 0.875 对应常见的训练期随机裁剪策略)。
⑪mean与std(config.json)
这是 ImageNet 数据集的经典标准化参数:
mean=[0.485, 0.456, 0.406](RGB 三通道均值)std=[0.229, 0.224, 0.225](RGB 三通道标准差)
所有进入模型的像素都会先除以 255,再按"(像素 − mean)/ std"做归一化。timm 会根据这两组数字自动生成预处理变换,你不用手写 Normalize 代码。
⑫num_classes(config.json)
再次出现,值1000,表示预训练权重自带 1000 类的分类头,与顶层参数一致,便于框架自动匹配。
⑬pool_size(config.json)
值为null。配合global_pool: token理解:既然直接取 class token,就无需额外指定池化窗口大小。
⑭first_conv(config.json)
值为patch_embed.proj,指明模型的"第一层卷积"是 patch 嵌入模块。这个字段在微调技巧中很常用——例如把第一层卷积换成 2 通道卷积来适配医学图像,框架就是靠它定位的。
⑮classifier(config.json)
值为head,表示分类器对应的模块名是head。当你只想要特征而不想要分类结果时,框架据此知道该"摘除"哪个模块。
3.3 一张表看懂参数分组
| 分组 | 参数 | 作用一句话 |
|---|---|---|
| 结构定义 | architecture、num_classes、num_features、global_pool | 决定模型怎么搭建 |
| 输入规格 | input_size、fixed_input_size | 决定输入必须长什么样 |
| 预处理 | interpolation、crop_pct、crop_mode、mean、std | 决定图像如何喂给模型 |
| 权重要件 | tag、custom_load、pool_size、first_conv、classifier | 决定权重如何加载与定位 |
四、配置如何变成实际使用?⚙️
理解了配置,再来看它如何"落地"。以图像分类为例,核心只需一行创建模型:
import timm model = timm.create_model('cait_xxs36_384.fb_dist_in1k', pretrained=True)随后用timm.data.resolve_model_data_config(model)即可获得基于 config.json 自动推导的预处理参数(resize 到 384、中心裁剪、双三次插值、ImageNet 标准化)——pretrained_cfg里的字段正是在这一步派上用场。完整示例见模型卡片:README.md。
另外两个值得注意的细节:
- 图像 Embedding:设置
num_classes=0或调用forward_features,可得到未池化的 token 序列,形状为(1, 577, 192)——其中 576 个是 24×24 的图像 patch token(384 ÷ 16),1 个是 class token;参考 README.md。 - 特征维度呼应:这里的 192 维特征向量,正是顶层
num_features参数的体现。
五、新手常见疑问 FAQ
Q1:能改成 224×224 的输入吗?不建议。fixed_input_size为true且interpolation固定为 bicubic,说明该权重是为 384×384 分辨率调优的,改小分辨率会损失精度。
Q2:model.safetensors和pytorch_model.bin怎么选?两者内容相同,model.safetensors是更安全、加载更快的现代格式,优先选它;pytorch_model.bin是为兼容旧版 PyTorch 提供的备份。
Q3:global_pool: token换成avg可以吗?技术上可行,但不符合 CaiT 的设计初衷,class attention 的价值主要体现在 token 池化路径上,更换会损失性能。
Q4:first_conv和classifier我在哪里用得上?迁移学习时:改输入通道数靠first_conv定位;只取特征、替换分类头靠classifier定位。详见 config.json。
总结
回到 config.json,它不过 30 多行,却完整刻画了一个模型"是什么、怎么喂、怎么加载"的全部信息:architecture定结构、pretrained_cfg定行为、mean/std定预处理。读懂这份配置,你也就掌握了阅读任意 timm 模型卡片的通用方法。✅
- 模型卡片全文:README.md
- 配置参数原文:config.json
- 模型权重:model.safetensors、pytorch_model.bin
【免费下载链接】cait_xxs36_384.fb_dist_in1k
相关推荐
ASMv2 config.json全解:逐参数读懂多模态大模型的架构配置
ASMv2 config.json全解:逐参数读懂多模态大模型的架构配置 ASMv2 是 OpenGVLab 开源的 多模态大模型 (LLaVA 架构),能够"
如何读懂mitra-regressor-2模型文件:config.json参数逐项解读与模型权重下载指南
如何读懂mitra regressor 2模型文件:config.json参数逐项解读与模型权重下载指南 mitra regressor 2 是 AutoGlu
人工智能基础模型大模型机器学习Qwen3.8-2.4T-A95B-Quark-MXFP4 的 config.json 完全解析:逐字段读懂 2.4T 巨模型的配置
Qwen3.8 2.4T A95B Quark MXFP4 的 config.json 完全解析:逐字段读懂 2.4T 巨模型的配置 Qwen3.8 2.4T
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考