☰
读懂模型卡片:cait_xxs36_384.fb_dist_in1k的config.json配置参数逐项深度解析
2026/10/20 19:26:09 网站建设 项目流程

【免费下载链接】cait_xxs36_384.fb_dist_in1k

项目地址:https://ai.gitcode.com/hf_mirrors/timm/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

项目地址:https://ai.gitcode.com/hf_mirrors/timm/cait_xxs36_384.fb_dist_in1k
点击查看免费下载
上一篇:JeecgBoot移动端适配方案:响应式设计与APP打包实践
下一篇:3分钟告别登录焦虑:这款百度网盘免登录下载工具,值得每个分享狂魔拥有

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

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

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

立即咨询