【免费下载链接】cait_xxs24_384.fb_dist_in1k
📌 本文面向新手,带你逐行解析cait_xxs24_384.fb_dist_in1k这个 timm 预训练图像分类模型的 config.json 配置文件,重点拆解pretrained_cfg中的 12 个关键字段,帮你快速看懂 CaiT 模型卡、正确匹配输入尺寸与 ImageNet 归一化参数,避免训练或推理时的数据预处理踩坑。
🤖 先认识这个模型:它是什么?
在逐行解析之前,用 30 秒了解 README.md 中描述的模型背景:
| 项目 | 说明 |
|---|---|
| 模型架构 | CaiT(Class-Attention in Image Transformers),纯 Transformer 图像分类网络 |
| 预训练数据 | ImageNet-1k,且由论文作者使用**知识蒸馏(distillation)**训练 |
| 参数量 | 仅12.0 M,GMACs 9.6,属于"xxs"级超轻量模型 |
| 输入尺寸 | 固定 384 × 384 |
| 特征维度 | 192(num_features) |
| 类别数 | 1000(ImageNet-1k 标准类别) |
💡 名字拆解:
cait_xxs24_384.fb_dist_in1k=CaiT 架构 + 超小尺寸(xxs,24 个 patch 相关配置)+ 384 输入 + Facebook 蒸馏版 + ImageNet-1k。仓库中的 model.safetensors 和 pytorch_model.bin 就是对应这两套权重的实际参数文件(约 48 MB,Git LFS 存储)。
📄 config.json 整体结构一览
整个 config.json 只有 33 行,分两层:
{ "architecture": "cait_xxs24_384", // L2 架构名 "num_classes": 1000, // L3 分类头输出类别数 "num_features": 192, // L4 特征向量维度 "global_pool": "token", // L5 全局池化方式 "pretrained_cfg": { ... } // L6-L32 预训练数据配置(本文主角) }前 5 个字段决定了模型结构,而pretrained_cfg决定的是如何用数据喂给这个预训练模型。下面进入逐字段解析。
🔍 pretrained_cfg 逐行解析(L6-L32)
pretrained_cfg是 timm 生态的数据预处理"说明书",timm 的resolve_model_data_configAPI 会读取它自动生成 resize / center-crop / 归一化流水线。
1️⃣ 标识与加载方式:tag/custom_load(config.json#L7-L8)
| 字段 | 值 | 含义 |
|---|---|---|
tag | "fb_dist_in1k" | 预训练权重版本标签,对应模型名中的.fb_dist_in1k后缀,便于区分同一架构的多套预训练权重 |
custom_load | false | 是否需要自定义权重加载逻辑;false表示按标准方式加载,无需特殊处理 |
💡 如果同一模型还有
in22k(ImageNet-22k)等其他 tag 的权重,timm 会依据 tag 选择对应的pretrained_cfg子配置。
2️⃣ 输入尺寸相关:input_size/fixed_input_size(config.json#L9-L14)
| 字段 | 值 | 含义 |
|---|---|---|
input_size | [3, 384, 384] | 标准输入格式[channels, height, width],即 3 通道、384×384 像素 |
fixed_input_size | true | 输入尺寸固定不可变。该模型在 384 上训练,换尺寸会掉点,timm 会据此禁止任意 resize |
3️⃣ 缩放与裁剪:interpolation/crop_pct/crop_mode(config.json#L15-L17)
| 字段 | 值 | 含义 |
|---|---|---|
interpolation | "bicubic" | 缩放图像时使用双三次插值,比默认的 bilinear 在高分辨率下细节保持更好 |
crop_pct | 1.0 | 中心裁剪比例。1.0表示不裁剪(裁剪框 = 原图);0.875是 ImageNet 训练的常见值,推理时用1.0可拿到最大视野 |
crop_mode | "center" | 多尺度裁剪(TSM)时的取图模式,此处为中心裁剪 |
⚠️ 新手高频坑:自己手写 transform 时若用了
crop_pct=0.875的推理配置,会轻微掉点;直接读这个配置就不会出错。
4️⃣ ImageNet 归一化:mean/std(config.json#L18-L27)
| 字段 | 值(RGB) | 含义 |
|---|---|---|
mean | [0.485, 0.456, 0.406] | ImageNet 像素均值,用于像素值中心化 |
std | [0.229, 0.224, 0.225] | ImageNet 像素标准差,用于归一化缩放 |
这是全生态通用的 ImageNet 标准归一化,所有 ImageNet 预训练的视觉模型几乎都用这一组数,直接照抄 config.json#L18-L22 即可。
5️⃣ 分类与池化:num_classes/pool_size(config.json#L28-L29)
| 字段 | 值 | 含义 |
|---|---|---|
num_classes | 1000 | 该权重分类头对应的类别数(ImageNet-1k)。做迁移学习换成自己的类别数时,此值仅描述原始权重 |
pool_size | null | 全局池化窗口尺寸;null表示由模型架构自行决定(此处用global_pool: "token",即直接取类/序列 token,不需要窗口池化) |
6️⃣ 层名映射:first_conv/classifier(config.json#L30-L31)
| 字段 | 值 | 含义 |
|---|---|---|
first_conv | "patch_embed.proj" | 模型中"第一层卷积"的层名。CaiT 的输入由patch embedding 的投影层(patch_embed.proj)完成,timm 的自适应预训练(Adapt)就依赖它定位第一层 |
classifier | "head" | 分类器模块名。CaiT 的分类头挂在model.head下,做特征提取(num_classes=0)或替换分类头时靠它定位 |
💡 这两个字段是 timm 的"锚点 API":只要配置里写对了层名,
timm.create_model(..., num_classes=0)之类的操作就能自动找到对应的 patch embedding 与分类头。
📋 关键字段速查表
| 字段 | 行号 | 值 | 一句话说明 |
|---|---|---|---|
tag | L7 | fb_dist_in1k | 权重版本标签 |
custom_load | L8 | false | 标准方式加载权重 |
input_size | L9 | [3,384,384] | 固定输入尺寸 |
fixed_input_size | L14 | true | 禁止随意改尺寸 |
interpolation | L15 | bicubic | 缩放插值方式 |
crop_pct | L16 | 1.0 | 不裁剪 |
crop_mode | L17 | center | 中心裁剪模式 |
mean/std | L18-L27 | ImageNet 标准值 | 归一化参数 |
num_classes | L28 | 1000 | 原始类别数 |
pool_size | L29 | null | 由架构决定池化 |
first_conv | L30 | patch_embed.proj | 首层卷积锚点 |
classifier | L31 | head | 分类头锚点 |
🚀 最省事的用法:让 timm 自动读这份配置
手动复刻上面的参数容易漏字段,README.md 给出的官方做法是直接把pretrained_cfg交给 timm:
model = timm.create_model('cait_xxs24_384.fb_dist_in1k', pretrained=True) data_config = timm.data.resolve_model_data_config(model) # 读取 pretrained_cfg transforms = timm.data.create_transform(**data_config, is_training=False) output = model(transforms(img).unsqueeze(0))resolve_model_data_config内部就是读取本文解析的input_size、crop_pct、mean、std、interpolation等字段生成数据流水线——这就是逐字段理解它的实际价值:当你需要自定义 transform 或做迁移学习时,能精确知道每个参数该取什么值。
✅ 小结
pretrained_cfg不是训练超参,而是预训练权重对应的数据预处理 API 配置,共 12 个字段全部有明确用途;- 该 CaiT 模型输入固定384×384、用bicubic缩放、不裁剪(
crop_pct: 1.0)、采用标准ImageNet mean/std归一化; first_conv与classifier是 timm 生态的定位锚点,修改分类头、做特征提取时会被自动引用;- 完整字段与行号对照见 config.json,模型能力与官方用法示例见 README.md。
【免费下载链接】cait_xxs24_384.fb_dist_in1k
相关推荐
Qwen3.8-Flash-Next-FP8 config.json逐字段详解:indexer_budget到mrope_section的20个关键参数完整指南
Qwen3.8 Flash Next FP8 config.json逐字段详解:indexer_budget到mrope_section的20个关键参数完整指南
InternVL2_5-Pretrain-Models 配置参考:config.json 关键参数逐一详解(downsample_ratio、select_layer 完整指南)
InternVL2_5 Pretrain Models 配置参考:config.json 关键参数逐一详解(downsample_ratio、select_la
config.json里50+个键逐一精讲:AliceAI-Foundation-80B-A3B-Base模型超参数完全参考手册
config.json里50+个键逐一精讲:AliceAI Foundation 80B A3B Base模型超参数完全参考手册 AliceAI Foundat
人工智能大模型基础模型预训练
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考