资讯动态

timm模型选型:从结果CSV反推预训练策略

发布时间:2026/9/1 9:24:11 来源:尧图企业网站定制
timm模型选型从结果CSV反推预训练策略【免费下载链接】pytorch-image-modelsThe largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-image-models上周帮同事排查一个工业缺陷分类模型他按 timm 的结果表选了 ResNet-50ImageNet 上 81% 的模型拿到 224×224 产线上精度比内部基线低了一截。排查后发现问题不在架构而在预训练配置和输入尺寸没对齐。本文只基于项目results/目录里的官方数据results-imagenet.csv共 1556 行模型记录讲清楚怎么从中选出适合自己的 timm 模型。核心结论速览同一架构convnext_tiny28.59M 参数仅因预训练方式不同Top-1 在84.192%~82.066%之间分布个别训练配方甚至出现 288 输入比 224 低 3.95 个点的反例输入分辨率稳定换精度resnet50.a1_in1k从 224 提到 28880.382%→81.240%约 0.9 个点榜单前三全是 EVA 系列90.056%/89.956%/89.790%其中两个依赖 MIM 自监督预训练results/目录里没有 CIFAR 官方基准小数据集性能必须自测第三方文章里的~94.5%类数字无法在本仓库中溯源单架构 6.2 个点的差距convnext_tiny 预训练矩阵是什么。convnext_tiny参数量固定 28.59M架构完全相同但在 results/results-imagenet.csv 中不同预训练变体的 Top-1 差距很大。模型变体输入尺寸Top-1 (%)预训练方式convnext_tiny.in12k_ft_in1k_38438485.154ImageNet-12k 预训练 1k 微调convnext_tiny.in12k_ft_in1k28884.448同上convnext_tiny.in12k_ft_in1k22484.192同上convnext_tiny.fb_in22k_ft_in1k22482.900FB-22k 预训练 1k 微调convnext_tiny.fb_in1k28882.694仅 1k 监督预训练convnext_tiny.fb_in1k22482.066仅 1k 监督预训练convnext_tiny.fb_in22k_ft_in1k28878.950FB-22k 预训练另一配方为什么。两个变量在起作用预训练语料规模in21k/in22k 约 1400 万张图 vs in1k 的 128 万张决定了骨干先验的质量评测输入尺寸决定了能利用多少细节。同为 224 输入in12k_ft 系列比 fb_in1k 系列高 1.1~2.1 个点这部分与分辨率无关纯是预训练数据量的红利。数据佐证。注意最后一行fb_in22k_ft_in1k在 288 输入下只有78.950%反而比它自己的 224 版本82.900%低近 4 个点。这说明不同训练配方数据增强、正则强度、训练步数之间的差异可以超过分辨率带来的收益。只按输入越大越好排序会选错。源码层面。这种差异的根源在模型注册时的 default cfg。以 timm/models/eva.py 为例448 分辨率模型的配置是crop_pct: 1.0, interpolation: bicubic, fixed_input_size: Truefixed_input_size明确声明该权重只在固定分辨率下训练过推理端不应随意缩放而同文件中部分模型crop_pct为0.9对应 CSV 里crop_pct列的0.900。eva.py 中位置编码插值函数签名的interpolation: str bicubic默认值也正是 CSV 里大批模型interpolation列取 bicubic 的原因。这些配置项在create_model后可以通过model.default_cfg读到。import timm m timm.create_model(convnext_tiny.in12k_ft_in1k, pretrainedTrue) print(m.default_cfg[input_size], m.default_cfg[crop_pct], m.default_cfg[interpolation])不同规模与策略的对比results/results-imagenet.csv 中选取 10 个跨度样本模型参数量 (M)输入Top-1 (%)预训练方式eva02_large_patch14_448.mim_m38m_ft_in22k_in1k305.0844890.056MIM 自监督 in22keva_giant_patch14_560.m30m_ft_in22k_in1k1014.4556089.7903000 万标签 in22kconvnextv2_huge.fcmae_ft_in22k_in1k_512660.2951288.860FCMAE 自监督 in22kvit_base_patch16_224.augreg2_in21k_ft_in1k86.5722485.108in21kconvnext_tiny.in12k_ft_in1k_38428.5938485.154in12kregnety_040.ra3_in1k20.6528883.048in1kresnet50.a1_in1k25.5628881.240in1kefficientvit_b1.r288_in1k9.1028880.322in1kefficientnet_b0.ra4_e3600_r224_in1k5.2925679.364in1kmobilevit_s.cvnets_in1k5.5825678.298in1k参数量与精度不是线性关系。5M→25M 区间每多 1M 参数大约换 0.15 个点边际收益高而 28.59M 的convnext_tiny85.154384 输入到 305M 的eva02_large90.056448 输入参数放大 10 倍只换 4.9 个点且这 4.9 个点里有一部分来自分辨率从 384 提到 448不能完全归因于参数量。真正的曲线抬升来自预训练策略。86.57M 的vit_base用 in21k 预训练就能到 85.108超过 25M 的 ResNet-50 约 4 个点300M 档的模型一旦挂上 MIM/FCMAE 自监督eva02_large.mim_*、convnextv2_huge.fcmae_*就站上 88%~90%。选型时预训练方式这一列的信息量大于架构这一列。小参数端看效率前沿9.1M 的efficientvit_b180.322与 25.56M 的resnet50.a1_in1k81.240只差 0.9 个点参数量却是 1/3。如果你的部署预算卡在 10M 附近不必强上 ResNet-50。⚠️ 踩坑与陷阱预训练权重与输入尺寸不匹配。现象EVA-02 系列直接拿 224 输入部署精度比预期低 1~3 个点。原因default cfg 中fixed_input_size: True、crop_pct: 1.0权重在 448 下训练位置编码按 patch 网格对齐缩小输入后需插值且丢失训练时的感受野。规避部署分辨率与model.default_cfg[input_size]保持一致必须降分辨率时用同架构的 224 变体权重而不是硬缩 448 权重。小数据集上大模型过拟合。现象300M 模型在几万张小图上验证集精度反而低于 20M 模型。原因32×32 或低分辨率图像提供的有效信息量撑不起 3 亿参数且results/中没有 CIFAR 官方基准可参考网上流传的近似数字大多无法溯源。规避小数据集先选 5M~25M 档用 in21k/in22k 预训练权重 短程微调用 train.py 在自有数据上跑 2 轮对比再决定。评测预处理不统一。现象同一权重换一套预处理精度漂移 1~2 个点。原因CSV 的crop_pct列在0.875~1.000之间分布interpolation有 bilinear/bicubic 之分都是逐模型记录的训练时配置。规避按default_cfg逐项对齐不要全局统一用 0.875 中心裁剪。决策框架按顺序做四步判断不要跳步数据规模量级自有标注小于 10 万张 → 参数预算锁 5M~30M优先 in21k/in22k 或自监督预训练权重先验比架构重要大于 100 万张 → 才有资格考虑 300M 的 ViT/自监督组合。算力预算用param_count列先划出候选区间同档延迟大致同量级把榜单中超出预算的条目全部剔除。精度目标在剩余候选里找部署分辨率对应的条目——如果你的线上图是 224就用 224 输入那行的 Top-1 作为基线不要参考 384/448 行的数字。自有数据验证pretrainedTrue微调 2 轮以 Top-1 曲线斜率确认选型。行动清单从 results/results-imagenet.csv 抽出param_count、top1、img_size三列按你的算力预算先圈出候选区间部署前逐项核对model.default_cfg的input_size/crop_pct/interpolation预处理按它对齐小数据集只选 5M~25M 参数模型用 train.py 在自有数据上跑 2 轮微调验证不采信无来源的小数据集数字追求最后 1~2 个点时优先对比同架构不同预训练变体in1k vs in21k vs 自监督收益通常大于换架构【免费下载链接】pytorch-image-modelsThe largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-image-models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价