timm documentation

更新日志

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

更新日志

2026年11月3日

  • reset_classifier() 与检查点重建:修复了 ViT、EVA、BEiT、NaFlexViT、RepViT 和 iFormer 中的相关问题 在更改分类器或池化后导出/重新加载模型时,保留归一化位置设置和蒸馏设置。同时修复了未池化的 PiT 导出以及禁用蒸馏的 EfficientFormerV2。
  • NaFlex:修复转换过程中 ViT / EVA 的 norm 位置问题,支持 DINOv3 / Lingbot 检查点的 SwiGLU 对齐,并在数据加载器中保留灰度 / 非 RGB 输入通道。
  • 修复 RepViT、HGNet、MViTv2 和 pre-norm ViT 的逐层学习率衰减分组,以及 output_stride=8/16 下的 InceptionNeXt 特征尺寸。
  • 版本 1.0.31。

2026年10月24日

  • forward_intermediates() 和 prune_intermediate_layers() 现已支持所有模型。新增支持 CSPNet、NFNet、DLA、DenseNet(#2870,感谢 ghaith-mq)、CoaT、ConViT、ConvMixer、CrossViT、HRNet、Inception-v3、Inception-ResNet-v2、NASNet、PNASNet、SelecSLS、SENet、Sequencer2d、VGG、Visformer、Xception 和 Aligned Xception,并为 NaFlexViT 和 MobileNetV5 编码器提供了 prune_intermediate_layers()。CoaT、ConViT、ConvMixer、CrossViT 和 Visformer 新增对 features_only 的支持。
  • prune_intermediate_layers() 修复
    • prune_head=True 会移除整个头部(包括 head norm、pre-logits 层和 attention pooling),使得剪枝后的模型不保留任何未使用的参数(DDP 无需 find_unused_parameters),但 CoaT、CrossViT 和 HRNet 在仅选取部分并行尺度/分支时除外。传入 prune_head=False 可保留该头部。
    • 将分层模型修剪到更早的阶段会移除为最后一个阶段配置的最终归一化和头,forward_features() 在最后一个保留的特征处结束,并且 num_features / head_hidden_size 与之匹配。修剪到主干特征会移除其后的主干池化。
    • 修复了梯度检查点、stop_early、类标记/后网络移除,以及许多模型家族中剪枝模型和 feature_cls='getter' 模型的 TorchScript 问题。
  • head_hidden_size 是所有模型中实际的预 logits(池化后)宽度,包括 concat 池化(catavgmax)以及调用 reset_classifier() 之后。模型当前无法应用的池化类型会在创建或重置时抛出异常,而不是被静默忽略或在 forward 中失败。
  • 其他修复:VOLO 在 num_classes=0 时的输出为类别标记嵌入(与 forward_head(pre_logits=True) 一致),vit_pe_core 的 reset_classifier() 在使用非 map 池化时会移除注意力池化,通过 save_for_hf 导出池化类型时会读取头部的当前池化方式,且无头(num_classes=0)的 Swin、SwinV2、DaViT 和 NextViT 检查点能够正确重新加载。

2026年10月13日

  • 通过新的 sweep.py 进行超参数扫描:针对 train.py 的任意参数执行网格搜索或随机搜索,每个任务使用一个有效的 --config,在本地 GPU 池上运行且支持断点续跑。WSD 扫描会为每个超参数组合训练一个稳定的主干,并从其里程碑检查点分支出独立的冷却阶段,以极低的成本在多种预算下比较退火效果。请参阅 训练文档。
  • train.py:--resume auto 会从实验自身的 last.pth.tar 原地恢复(检查点历史、model_best 和 summary.csv 保持一致),--stop-epoch N 在不更改计划的情况下停止,--save-epochs N [N ...] 保留 milestone-N.pth.tar 快照,并且 YAML --config 的值会根据脚本的参数进行验证。
  • 弃用 PlateauLRScheduler(--sched plateau)。timm 调度器是 epoch 或更新次数的无状态函数,基于指标驱动的 plateau 调度从未适配该模式,且其状态不会被检查点保存,因此恢复训练时从未做到精确。请改用 cosine 或 wsd。
  • 文档:新增 Model API 页面,为每个模型模块生成模型系列页面以取代旧的单个模型页面,并扩展了数据 / 损失 / 模型参考页面。
  • 模型 API 一致性修复:reset_classifier() 在所有模型中保留当前的池化方式,未知的构造函数参数在所有位置都会引发 TypeError,Swin 系列的 dynamic_img_size,LeViT 的逐层学习率衰减,no_weight_decay 中未匹配到任何参数的名称(NesT、SwinV2、XCiT、FocalNet),以及所有 set_input_size 系列中记录的调整大小状态。
  • 修复:GCViT 全局查询在批次内混合图像、RDNet 和 MobileNetV5 的梯度检查点、save_for_hf 过时的测试输入尺寸、EfficientViT (MSRA) 矩形缩放、ImageDataset 图像转换错误(#2846)。reparameterize_model 已移至 timm.models。

2026年10月9日

  • 添加了 CSPNeXt(RTMDet 骨干网络)cspnext_{tiny,s,m,l,x},其 ImageNet-1k 分类权重由 OpenMMLab 转换而来。感谢 Munehiro Kobayashi。
  • 优化器改进
    • RMSpropTF、LaProp、LAMB、LARS、AdaBelief 的 Foreach(多张量)实现。Foreach 步骤按设备 L2 缓存大小进行分块(可通过 TIMM_FOREACH_CHUNK_SIZE 覆盖)。
    • AdamWLegacy / NAdamW 的 RMS 更新裁剪(clipping_threshold),以及新的解耦 / 修正权重衰减 NovoGrad 变体(novogradw、novogradc)。
    • 修复了众多优化器中的正确性问题,包括:修正了使用就地更新张量学习率时的权重衰减、修复了小学习率下 FP16 更新停滞的问题、改进了低精度状态处理(Kron、AdaBelief、NovoGrad),并且不再就地修改 p.grad。
    • torch.compile / CUDA 图修复,适用于 Adopt、SGDW、AdafactorBV。
    • 新增优化器文档,涵盖用法、命名规范以及优化器家族。
  • 添加 WSD(warmup-stable-decay)学习率调度器(--sched wsd、--lr-decay-fn、--lr-stable-timescale)。
  • 针对 bfloat16 / float16 模型的 Model EMA 修复。ModelEmaV3 的 bfloat16 EMA 默认使用随机舍入,而 float16 模型则保留 float32 EMA。
  • 通过 set_input_size()
    • 扩展了对窗口模型(MaxViT、CoAtNet、BEiT、EfficientViT-MSRA、relpos ViT、Swin 系列)的支持。
    • Swin / SwinV2 / SwinV2-CR 在调整大小时保持每个阶段的窗口与网格比例不变,因此在当前尺寸下的调用现在是一个空操作。支持按阶段设置 window_size / window_ratio。修复了 Swin S3 和 SwinV2 window16 / window12 模型在相同尺寸调用时输出发生变化的问题。
    • 修复 SwinV2 在窗口大小为 1、奇数阶段特征尺寸以及 CUDA / 低精度下的混合 ViT 调整大小时出现 NaN 的问题。
  • 修复梯度累积余数处理(#2821)、小数据集上的分布式采样/重复增强、预训练源覆盖以及蒸馏教师模型设置、train.py 配合 --sched none,以及针对非方形输入的评估中心裁剪插值。
  • 修复了跨 PyTorch 版本的 ONNX 导出兼容性问题、dropout 一致性问题,以及更多 meta-device 初始化问题。

2026年9月25日

  • 多标签分类支持
    • 在 train.py / validate.py 中添加 --task multilabel,使用 BCE(MultiLabelClassificationTask)进行训练。有关详细信息,请参阅训练文档。
    • 目标可以是类别索引列表、稠密多热向量(--target-format multihot),或每个类别一个二值字段(--target-key a,b,c),并支持使用 / 路径访问嵌套字段。受 hfds、hfids、tfds(多字段键)和 wds 读取器支持。
    • Mixup / CutMix 和 NaFlex 加载器支持多标签目标。标签平滑会将每个目标向 0.5 移动,对于多标签情况,其默认值为 0。
    • 验证报告 mAP(默认的 --eval-metric)以及 micro、macro 和 sample F1,其中 F1 阈值由 --multilabel-threshold 设置。
    • 新的数据集级别评估器会在分布式 rank 上对整个验证集计算指标,并排除分布式采样器的填充部分。
    • 请参阅 Hub 上的 timm 多标签图像数据集 集合,其中包含可直接使用的示例/基准数据集。
  • 通过 --loss
    • Poly-1、双向、ZLPR 和分布平衡损失。
    • 用于 BCE / ASL 的类别频率加权,由class_weights.py收集的标签计数计算得出。
    • ASL 现在支持 fp16,并且默认使用 batchmean 归约方式
  • RoPE 重构
    • 将仅用于训练的 RoPE 坐标增强(shift、jitter、rescale)扩展到 axial、mixed 和 MRoPE 嵌入, 与 DINOv3 共享辅助函数,同时保留其现有的增强行为。
    • 为 Fourier / rotary 构建器(build_fourier_pos_embed、build_rotary_pos_embed)和轴向 RoPE 模块添加 grid_type 和 normalize_coords 选项,并在 EVA 中支持可配置的 MRoPE 部分。
    • 在元组输出的 RotaryEmbedding 和 base 工厂变体中支持 rotate_half。
    • 修正 EVA、NaFlexViT 和 MRoPE 注意力池化中的旋转布局转发。
    • 在 half/bfloat16 模型中,将非可学习的 RoPE 频率和坐标缓冲区至少保持为 float32,并在 autocast 下以 float32 计算混合 RoPE 相位。这些精度修复可能会改变低精度模型的输出。
    • 修复了像素网格和参考形状缩放下的批量 RoPE 嵌入。DINOv3 的 grid_indexing='xy' 现在会按请求交换坐标通道;这些先前配置错误的输出将发生变化。
    • 让 apply_rot_embed、apply_rot_embed_cat 和 apply_rot_embed_list 返回每个输入的 dtype,在旋转后执行类型转换,而不是先对 sin/cos 进行降精度转换。
    • 将两个轴向 RoPE 模块整合到一个私有基类之下。现有调用保持兼容,但 bands 缓冲区现在在缓存模式和动态模式下均会被保留(在缓存模式下,rope.bands 不再为 None)。
  • 修复了 LeViT 及相关模型(EfficentFormer*、EfficientViT-MSRA、TinyViT)在带有缓存注意力偏置时的训练/评估模式切换和数据类型更改问题。

2026年9月22日

  • 添加 Qwen-Drive-1.0-4B 视觉塔权重。
  • 修复预取加载器流复用/同步以及针对非正方形和单波段图像的 AugMix 问题。
  • 修复 AdaMuon 卷积学习率缩放、AdafactorBigVision 裁剪、MARS 梯度历史以及 Kron 检查点加载。
  • 修复陈旧的评估注意力偏置缓存、修剪后的模型特征元数据、膨胀最大池化的填充以及非对称损失梯度模式。
  • Release 1.0.30

2026年9月10日至11日

  • 添加 Qwen3-VL / Qwen3.5 / Qwen3.8 ViT 分类器和编码器变体,包括带和不带原生空间合并器的分类器。
  • 添加 Sapiens2 ViT,支持 EVA 和 NaFlexViT。这两个新增模型均包含原生的 timm Hub 权重。感谢 Yonghye Kwon。
  • 添加 iFormer,支持原生 timm Hub 权重。感谢 Ryan Hou。
  • 添加 EfficientViM,支持原生 timm Hub 权重。感谢 smellslikeml。
  • 添加 DeepSeek-V4 / V4.1 ViT 分类器和编码器,支持原生 timm Hub 权重。感谢 Yonghye Kwon。
  • 切换默认的 NaFlex SigLIP 位置插值、inference.py 输入尺寸选择,并改进 --model-kwargs 解析。
  • 修复了部分模型的 meta 设备构建以及 device/dtype 工厂支持;将配置测试移至 meta 以加快 CI 速度,并覆盖 meta 上下文。

2026年8月27日

  • 添加 LowFormer 模型和权重
  • 修复或合并由智能体发现的众多真实存在但较小或不常见的错误
  • Release 1.0.29

2026年8月11日

  • 为以下模型添加模型定义和预训练权重:
  • 为 NaFlex 以外的训练添加按批次的图像和批次大小调度,包括从小到大的渐进式分辨率调度。
  • 通过仅使用键的注意力掩码、对编译友好且内存高效的采样位置,以及缓存的可变补丁插值,改进 NaFlexViT。
  • 改进模型工厂路径和检查点处理;修复等长标记位置嵌入重采样。

2026 年 7 月 10 日

  • 改进优化器对 torch.compile 和张量学习率的支持。
  • 扩展 NaFlexViT 的 patch-layout(用于 NaFlex-CLAP)以及 forward_intermediates(NaFlex 字典输入)支持。
  • 强化 pickle 加载并改进自定义标签推理。
  • Release 1.0.28

2026 年 5 月 27 日

2026 年 5 月 8 日

  • Release 1.0.27

2026年4月23日

  • 添加 Gemma4 ViT 编码器,支持 NaFlex 流水线(每张图像可具有不同的宽高比/尺寸)。感谢 Yonghye Kwon
  • 在 NaFlexVit 中支持 DINOv3 权重。感谢 Yonghye Kwon
  • 对 Muon 回退(AdamW/NadamW)学习率行为的一些改进

2026年3月23日

  • 提升 pickle 检查点处理的安全性。将所有加载操作的默认值设置为 weights_only=True,并为 ArgParse 添加 safe_global。
  • 改进核心 ViT/EVA 模型及层的注意力掩码处理。解析布尔掩码,并为 SSL 任务传递 is_causal。
  • 修复在启用 ViT 且未启用位置嵌入时,class 和 register token 的使用问题。
  • 在 ViT 中添加 Patch Representation Refinement (PRR) 作为池化选项。感谢 Sina(https://github.com/sinahmr)。
  • 改进注意力池化层中输出投影 / MLP 维度的一致性。
  • Hiera 模型的 F.SDPA 优化,以支持使用 Flash Attention 内核。
  • 为 SGDP 优化器添加了警告。
  • 版本 1.0.26。自从我离开 Hugging Face 以来的第一个维护版本。

2026 年 2 月 23 日

  • 为蒸馏任务包装器添加 token 蒸馏训练支持
  • 为官方弃用做准备,移除部分 torch.jit 的使用
  • 为 AdamP 优化器添加警告
  • 即使在 meta 设备上初始化,也要调用 reset_parameters(),以便缓冲区能够通过诸如 init_empty_weights 之类的技巧进行初始化
  • 调整 Muon 优化器以支持 DTensor/FSDP2(使用 clamp而非 clamp_min,为 DTensor 提供交替的 NS 分支)
  • Release 1.0.25

2026 年 1 月 21 日

  • Compat Break: 修复了 ParallelScalingBlock (& 中 QKV 与 MLP 偏置的疏漏 DiffParallelScalingBlock)
    • 不影响任何已训练的 timm 模型,但可能会影响下游使用。

2026 年 1 月 5 日和 6 日

  • Release 1.0.24
  • 为所有模型添加新的基准测试结果 csv 文件,记录在配备 RTX Pro 6000、5090 和 4090 显卡并使用 PyTorch 2.9.1 时的推理耗时
  • 修复已弃用的 timm.models.layers 导入路径中已移动模块的错误,该错误会影响旧版导入
  • Release 1.0.23

2025 年 12 月 30 日

2025 年 12 月 12 日

2025 年 12 月 1 日

  • 添加轻量级任务抽象,并通过新任务在训练脚本中添加对 logits 和特征蒸馏的支持。
  • 移除对旧版 APEX AMP 的支持

2025 年 11 月 4 日

2025 年 10 月 31 日 🎃

  • 更新 ImageNet 和 OOD 变体结果 CSV 文件,以包含几个新模型,并在多个 torch 和 timm 版本上验证其正确性
  • 作为 AdamW 与 Muon 超参数搜索的一部分,添加了 EfficientNet-X 和 EfficientNet-H B5 模型权重(仍在迭代 Muon 的运行)

2025 年 10 月 16 日至 20 日

  • 添加 Muon 优化器的实现(基于 https://github.com/KellerJordan/Muon) ,并包含以下自定义功能: - 额外的灵活性,以及对卷积权重和不适用于正交化的权重形状的改进处理 - 通过减少内存分配并默认使用融合的 (b)add(b)mm 操作,为 NS 迭代带来小幅加速 - 如果 Muon 不适用于参数形状(或通过参数组标志排除),则默认使用 AdamW(如果 nesterov=True 则使用 NAdamW)更新 - 与 torch 实现类似,可通过 adjust_lr_fn 从多种学习率缩放调整函数中选择 - 可通过 ns_coefficients 从多种 NS 系数预设中选择或指定自定义系数
    • 为卷积权重提供了额外的灵活性以及改进的处理方式,并为不适合正交化的权重形状提供了回退方案
    • 通过减少内存分配并使用融合的 (b)add(b)mm 操作,为 NS 迭代带来小幅加速
    • 默认情况下,如果 muon 不适用于参数形状(或通过参数组标志排除),则使用 AdamW(如果 nesterov=True,则使用 NAdamW)更新
    • 与 torch 实现类似,通过 adjust_lr_fn 从多个学习率缩放调整函数中进行选择
    • 从多个 NS 系数预设中进行选择,或通过 ns_coefficients 指定自己的系数
  • 支持 'meta' 设备模型初始化的前 2 个步骤
    • 修复了若干在 ‘meta’ 设备上下文中导致创建失败的操作
    • 为 timm 中的所有模型和模块(任何继承自 nn.Module 的对象)添加对 device 和 dtype 工厂关键字参数的支持
  • 在代码中为预训练 cfg 添加了 License 字段
  • Release 1.0.21

2025 年 9 月 21 日

  • 将 DINOv3 ViT 权重标签从 lvd_1689m -> lvd1689m 重新映射以保持一致(sat_493m -> sat493m 同理)
  • Release 1.0.20

2025 年 9 月 17 日

2025 年 7 月 23 日

  • 为 EVA 模型添加 set_input_size() 方法,供 OpenCLIP 3.0.0 使用,以允许调整基于 timm 的编码器模型的尺寸。
  • 版本 1.0.18,OpenCLIP 3.0.0 中的 PE-Core S & T 模型需要此版本
  • 修复了一个导致 Python 3.9 兼容性失效的小型类型问题。1.0.19 补丁版本发布。

2025 年 7 月 21 日

  • NaFlexViT 现已支持 ROPE。所有由 EVA 基础(eva.py)涵盖的模型,包括 EVA、EVA02、Meta PE ViT、timm SBB ViT w/ ROPE 以及 Naver ROPE-ViT,现在都可以在模型创建时传入 use_naflex=True 后在 NaFlexViT 中加载。
  • 新增了更多 Meta PE ViT 编码器,包括小型/微型变体、支持平铺的语言变体,以及更多空间变体。
  • PatchDropout 已在 NaFlexViT 和 EVA 模型上修复(在添加 Naver ROPE-ViT 后出现的回归问题)
  • 修复了 grid_indexing='xy' 下的 XY 顺序问题,影响了 'xy' 模式下非正方形图像的用法(仅影响 ROPE-ViT 和 PE)。

2025 年 7 月 7 日

  • 对 MobileNet-v5 主干网络进行微调,以改善 Google Gemma 3n 的行为(需配合更新后的官方权重使用)
    • 添加 stem 偏置(在更新后的权重中为零,与旧权重不兼容)
    • GELU -> GELU (tanh 近似)。一个小的改动,使其更接近 JAX
  • 为 layer-decay 支持添加两个参数:最小缩放钳制和“无优化”缩放阈值
  • 添加 ‘Fp32’ LayerNorm、RMSNorm 和 SimpleNorm 变体,可启用以强制在 float32 中计算归一化
  • 上述工作已完成部分类型定义以及 norm、norm+act 层的参数清理
  • 在 eva.py 中支持 Naver ROPE-ViT(https://github.com/naver-ai/rope-vit),添加用于混合模式的 RotaryEmbeddingMixed 模块,权重托管于 HuggingFace Hub
modelimg_sizetop1top5param_count
vit_large_patch16_rope_mixed_ape_224.naver_in1k22484.8497.122304.4
vit_large_patch16_rope_mixed_224.naver_in1k22484.82897.116304.2
vit_large_patch16_rope_ape_224.naver_in1k22484.6597.154304.37
vit_large_patch16_rope_224.naver_in1k22484.64897.122304.17
vit_base_patch16_rope_mixed_ape_224.naver_in1k22483.89496.75486.59
vit_base_patch16_rope_mixed_224.naver_in1k22483.80496.71286.44
vit_base_patch16_rope_ape_224.naver_in1k22483.78296.6186.59
vit_base_patch16_rope_224.naver_in1k22483.71896.67286.43
vit_small_patch16_rope_224.naver_in1k22481.2395.02221.98
vit_small_patch16_rope_mixed_224.naver_in1k22481.21695.02221.99
vit_small_patch16_rope_ape_224.naver_in1k22481.00495.01622.06
vit_small_patch16_rope_mixed_ape_224.naver_in1k22480.98694.97622.06
  • 对 ROPE 模块、辅助函数以及 FX 跟踪叶子节点注册进行了一些清理
  • 准备发布 1.0.17 版本

2025 年 6 月 26 日

  • 用于Gemma 3n图像编码器的MobileNetV5骨干网络(仅编码器变体)
  • Version 1.0.16 已发布

2025 年 6 月 23 日

2025 年 6 月 5 日

  • 初始 NaFlexVit 模型代码。NaFlexVit 是一种视觉 Transformer,具有以下特性:
    1. 在单个模块中封装嵌入和位置编码
    2. nn.Linear 补丁嵌入对预分块(字典)输入的支持
    3. 支持 NaFlex 可变宽高比、可变分辨率(SigLip-2: https://arxiv.org/abs/2502.14786)
    4. 支持 FlexiViT 可变 patch 大小(https://arxiv.org/abs/2212.08013)
    5. 对 NaViT 分数/分解位置嵌入的支持(https://arxiv.org/abs/2307.06304)
  • 现有的 vit 模型位于 vision_transformer.py 中,可以通过在 use_naflex=True 中添加 create_model
    • 部分原生权重即将推出
  • 提供完整的 NaFlex 数据管道,支持使用可变宽高比 / 尺寸图像进行训练 / 微调 / 评估
    • 要在 train.py 和 validate.py 中启用,请添加 --naflex-loader 参数,必须与 NaFlexVit 一起使用
  • 要在 NaFlexVit 模型中使用 NaFlex 数据管道评估一个已加载的现有(经典)ViT:
    • python validate.py /imagenet --amp -j 8 --model vit_base_patch16_224 --model-kwargs use_naflex=True --naflex-loader --naflex-max-seq-len 256
  • 训练过程中有一些值得注意的额外参数特性
    • --naflex-train-seq-lens' 参数用于指定在训练期间每个批次中随机选取的序列长度
    • --naflex-max-seq-len 参数用于设置验证的目标序列长度
    • 添加 --model-kwargs enable_patch_interpolator=True --naflex-patch-sizes 12 16 24 将启用按批次随机选择补丁大小并进行插值
    • --naflex-loss-scale 参数会根据批次大小更改每个批次的损失缩放模式,timm NaFlex 加载会根据每个序列长度更改批次大小

2025 年 5 月 28 日

2025 年 2 月 21 日

  • 新增 SigLIP 2 ViT 图像编码器(https://huggingface.co/collections/timm/siglip-2-67b8e72ba08b09dd97aecaf9)
    • 可变分辨率/宽高比的 NaFlex 版本目前仍在开发中
  • 新增使用 SBB 配方训练的 ‘SO150M2’ ViT 权重,效果出色,在 ImageNet 上的表现优于之前训练量更少的尝试。
    • vit_so150m2_patch16_reg1_gap_448.sbb_e200_in12k_ft_in1k - 88.1% top-1
    • vit_so150m2_patch16_reg1_gap_384.sbb_e200_in12k_ft_in1k - 87.9% top-1
    • vit_so150m2_patch16_reg1_gap_256.sbb_e200_in12k_ft_in1k - 87.3% top-1
    • vit_so150m2_patch16_reg4_gap_256.sbb_e200_in12k
  • 更新了 InternViT-300M ‘2.5’ 权重
  • Release 1.0.15

2025 年 2 月 1 日

  • 供参考,PyTorch 2.6 和 Python 3.13 已测试通过,可与当前 main 分支及已发布的 timm 版本配合使用。

2025 年 1 月 27 日

2025 年 1 月 19 日

  • 修复 LeViT safetensor 权重的加载问题,移除本应已禁用的转换代码
  • 添加使用 SBB 配方训练的 ‘SO150M’ ViT 权重,效果尚可,但对于 ImageNet-12k/1k 预训练/微调而言并非最佳形态
    • vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k_ft_in1k - 86.7% top-1
    • vit_so150m_patch16_reg4_gap_384.sbb_e250_in12k_ft_in1k - 87.4% top-1
    • vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k
  • 其他类型、拼写错误等的清理
  • 发布 1.0.14 版本以修复 LeViT 问题

2025 年 1 月 9 日

  • 添加对纯 bfloat16 或 float16 进行训练和验证的支持
  • wandb 项目名称参数由 https://github.com/caojiaolong 添加,使用 arg.experiment 作为名称
  • 修复了旧问题:在不支持硬链接的文件系统(例如 FUSE 文件系统挂载)上,检查点保存功能无法正常工作
  • 1.0.13 版本发布

2025 年 1 月 6 日

  • 在 timm.models 中添加 torch.utils.checkpoint.checkpoint() 包装器,默认 use_reentrant=False,除非环境变量中设置了 TIMM_REENTRANT_CKPT=1。

2024 年 12 月 31 日

  • convnext_nano 384x384 ImageNet-12k 预训练 & 微调。 https://huggingface.co/models?search=convnext_nano%20r384
  • 添加来自 https://github.com/apple/ml-aim 的 AIM-v2 编码器,在 Hub 上查看:https://huggingface.co/models?search=timm%20aimv2
  • 将来自 https://github.com/google-research/big_vision 的 PaliGemma2 编码器添加到现有的 PaliGemma 中,可在 Hub 上查看:https://huggingface.co/models?search=timm%20pali2
  • 添加缺失的 L/14 DFN2B 39B CLIP ViT,vit_large_patch14_clip_224.dfn2b_s39b
  • 修复现有的 RmsNorm 层和函数,使其符合标准公式,并在可能的情况下使用 PT 2.5 的实现。将旧实现移至 SimpleNorm 层,它是无中心化和偏置的 LN。此前只有两个 timm 模型使用了它,这些模型已更新。
  • 允许在创建模型时覆盖 cache_dir 参数
  • 为 HF 数据集包装器传递 trust_remote_code
  • 由创建者添加的 inception_next_atto 模型
  • Adan 优化器注意事项,以及 Lamb 解耦权重衰减选项
  • 由 https://github.com/brianhou0208 修复的部分 feature_info 元数据
  • 所有在加载时使用了重映射的 OpenCLIP 和 JAX(CLIP、SigLIP、Pali 等)模型权重,均已为其创建了独立的 HF Hub 实例,以便支持基于 hf-hub: 的加载方式,从而能够与新版 Transformers 的 TimmWrapperModel 配合使用。

2024 年 11 月 28 日

2024 年 11 月 12 日

  • 优化器工厂重构
    • 新的工厂通过注册优化器来工作,使用带有若干关键特性的 OptimInfo 数据类
    • 在重构后的 create_optimizer_v2 函数中添加 list_optimizers、get_optimizer_class、get_optimizer_info,以探索优化器、获取信息或类
    • 弃用 optim.optim_factory,将函数移至 optim/_optim_factory.py 和 optim/_param_groups.py,并建议通过 timm.optim 进行导入
  • 添加 Adopt (https://github.com/iShohei220/adopt) 优化器
  • 添加 Adafactor 的‘Big Vision’变体(https://github.com/google-research/big_vision/blob/main/big_vision/optax.py)优化器
  • 修复原始 Adafactor,以便为卷积选择更优的分解维度
  • 对 LAMB 优化器进行微调,在原始版本的基础上改进了 torch.where 的功能,并重构了裁剪逻辑
  • 在 ViT、DeiT 和 EVA 中,动态图像尺寸支持已改进,以支持从非正方形 patch 网格进行缩放,感谢 https://github.com/wojtke

2024 年 10 月 31 日

新增一组训练效果极佳的 ResNet & ResNet-V2 18/34(basic block)权重。参见 https://huggingface.co/blog/rwightman/resnet-trick-or-treat

2024 年 10 月 19 日

  • 清理 torch amp 的使用以避免 cuda 特定调用,合并来自 MengqingCao 的 Ascend (NPU) 设备支持,该支持现在应可在 PyTorch 2.5 中配合新的设备扩展自动加载功能正常工作。也在 Pytorch 2.5 中测试了 Intel Arc (XPU),并且(基本)可用。

2024 年 10 月 16 日

  • 修复了从已弃用路径 timm.models.registry 导入时的错误,并提高了现有弃用警告的优先级,使其可见
  • 将 InternViT-300M 的权重(https://huggingface.co/OpenGVLab/InternViT-300M-448px)移植到 timm 中,命名为 vit_intern300m_patch14_448

2024 年 10 月 14 日

  • 应要求添加了 18/18d/34/34d ResNet 模型定义的 Pre-activation (ResNetV2) 版本(权重待定)
  • Release 1.0.10

2024 年 10 月 11 日

  • 已添加 MambaOut (https://github.com/yuweihao/MambaOut) 模型及权重。这是一种对不含 SSM 的 SSM 视觉模型的戏谑式探索(本质上是一个带门控机制的 ConvNeXt)。包含原始权重以及自定义变体和权重。
modelimg_sizetop1top5param_count
mambaout_base_plus_rw.sw_e150_r384_in12k_ft_in1k38487.50698.428101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k28886.91298.236101.66
mambaout_base_plus_rw.sw_e150_in12k_ft_in1k22486.63298.156101.66
mambaout_base_tall_rw.sw_e500_in1k28884.97497.33286.48
mambaout_base_wide_rw.sw_e500_in1k28884.96297.20894.45
mambaout_base_short_rw.sw_e500_in1k28884.83297.2788.83
mambaout_base.in1k28884.7296.9384.81
mambaout_small_rw.sw_e450_in1k28884.59897.09848.5
mambaout_small.in1k28884.596.97448.49
mambaout_base_wide_rw.sw_e500_in1k22484.45496.86494.45
mambaout_base_tall_rw.sw_e500_in1k22484.43496.95886.48
mambaout_base_short_rw.sw_e500_in1k22484.36296.95288.83
mambaout_base.in1k22484.16896.6884.81
mambaout_small.in1k22484.08696.6348.49
mambaout_small_rw.sw_e450_in1k22484.02496.75248.5
mambaout_tiny.in1k28883.44896.53826.55
mambaout_tiny.in1k22482.73696.126.55
mambaout_kobe.in1k28881.05495.7189.14
mambaout_kobe.in1k22479.98694.9869.14
mambaout_femto.in1k28879.84895.147.3
mambaout_femto.in1k22478.8794.4087.3

2024 年 9 月

2024 年 8 月 21 日

  • 在 ImageNet-12k 上训练并在 ImageNet-1k 上微调的更新版 SBB ViT 模型,挑战了许多规模更大、速度更慢的模型
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k87.43898.25664.11384
vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k86.60897.93464.11256
vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k86.59498.0260.4384
vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k85.73497.6160.4256
  • MobileNet-V1 1.25、EfficientNet-B1 和 ResNet50-D 权重,采用 MNV4 基线挑战配方
modeltop1top5param_countimg_size
resnet50d.ra4_e3600_r224_in1k81.83895.92225.58288
efficientnet_b1.ra4_e3600_r240_in1k81.44095.7007.79288
resnet50d.ra4_e3600_r224_in1k80.95295.38425.58224
efficientnet_b1.ra4_e3600_r240_in1k80.40695.1527.79240
mobilenetv1_125.ra4_e3600_r224_in1k77.60093.8046.27256
mobilenetv1_125.ra4_e3600_r224_in1k76.92493.2346.27224
  • 添加 SAM2 (HieraDet) 骨干架构及权重加载支持
  • 添加在 in12k 上训练并使用 abswin 位置嵌入、然后在 1k 上微调的 Hiera Small 权重
modeltop1top5param_count
hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k84.91297.26035.01
hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k84.56097.10635.01

2024 年 8 月 8 日

2024 年 7 月 28 日

  • 添加了基于 ra4 mnv4-small 配方训练的 mobilenet_edgetpu_v2_m 权重。在 224 分辨率下 top-1 准确率为 80.1%,在 256 分辨率下为 80.7%。
  • Release 1.0.8

2024 年 7 月 26 日

  • 更多 MobileNet-v4 权重、ImageNet-12k 预训练(含微调)以及抗锯齿 ConvLarge 模型
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.9915.0197.2942.70632.59544
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.77215.22897.3442.65632.59480
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k84.6415.3697.1142.88632.59448
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k84.31415.68697.1022.89832.59384
mobilenetv4_conv_aa_large.e600_r384_in1k83.82416.17696.7343.26632.59480
mobilenetv4_conv_aa_large.e600_r384_in1k83.24416.75696.3923.60832.59384
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.9917.0196.673.3311.07320
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k82.36417.63696.2563.74411.07256
modeltop1top1_errtop5top5_errparam_countimg_size
efficientnet_b0.ra4_e3600_r224_in1k79.36420.63694.7545.2465.29256
efficientnet_b0.ra4_e3600_r224_in1k78.58421.41694.3385.6625.29224
mobilenetv1_100h.ra4_e3600_r224_in1k76.59623.40493.2726.7285.28256
mobilenetv1_100.ra4_e3600_r224_in1k76.09423.90693.0046.9964.23256
mobilenetv1_100h.ra4_e3600_r224_in1k75.66224.33892.5047.4965.28224
mobilenetv1_100.ra4_e3600_r224_in1k75.38224.61892.3127.6884.23224
  • 在 vit 和 swin v1/v2 模型中添加了 set_input_size() 的原型,以允许在模型创建后更改图像大小、patch 大小和窗口大小。
  • swin 中对不同尺寸的处理支持得到改进,除了 set_input_size 之外,还向 __init__ 添加了 always_partition 和 strict_img_size 参数,以支持更灵活的输入尺寸约束
  • 修复中间“Getter”特征包装器中索引信息顺序错误的问题,并检查其顺序或范围索引。
  • 添加几个用于测试的、实际在 ImageNet-1k 上训练过的 tiny < .5M 参数模型
modeltop1top1_errtop5top5_errparam_countimg_sizecrop_pct
test_efficientnet.r160_in1k47.15652.84471.72628.2740.361921.0
test_byobnet.r160_in1k46.69853.30271.67428.3260.461921.0
test_efficientnet.r160_in1k46.42653.57470.92829.0720.361600.875
test_byobnet.r160_in1k45.37854.62270.57229.4280.461600.875
test_vit.r160_in1k42.058.068.66431.3360.371921.0
test_vit.r160_in1k40.82259.17867.21232.7880.371600.875
  • 修复 vit reg token 初始化,感谢 Promisery
  • 其他杂项修复

2024 年 6 月 24 日

  • 另外 3 个 MobileNetV4 混合权重,采用不同的 MQA 权重初始化方案
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.ix_e600_r384_in1k84.35615.64496.8923.10837.76448
mobilenetv4_hybrid_large.ix_e600_r384_in1k83.99016.01096.7023.29837.76384
mobilenetv4_hybrid_medium.ix_e550_r384_in1k83.39416.60696.7603.24011.07448
mobilenetv4_hybrid_medium.ix_e550_r384_in1k82.96817.03296.4743.52611.07384
mobilenetv4_hybrid_medium.ix_e550_r256_in1k82.49217.50896.2783.72211.07320
mobilenetv4_hybrid_medium.ix_e550_r256_in1k81.44618.55495.7044.29611.07256
  • DaViT 模型中的 florence2 权重加载

2024 年 6 月 12 日

  • 已添加 MobileNetV4 模型及初始的 timm 训练权重:
modeltop1top1_errtop5top5_errparam_countimg_size
mobilenetv4_hybrid_large.e600_r384_in1k84.26615.73496.9363.06437.76448
mobilenetv4_hybrid_large.e600_r384_in1k83.80016.20096.7703.23037.76384
mobilenetv4_conv_large.e600_r384_in1k83.39216.60896.6223.37832.59448
mobilenetv4_conv_large.e600_r384_in1k82.95217.04896.2663.73432.59384
mobilenetv4_conv_large.e500_r256_in1k82.67417.32696.313.6932.59320
mobilenetv4_conv_large.e500_r256_in1k81.86218.13895.694.3132.59256
mobilenetv4_hybrid_medium.e500_r224_in1k81.27618.72495.7424.25811.07256
mobilenetv4_conv_medium.e500_r256_in1k80.85819.14295.7684.2329.72320
mobilenetv4_hybrid_medium.e500_r224_in1k80.44219.55895.384.6211.07224
mobilenetv4_conv_blur_medium.e500_r224_in1k80.14219.85895.2984.7029.72256
mobilenetv4_conv_medium.e500_r256_in1k79.92820.07295.1844.8169.72256
mobilenetv4_conv_medium.e500_r224_in1k79.80820.19295.1864.8149.72256
mobilenetv4_conv_blur_medium.e500_r224_in1k79.43820.56294.9325.0689.72224
mobilenetv4_conv_medium.e500_r224_in1k79.09420.90694.775.239.72224
mobilenetv4_conv_small.e2400_r224_in1k74.61625.38492.0727.9283.77256
mobilenetv4_conv_small.e1200_r224_in1k74.29225.70892.1167.8843.77256
mobilenetv4_conv_small.e2400_r224_in1k73.75626.24491.4228.5783.77224
mobilenetv4_conv_small.e1200_r224_in1k73.45426.54691.348.663.77224
  • 已添加对 Apple MobileCLIP(https://arxiv.org/pdf/2311.17049,FastViT 和 ViT-B)图像塔模型的支持及权重(属于 OpenCLIP 支持的一部分)。
  • 已添加 ViTamin (https://arxiv.org/abs/2404.02132) CLIP 图像塔模型及权重(属于 OpenCLIP 支持的一部分)。
  • OpenAI CLIP 修改版 ResNet 图像塔建模及权重支持(通过 ByobNet)。重构 AttentionPool2d。

2024 年 5 月 14 日

  • 支持将 PaliGemma jax 权重加载到使用平均池化的 SigLIP ViT 模型中。
  • 添加来自 Meta 的 Hiera 模型(https://github.com/facebookresearch/hiera)。
  • 为 transforms 添加 normalize= 标志,返回未归一化的 torch.Tensor,保留原始 dytpe(用于 chug)
  • Version 1.0.3 发布

2024 年 5 月 11 日

  • Searching for Better ViT Baselines (For the GPU Poor) 的权重和 ViT 变体已发布。正在探索 Tiny 和 Base 之间的模型形状。
modeltop1top5param_countimg_size
vit_mediumd_patch16_reg4_gap_256.sbb_in12k_ft_in1k86.20297.87464.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12k_ft_in1k85.41897.4860.4256
vit_mediumd_patch16_rope_reg1_gap_256.sbb_in1k84.32296.81263.95256
vit_betwixt_patch16_rope_reg4_gap_256.sbb_in1k83.90696.68460.23256
vit_base_patch16_rope_reg1_gap_256.sbb_in1k83.86696.6786.43256
vit_medium_patch16_rope_reg1_gap_256.sbb_in1k83.8196.82438.74256
vit_betwixt_patch16_reg4_gap_256.sbb_in1k83.70696.61660.4256
vit_betwixt_patch16_reg1_gap_256.sbb_in1k83.62896.54460.4256
vit_medium_patch16_reg4_gap_256.sbb_in1k83.4796.62238.88256
vit_medium_patch16_reg1_gap_256.sbb_in1k83.46296.54838.88256
vit_little_patch16_reg4_gap_256.sbb_in1k82.51496.26222.52256
vit_wee_patch16_reg1_gap_256.sbb_in1k80.25695.36013.42256
vit_pwee_patch16_reg1_gap_256.sbb_in1k80.07295.13615.25256
vit_mediumd_patch16_reg4_gap_256.sbb_in12kN/AN/A64.11256
vit_betwixt_patch16_reg4_gap_256.sbb_in12kN/AN/A60.4256
  • 新增 AttentionExtract 辅助类,用于从 timm 模型中提取注意力图。示例参见 https://github.com/huggingface/pytorch-image-models/discussions/1232#discussioncomment-9320949
  • forward_intermediates() API 经过优化,并添加到了更多模型中,包括一些具有其他提取方法的 ConvNets。
  • 1047 种模型架构中有 1017 种支持 features_only=True 特征提取。其余 34 种架构也可以支持,但将根据优先级请求来决定。
  • 移除带有 torch.jit.script 注解的函数,包括旧的 JIT 激活函数。这些函数与 dynamo 存在冲突,而在使用 dynamo 时,其表现要出色得多。

2024 年 4 月 11 日

  • 在为久未发布的 1.0 版本做准备,目前一切已稳定运行了一段时间。
  • 一个长期缺失的重要功能,features_only=True 现已支持具有扁平隐藏状态或非标准模块布局的 ViT 模型(目前涵盖 'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*')
  • 上述功能支持通过新的 forward_intermediates() API 实现,该 API 可与功能包装模块配合使用,也可直接使用。
model = timm.create_model('vit_base_patch16_224')
final_feat, intermediates = model.forward_intermediates(input)
output = model.forward_head(final_feat)  # pooling + classifier head

print(final_feat.shape)
torch.Size([2, 197, 768])

for f in intermediates:
    print(f.shape)
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])
torch.Size([2, 768, 14, 14])

print(output.shape)
torch.Size([2, 1000])
model = timm.create_model('eva02_base_patch16_clip_224', pretrained=True, img_size=512, features_only=True, out_indices=(-3, -2,))
output = model(torch.randn(2, 3, 512, 512))

for o in output:
    print(o.shape)
torch.Size([2, 768, 32, 32])
torch.Size([2, 768, 32, 32])
  • 已添加 TinyCLIP 视觉塔权重,感谢 Thien Tran

2024 年 2 月 19 日

  • 新增 Next-ViT 模型。改编自 https://github.com/bytedance/Next-ViT
  • 新增 HGNet 和 PP-HGNetV2 模型。由 SeeFun 改编自 https://github.com/PaddlePaddle/PaddleClas
  • 移除了 setup.py,改为使用 PDM 支持的基于 pyproject.toml 的构建
  • 使用 _for_each 添加更新后的模型 EMA 实现,以减少开销
  • 在训练脚本中支持非 GPU 设备的设备参数
  • 其他杂项修复和小幅新增
  • 最低支持的 Python 版本已提升至 3.8
  • Release 0.9.16

2024 年 1 月 8 日

数据集与转换重构

  • HuggingFace 流式(可迭代)数据集支持(--dataset hfids:org/dataset)
  • 针对 Webdataset 封装器的调整,以改进分割信息的获取,支持从受支持的 HF hub webdataset 自动获取分割
  • 已测试 HF datasets 和 webdataset 包装器从 HF hub 流式传输最近上传到 https://huggingface.co/timm 的 timm ImageNet 数据集
  • 使输入和目标列/字段键在各个数据集中保持一致,并通过 args 传递
  • 在使用 e:g: --input-size 1 224 224 或 --in-chans 1 时,完全支持单色图像,并会在数据集中正确设置 PIL 图像转换
  • 改进了多种替代的裁剪和缩放变换(ResizeKeepRatio、RandomCropOrPad 等),用于 PixParse 文档 AI 项目
  • 在增强和参数中添加 SimCLR 风格的色彩抖动概率,以及灰度和高斯模糊选项
  • 允许在训练脚本中不使用验证集进行训练(--val-split '')
  • 为训练添加了 --bce-sum(对类别维度求和)和 --bce-pos-weight(正样本加权)参数,因为它们是常见的 BCE 损失调整项,我过去经常需要硬编码

2023 年 11 月 23 日

  • 新增 EfficientViT-Large 模型,感谢 SeeFun
  • 修复 Python 3.7 兼容性,即将停止对其支持
  • 其他杂项修复
  • Release 0.9.12

2023 年 11 月 20 日

2023 年 11 月 3 日

2023 年 10 月 20 日

  • SigLIP 图像塔权重支持在 vision_transformer.py.
    • 在微调及下游功能应用中具有巨大潜力。
  • 根据 Vision Transformers Need Registers,在 vit 模型中实验性地支持 ‘register’
  • 已使用新发布的权重更新了 RepViT。感谢 wangao
  • 为 Swin 模型添加补丁大小调整支持(在加载预训练权重时)
  • 0.9.8 版本待发布

2023 年 9 月 1 日

  • 由 SeeFun 添加的 TinyViT
  • 修复 EfficientViT (MIT) 以使用 torch.autocast,使其兼容回退至 PT 1.10
  • 0.9.7 版本发布

2023 年 8 月 28 日

  • 为以下模型添加动态图像尺寸支持: vision_transformer.py, vision_transformer_hybrid.py, deit.py, 以及 eva.py ,且不破坏向后兼容性。在创建模型时,将 dynamic_img_size=True 添加到参数中,以允许更改网格大小(在每次前向传播中对绝对和/或 ROPE 位置嵌入进行插值)。添加 dynamic_img_pad=True 以允许不能被 patch 大小整除的图像尺寸(在每次前向传播中将右下角填充至 patch 大小)。启用任一动态模式都会破坏 FX 跟踪,除非将 PatchEmbed 模块添加为叶子节点。在创建时通过传入不同的 img_size 来调整位置嵌入大小的现有方法(对预训练嵌入权重进行一次插值)仍然有效。在创建时更改 patch_size 的现有方法(对预训练 patch_embed 权重进行一次调整大小)仍然有效。验证命令示例:python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True
    • 在创建模型时,在参数中添加 dynamic_img_size=True,以允许更改网格大小(在每次前向传播中对绝对和/或 ROPE 位置嵌入进行插值)。
    • 添加 dynamic_img_pad=True 以允许图像尺寸不能被 patch 尺寸整除(每次前向传播时,将右下角填充至 patch 尺寸)。
    • 启用任一动态模式都会破坏 FX 追踪,除非将 PatchEmbed 模块添加为叶子节点。
    • 通过传入不同的 img_size 来调整位置嵌入大小的现有方法(在创建时仅对预训练嵌入权重进行一次插值)仍然有效。
    • 在创建时通过调整预训练权重(仅执行一次)来更改 patch_size 的现有方法仍然有效。
    • 验证命令示例 python validate.py --data-dir /imagenet --model vit_base_patch16_224 --amp --amp-dtype bfloat16 --img-size 255 --crop-pct 1.0 --model-kwargs dynamic_img_size=True dyamic_img_pad=True

2023 年 8 月 25 日

2023 年 8 月 11 日

  • Swin、MaxViT、CoAtNet 和 BEiT 模型支持在创建时调整图像/窗口大小,并自适应预训练权重
  • 用于测试非方形缩放的示例验证命令 python validate.py --data-dir /imagenet --model swin_base_patch4_window7_224.ms_in22k_ft_in1k --amp --amp-dtype bfloat16 --input-size 3 256 320 --model-kwargs window_size=8,10 img_size=256,320

2023 年 8 月 3 日

  • 为 HRNet w18_small 和 w18_small_v2 添加 GluonCV 权重。由 SeeFun 转换。
  • 修复 selecsls* 模型命名回归问题
  • ViT/EVA 的 Patch 和位置嵌入在加载 bfloat16/float16 权重时(或在动态调整大小时针对激活值)可以正常工作
  • v0.9.5 版本发布准备

2023 年 7 月 27 日

  • 添加了使用 timm 训练的 seresnextaa201d_32x8d.sw_in12k_ft_in1k_384 权重(以及 .sw_in12k 预训练权重),在 ImageNet-1k 上 top-1 准确率为 87.3%,是我所知的 ImageNet ResNet 系列模型中表现最好的。
  • 由 wangao 添加的 RepViT 模型和权重(https://arxiv.org/abs/2307.09283)
  • 由 SeeFun 添加的 I-JEPA ViT 特征权重(不含分类器)
  • 由 SeeFun 添加的 SAM-ViT(segment anything)特征权重(不含分类器)
  • 为 EfficientNet 添加对替代特征提取方法和负索引的支持
  • 添加 NAdamW 优化器
  • 其他修复

2023 年 5 月 11 日

  • timm 0.9 已发布,从 0.8.xdev 版本过渡

2023 年 5 月 10 日

  • Hugging Face Hub 下载现已成为默认方式,https://huggingface.co/timm 上有 1132 个模型,timm 中有 1163 个权重
  • 感谢 Leng Yue 添加了 DINOv2 vit 特征骨干权重
  • FB MAE vit 特征主干权重已添加
  • OpenCLIP DataComp-XL L/14 feat 骨干网络权重已添加
  • MetaFormer(poolformer-v2、caformer、convformer、更新后的 poolformer(v1))权重由 Fredo Guan 添加
  • vit/deit 模型上的实验性 get_intermediate_layers 函数,用于获取隐藏状态(灵感来自 DINO 的实现)。此功能仍在开发中,可能会发生较大变化……欢迎反馈。
  • 如果 pretrained=True 且不存在权重,模型创建会抛出错误(而不是继续执行随机初始化)
  • 修复了原始分类器中带有 1001 个类别的 inception / nasnet TF 来源权重出现的回归问题
  • 已为工厂添加 bitsandbytes (https://github.com/TimDettmers/bitsandbytes) 优化器,使用 bnb 前缀,例如 bnbadam8bit
  • 其他清理和修复
  • 在切换到 0.9 版本并将 timm 从预发布状态推出之前进行最终测试

2023 年 4 月 27 日

  • 97% 的 timm 模型已上传至 HF Hub,并且几乎全部更新以支持多权重预训练配置
  • 随着多权重支持的加入,对另一批模型进行了小幅清理和重构。增加了更多 fused_attn (F.sdpa) 和 features_only 支持,并修复了 torchscript 相关问题。

2023 年 4 月 21 日

  • 在训练脚本中添加了梯度累积支持并经过测试(--grad-accum-steps),感谢 Taeksang Kim
  • HF Hub 上的更多权重(cspnet、cait、volo、xcit、tresnet、hardcorenas、densenet、dpn、vovnet、xception_aligned)
  • 在 train.py 中添加了 --head-init-scale 和 --head-init-bias,用于缩放分类器头并为微调设置固定偏置
  • 移除所有 inplace_abn 的使用,在 tresnet 中将其替换为标准 BatchNorm(并相应地修改了权重)。

2023 年 4 月 12 日

  • 添加 ONNX 导出脚本、验证脚本以及我长期积累的辅助工具。针对较新版本的 ONNX 和 PyTorch,调整了 'same' 填充方式以优化导出效果。
  • 重构 vit 及类似 vit 模型的 dropout 参数,将 drop_rate 拆分为 drop_rate(分类器 dropout)、proj_drop_rate(block mlp / out projections)、pos_drop_rate(位置嵌入 drop)和 attn_drop_rate(注意力 dropout)。同时为 vit 和 eva 模型添加 patch dropout(FLIP)。
  • 为更多 vit 模型添加对 fused F.scaled_dot_product_attention 的支持,新增环境变量(TIMM_FUSED_ATTN)用于控制,并提供配置接口以启用/禁用
  • 添加 EVA-CLIP 主干网络,包含图像塔权重,最高支持 4B 参数的“enormous”模型,以及此前遗漏的 336x336 OpenAI ViT 模式。

2023 年 4 月 5 日

  • 所有支持多权重加载的 ResNet 模型均已推送到 Hugging Face Hub
  • 现已为若干抗锯齿 ResNet 模型提供新的 ImageNet-12k + ImageNet-1k 微调版本
    • resnetaa50d.sw_in12k_ft_in1k - 81.7 @ 224, 82.6 @ 288
    • resnetaa101d.sw_in12k_ft_in1k - 83.5 @ 224, 84.1 @ 288
    • seresnextaa101d_32x8d.sw_in12k_ft_in1k - 86.0 @ 224, 86.5 @ 288
    • seresnextaa101d_32x8d.sw_in12k_ft_in1k_288 - 86.5 @ 288, 86.7 @ 320

2023 年 3 月 31 日

  • 为 convnext-base/large CLIP 模型添加首个 ConvNext-XXLarge CLIP -> IN-1k 微调以及 IN-12k 中间微调。
modeltop1top5img_sizeparam_countgmacsmacts
convnext_xxlarge.clip_laion2b_soup_ft_in1k88.61298.704256846.47198.09124.45
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_38488.31298.578384200.13101.11126.74
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_32087.96898.47320200.1370.2188.02
convnext_base.clip_laion2b_augreg_ft_in12k_in1k_38487.13898.21238488.5945.2184.49
convnext_base.clip_laion2b_augreg_ft_in12k_in1k86.34497.9725688.5920.0937.55
  • 添加了 EVA-02 MIM 的预训练和微调权重,推送到 HF hub 并更新了所有 EVA 模型的模型卡片。首个 top-1 准确率超过 90%(top-5 准确率达 99%)的模型!有关其将 MIM 与 CLIP 相结合,并对多种模型、数据集和训练方案进行调整的工作的更多详细信息,请查看原始代码和权重:https://github.com/baaivision/EVA。
modeltop1top5param_countimg_size
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k90.05499.042305.08448
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k89.94699.01305.08448
eva_giant_patch14_560.m30m_ft_in22k_in1k89.79298.9921014.45560
eva02_large_patch14_448.mim_in22k_ft_in1k89.62698.954305.08448
eva02_large_patch14_448.mim_m38m_ft_in1k89.5798.918305.08448
eva_giant_patch14_336.m30m_ft_in22k_in1k89.5698.9561013.01336
eva_giant_patch14_336.clip_ft_in1k89.46698.821013.01336
eva_large_patch14_336.in22k_ft_in22k_in1k89.21498.854304.53336
eva_giant_patch14_224.clip_ft_in1k88.88298.6781012.56224
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k88.69298.72287.12448
eva_large_patch14_336.in22k_ft_in1k88.65298.722304.53336
eva_large_patch14_196.in22k_ft_in22k_in1k88.59298.656304.14196
eva02_base_patch14_448.mim_in22k_ft_in1k88.2398.56487.12448
eva_large_patch14_196.in22k_ft_in1k87.93498.504304.14196
eva02_small_patch14_336.mim_in22k_ft_in1k85.7497.61422.13336
eva02_tiny_patch14_336.mim_in22k_ft_in1k80.65895.5245.76336
  • 基于 DeiT 和 MLP-Mixer 的模型的多权重和 HF hub

2023 年 3 月 22 日

  • 更多权重已推送到 HF hub,并支持多权重,包括:regnet.py、rexnet.py、byobnet.py、resnetv2.py、swin_transformer.py、swin_transformer_v2.py、swin_transformer_v2_cr.py
  • Swin Transformer 模型支持特征提取(swinv2_cr_* 使用 NCHW 特征图,其他所有模型使用 NHWC)以及空间嵌入输出。
  • FocalNet(来自 https://github.com/microsoft/FocalNet)的模型和权重已添加,并进行了大量重构,支持特征提取,无固定分辨率/尺寸限制
  • RegNet 的权重已随 HF hub 推送、SWAG、SEER 以及 torchvision v2 权重一同增加。就模型规模而言,SEER 的性能相当差,但可能仍有一定用处。
  • 更多 ImageNet-12k 预训练和 1k 微调 timm 权重:
    • rexnetr_200.sw_in12k_ft_in1k - 82.6 @ 224, 83.2 @ 288
    • rexnetr_300.sw_in12k_ft_in1k - 84.0 @ 224, 84.5 @ 288
    • regnety_120.sw_in12k_ft_in1k - 85.0 @ 224, 85.4 @ 288
    • regnety_160.lion_in12k_ft_in1k - 85.6 @ 224, 86.0 @ 288
    • regnety_160.sw_in12k_ft_in1k - 85.6 @ 224, 86.0 @ 288 (与 SWAG PT + 1k FT 相比,性能相同但分辨率低得多,远超 SEER FT)
  • 新增模型名称弃用 + 重映射功能(这是将 0.8.x 从预发布版本推出的一个里程碑)。正在添加映射……
  • 次要的 bug 修复和改进。

2023 年 2 月 26 日

  • 添加 ConvNeXt-XXLarge CLIP 预训练图像塔权重,用于微调与特征提取(微调功能待定)——参见 模型卡片
  • 将 convnext_xxlarge 的默认 LayerNorm eps 更新为 1e-5(针对 CLIP 权重,提升稳定性)
  • 0.8.15dev0

2023 年 2 月 20 日

  • 添加 320x320 convnext_large_mlp.clip_laion2b_ft_320 和 convnext_large_mlp.clip_laion2b_ft_soup_320 CLIP 图像塔权重,用于特征提取和微调
  • 0.8.13dev0 pypi 发布,包含最新更改,并迁移至 huggingface 组织

2023 年 2 月 16 日

  • safetensor 检查点支持已添加
  • 添加来自“Scaling Vision Transformers to 22 B. Params”(https://arxiv.org/abs/2302.05442)的创意——qk norm、RmsNorm、并行块
  • Add F.scaleddot_product_attention support (PyTorch 2.0 only) to `vit,vit_relpos,coatnet/maxxvit` (to start)
  • 新增 Lion 优化器(支持多张量选项)(https://arxiv.org/abs/2302.06675)
  • features_only=True 与梯度检查点兼容

2023 年 2 月 7 日

  • 在 results 文件夹中添加了新的推理基准测试数据。
  • 添加 convnext LAION CLIP 训练权重以及首批 in1k 微调模型
    • convnext_base.clip_laion2b_augreg_ft_in1k - 86.2% @ 256x256
    • convnext_base.clip_laiona_augreg_ft_in1k_384 - 86.5% @ 384x384
    • convnext_large_mlp.clip_laion2b_augreg_ft_in1k - 87.3% @ 256x256
    • convnext_large_mlp.clip_laion2b_augreg_ft_in1k_384 - 87.9% @ 384x384
  • 添加 DaViT 模型。支持 features_only=True。由 Fredo 改编自 https://github.com/dingmyu/davit。
  • 在 MaxViT、ConvNeXt 和 DaViT 中通用的 NormMlpClassifierHead
  • 新增 EfficientFormer-V2 模型,更新 EfficientFormer,并重构 LeViT(密切相关的架构)。权重已托管在 HF hub 上。
    • 新增 EfficientFormer-V2 架构,相较于原始版本(https://github.com/snap-research/EfficientFormer)进行了重大重构。支持 features_only=True。
    • EfficientFormer 的次要更新。
    • 重构 LeViT 模型为 stages,为新的 conv 变体添加 features_only=True 支持,需要重新映射权重。
  • 将 ImageNet 元数据(synsets、indices)从 /results 移动到 timm/data/_info。
  • 在 timm
    • 更新 inference.py 以使用,尝试: python inference.py --data-dir /folder/to/images --model convnext_small.in12k --label-type detail --topk 5
  • 0.8.10 pypi 预发布版本已准备就绪(最终测试)。

2023 年 1 月 20 日

  • 添加两个在 384x384 分辨率下从 12k 到 1k 的 convnext 微调

    • convnext_tiny.in12k_ft_in1k_384 - 85.1 @ 384
    • convnext_small.in12k_ft_in1k_384 - 86.2 @ 384
  • 将所有 MaxxViT 权重推送到 HF hub,并为 rw 基础 MaxViT 和 CoAtNet 1/2 模型添加新的 ImageNet-12k -> 1k 微调

modeltop1top5样本 / 秒参数(M)GMACAct (M)
maxvit_xlarge_tf_512.in21k_ft_in1k88.5398.6421.76475.77534.141413.22
maxvit_xlarge_tf_384.in21k_ft_in1k88.3298.5442.53475.32292.78668.76
maxvit_base_tf_512.in21k_ft_in1k88.2098.5350.87119.88138.02703.99
maxvit_large_tf_512.in21k_ft_in1k88.0498.4036.42212.33244.75942.15
maxvit_large_tf_384.in21k_ft_in1k87.9898.5671.75212.03132.55445.84
maxvit_base_tf_384.in21k_ft_in1k87.9298.54104.71119.6573.80332.90
maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k87.8198.37106.55116.1470.97318.95
maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k87.4798.37149.49116.0972.98213.74
coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k87.3998.31160.8073.8847.69209.43
maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k86.8998.02375.86116.1423.1592.64
maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k86.6498.02501.03116.0924.2062.77
maxvit_base_tf_512.in1k86.6097.9250.75119.88138.02703.99
coatnet_2_rw_224.sw_in12k_ft_in1k86.5797.89631.8873.8715.0949.22
maxvit_large_tf_512.in1k86.5297.8836.04212.33244.75942.15
coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k86.4997.90620.5873.8815.1854.78
maxvit_base_tf_384.in1k86.2997.80101.09119.6573.80332.90
maxvit_large_tf_384.in1k86.2397.6970.56212.03132.55445.84
maxvit_small_tf_512.in1k86.1097.7688.6369.1367.26383.77
maxvit_tiny_tf_512.in1k85.6797.58144.2531.0533.49257.59
maxvit_small_tf_384.in1k85.5497.46188.3569.0235.87183.65
maxvit_tiny_tf_384.in1k85.1197.38293.4630.9817.53123.42
maxvit_large_tf_224.in1k84.9396.97247.71211.7943.68127.35
coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k84.9096.961025.4541.728.1140.13
maxvit_base_tf_224.in1k84.8596.99358.25119.4724.0495.01
maxxvit_rmlp_small_rw_256.sw_in1k84.6397.06575.5366.0114.6758.38
coatnet_rmlp_2_rw_224.sw_in1k84.6196.74625.8173.8815.1854.78
maxvit_rmlp_small_rw_224.sw_in1k84.4996.76693.8264.9010.7549.30
maxvit_small_tf_224.in1k84.4396.83647.9668.9311.6653.17
maxvit_rmlp_tiny_rw_256.sw_in1k84.2396.78807.2129.156.7746.92
coatnet_1_rw_224.sw_in1k83.6296.38989.5941.728.0434.60
maxvit_tiny_rw_224.sw_in1k83.5096.501100.5329.065.1133.11
maxvit_tiny_tf_224.in1k83.4196.591004.9430.925.6035.78
coatnet_rmlp_1_rw_224.sw_in1k83.3696.451093.0341.697.8535.47
maxxvitv2_nano_rw_256.sw_in1k83.1196.331276.8823.706.2623.05
maxxvit_rmlp_nano_rw_256.sw_in1k83.0396.341341.2416.784.3726.05
maxvit_rmlp_nano_rw_256.sw_in1k82.9696.261283.2415.504.4731.92
maxvit_nano_rw_256.sw_in1k82.9396.231218.1715.454.4630.28
coatnet_bn_0_rw_224.sw_in1k82.3996.191600.1427.444.6722.04
coatnet_0_rw_224.sw_in1k82.3995.841831.2127.444.4318.73
coatnet_rmlp_nano_rw_224.sw_in1k82.0595.872109.0915.152.6220.34
coatnext_nano_rw_224.sw_in1k81.9595.922525.5214.702.4712.80
coatnet_nano_rw_224.sw_in1k81.7095.642344.5215.142.4115.41
maxvit_rmlp_pico_rw_256.sw_in1k80.5395.211594.717.521.8524.86

2023 年 1 月 11 日

  • 更新 ConvNeXt ImageNet-12k 预训练系列,新增两组微调权重(以及预微调 .in12k 标签)
    • convnext_nano.in12k_ft_in1k - 82.3 @ 224, 82.9 @ 288(此前已发布)
    • convnext_tiny.in12k_ft_in1k - 84.2 @ 224, 84.5 @ 288
    • convnext_small.in12k_ft_in1k - 85.2 @ 224, 85.3 @ 288

2023 年 1 月 6 日

  • 终于抽空添加了 --model-kwargs 和 --opt-kwargs ,以便在脚本中通过命令行将不常用的参数直接传递给模型类
    • train.py --data-dir /imagenet --model resnet50 --amp --model-kwargs output_stride=16 act_layer=silu
    • train.py --data-dir /imagenet --model vit_base_patch16_clip_224 --img-size 240 --amp --model-kwargs img_size=240 patch_size=12
  • 清理一些热门模型,以更好地支持参数透传 / 与模型配置合并,后续还有更多工作要做。

2023 年 1 月 5 日

2022 年 12 月 23 日 🎄☃

  • 添加来自 https://github.com/google-research/big_vision (的 FlexiViT 模型和权重(论文见 https://arxiv.org/abs/2212.08013)
    • NOTE 目前,调整大小在模型创建时是静态的,动态的 / 训练补丁大小采样正在进行中
  • 更多模型现已更新为多权重格式,并可通过 HF hub 下载(convnext、efficientnet、mobilenet、vision_transformer*、beit)
  • 更多模型预训练标签及调整,部分模型名称已更改(正在处理弃用翻译,目前请考虑主分支 DEV 分支,稳定使用请使用 0.6.x)
  • 更多 ImageNet-12k(22k 子集)预训练模型陆续出现:
    • efficientnet_b5.in12k_ft_in1k - 85.9 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_nano.in12k_ft_in1k - 82.9 @ 288x288

2022 年 12 月 8 日

  • 将 'EVA l' 添加到 vision_transformer.py, MAE 风格的 ViT-L/14 MIM 预训练,使用 EVA-CLIP 目标,在 ImageNet-1k 上进行微调(部分模型在 ImageNet-22k 上进行中间训练)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2链接
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2链接
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5链接
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5链接

2022 年 12 月 6 日

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2链接
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7链接
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7链接
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6链接

2022 年 12 月 5 日

  • 预发布版(0.8.0dev0) 多权重支持(model_arch.pretrained_tag). 使用以下命令安装: pip install --pre timm
    • vision_transformer、maxvit 和 convnext 是首批支持该功能的模型实现
    • 模型名称将随之更改(之前的 _21k 等函数将被合并),目前仍在处理弃用逻辑
    • 可能存在 bug,但我需要反馈,所以请试用一下
    • 如果需要稳定性,请使用 0.6.x pypi 版本或从 0.6.x 分支 克隆
  • 在 train/validate/inference/benchmark 中新增了对 PyTorch 2.0 compile 的支持,请使用 --torchcompile 参数
  • 推理脚本允许对输出进行更精细的控制,选择 k 以获取顶级类别的索引 + 概率,支持 json、csv 或 parquet 输出
  • 添加来自 LAION-2B 和原始 OpenAI CLIP 模型的完整微调 CLIP 图像塔权重
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5链接
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2链接
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4链接
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2链接
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8链接
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8链接
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8链接
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2链接
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4链接
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8链接
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6链接
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6链接
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6链接
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6链接
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9链接
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9链接
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9链接
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9链接
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5链接
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9链接
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5链接
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45链接
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45链接
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45链接
  • 移植来自官方实现 https://github.com/google-research/maxvit
    • 在 384/512 分辨率的 in21k 微调权重上,性能下降幅度超出了预期,可能存在细节缺失,但 21k FT 似乎对微小的预处理操作较为敏感
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2链接
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8链接
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704链接
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2链接
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8链接
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9链接
maxvit_base_tf_512.in1k86.6119.9138704链接
maxvit_large_tf_512.in1k86.5212.3244.8942.2链接
maxvit_base_tf_384.in1k86.3119.673.8332.9链接
maxvit_large_tf_384.in1k86.2212132.6445.8链接
maxvit_small_tf_512.in1k86.169.167.3383.8链接
maxvit_tiny_tf_512.in1k85.73133.5257.6链接
maxvit_small_tf_384.in1k85.56935.9183.6链接
maxvit_tiny_tf_384.in1k85.13117.5123.4链接
maxvit_large_tf_224.in1k84.9211.843.7127.4链接
maxvit_base_tf_224.in1k84.9119.52495链接
maxvit_small_tf_224.in1k84.468.911.753.2链接
maxvit_tiny_tf_224.in1k83.430.95.635.8链接

2022 年 10 月 15 日

  • 训练和验证脚本增强
  • 非 GPU(即 CPU)设备支持
  • 训练脚本的 SLURM 兼容性
  • HF datasets 支持(通过 ReaderHfds)
  • TFDS/WDS 数据加载改进(针对分布式使用场景,修复了与样本数量估计相关的样本填充/循环问题)
  • in_chans !=3 对脚本 / 加载器的支持
  • Adan 优化器
  • 可通过 args 启用逐步学习率调度
  • 数据集的 parsers 已重命名为 readers,以更准确地描述其用途
  • AMP 参数已更改,通过 --amp-impl apex 使用 APEX,通过 --amp-dtype bfloat16 支持 bfloat16
  • 主分支已切换到 0.7.x 版本,0.6x 分支已分叉,用于稳定发布 weight only adds
  • master -> main 分支重命名

2022 年 10 月 10 日

  • 更多权重已加入 maxxvit 系列,包括基于首个 ConvNeXt 块的 coatnext 以及 maxxvit 实验:
    • coatnext_nano_rw_224 - 82.0 @ 224 (G) — (使用 ConvNeXt 卷积块,无 BatchNorm)
    • maxxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.7 @ 320 (G) (使用 ConvNeXt 卷积块,无 BN)
    • maxvit_rmlp_small_rw_224 - 84.5 @ 224, 85.1 @ 320 (G)
    • maxxvit_rmlp_small_rw_256 - 84.6 @ 256, 84.9 @ 288 (G) — 训练效果可能更好,超参数需要调优(使用 ConvNeXt 块,无 BN)
    • coatnet_rmlp_2_rw_224 - 84.6 @ 224, 85 @ 320 (T)
    • NOTE: 官方的 MaxVit 权重(in1k)已在 https://github.com/google-research/maxvit 发布——由于我的实现是独立于他们的实现而创建的,存在一些小的差异,再加上整个 TF same padding 的问题,因此需要进行一些额外的工作来进行移植和适配。

2022 年 9 月 23 日

  • LAION-2B CLIP 图像塔可作为预训练骨干网络,用于微调或特征提取(不含分类器)
    • vit_base_patch32_224_clip_laion2b
    • vit_large_patch14_224_clip_laion2b
    • vit_huge_patch14_224_clip_laion2b
    • vit_giant_patch14_224_clip_laion2b

2022 年 9 月 7 日

  • Hugging Face 的 timm 文档 主页现已上线,未来可在此处查看更多内容
  • 添加来自 https://github.com/microsoft/unilm/tree/master/beit2 的 base 和 large 224x224 模型的 BEiT-v2 权重
  • 新增更多权重 maxxvit 系列,包括一个 pico (7.5M 参数、1.9 GMACs 的)以及两个 tiny 变体:
    • maxvit_rmlp_pico_rw_256 - 80.5 @ 256, 81.3 @ 320 (T)
    • maxvit_tiny_rw_224 - 83.5 @ 224 (G)
    • maxvit_rmlp_tiny_rw_256 - 84.2 @ 256, 84.8 @ 320 (T)

2022 年 8 月 29 日

  • MaxVit 的窗口大小默认随 img_size 缩放。添加新的 RelPosMlp MaxViT 权重,利用这一特性:
    • maxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.6 @ 320 (T)

2022 年 8 月 26 日

  • CoAtNet (https://arxiv.org/abs/2106.04803) 和 MaxVit (https://arxiv.org/abs/2204.01697) timm 原始模型
  • CoAtNet 和 MaxVit 的初始 timm 预训练权重(正在增加更多):
    • coatnet_nano_rw_224 - 81.7 @ 224 (T)
    • coatnet_rmlp_nano_rw_224 - 82.0 @ 224, 82.8 @ 320 (T)
    • coatnet_0_rw_224 - 82.4 (T) — 注意:timm 中的 '0' coatnet 模型在第三阶段多包含 2 个块
    • coatnet_bn_0_rw_224 - 82.4 (T)
    • maxvit_nano_rw_256 - 82.9 @ 256 (T)
    • coatnet_rmlp_1_rw_224 - 83.4 @ 224, 84 @ 320 (T)
    • coatnet_1_rw_224 - 83.6 @ 224 (G)
    • (T) = 使用 bits_and_tpu 分支训练代码在 TPU 上训练,(G) = 在 GPU 上训练
  • GCVit(权重改编自 https://github.com/NVlabs/GCVit,代码为 100% 的 timm 重写,以满足许可要求)
  • MViT-V2(多尺度 ViT,改编自 https://github.com/facebookresearch/mvit)
  • EfficientFormer(改编自 https://github.com/snap-research/EfficientFormer)
  • PyramidVisionTransformer-V2(改编自 https://github.com/whai362/PVT)
  • 针对 LayerNorm 和 GroupNorm 的‘Fast Norm’支持,可在 AMP 下避免 float32 上转换(如果可用,会使用 APEX LN 以进一步提升性能)

2022 年 8 月 15 日

  • 新增 ConvNeXt atto 权重
    • convnext_atto - 75.7 @ 224, 77.0 @ 288
    • convnext_atto_ols - 75.9 @ 224, 77.2 @ 288

2022 年 8 月 5 日

  • 更多带有预训练权重的自定义小型 ConvNeXt 模型定义
    • convnext_femto - 77.5 @ 224, 78.7 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_nano_ols - 80.9 @ 224, 81.6 @ 288
  • 更新了 EdgeNeXt 以改进 ONNX 导出,并添加了新的 base 变体以及来自原始仓库(https://github.com/mmaaz60/EdgeNeXt)的权重

2022 年 7 月 28 日

  • 新增刚出炉的 DeiT-III Medium(width=512, depth=12, num_heads=8)模型权重。感谢 Hugo Touvron!

2022 年 7 月 27 日

  • 所有运行时基准测试和验证结果的 csv 文件现已全部更新到最新!
  • 新增了一些权重和模型定义:
    • darknetaa53 - 79.8 @ 256, 80.5 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* 权重全部在 TPU 上训练,使用 bits_and_tpu 分支。感谢 TRC 计划!
  • 为 ConvNeXt 添加对 output_stride=8 和 16 的支持(膨胀)
  • deit3 模型无法调整 pos_emb 大小的问题已修复
  • Version 0.6.7 PyPi 发布(包含自 0.6.5 以来的上述错误修复和新权重)

2022 年 7 月 8 日

更多模型,更多修复

  • 新增的官方研究模型(含权重):
  • 我自己的模型:
    • 根据要求添加了小型 ResNet 定义,其 basic 和 bottleneck 均包含 1 个重复块(resnet10 和 resnet14)
    • CspNet 已重构,采用 dataclass 配置,并简化了 CrossStage3(cs3)选项。这些定义更接近 YOLO-v5+ 的 backbone 定义。
    • 进一步调整相对位置 ViT。训练了两个srelpos(共享相对位置)模型,以及一个带 class token 的中等规模模型。
    • 为 EdgeNeXt 添加一种替代的下采样模式,并训练一个small模型。该模型优于原始的 small 模型,但不及其新发布的 USI 训练权重。
  • 我自己的模型权重结果(均在 ImageNet-1k 上训练)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • cs3、darknet 和 vit_*relpos 的上述权重均得益于 TRC 计划,在 TPU 上完成训练。其余模型则在过热的 GPU 上训练。
  • Hugging Face Hub 支持修复已验证,演示笔记本待定
  • 预训练权重/配置可以从外部加载(例如从本地磁盘),并支持头部适配。
  • 添加支持,以更改 timm 数据集/读取器扫描的图像扩展名。参见(https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
  • 默认使用的 ConvNeXt LayerNorm 实现 F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2) 通过 LayerNorm2d 在所有情况下。
    • 在某些硬件(例如配备 CL 的 Ampere)上,速度略慢于之前的自定义实现,但在更广泛的硬件和 PyTorch 版本范围内,整体性能回退更少。
    • 之前的实现以 LayerNormExp2d 的形式存在于 models/layers/norm.py 中
  • 大量错误修复
  • 目前正在测试即将发布的 PyPi 0.6.x 版本
  • LeViT 更大模型的预训练仍处于开发中,没有蒸馏的话它们很难训练好/容易训练。是时候(终于)添加蒸馏支持了吗?
  • ImageNet-22k 权重训练 + 微调正在进行中,多权重支持的工作也在(缓慢地)推进(权重数量非常多,唉)……

2022 年 5 月 13 日

  • 从(https://github.com/microsoft/Swin-Transformer)添加了官方的 Swin-V2 模型和权重。已清理以支持 torchscript。
  • 对现有的 timm Swin-V2-CR 实现进行了一些重构,后续可能还会做更多工作,使部分代码更接近官方实现,并决定是否合并某些方面。
  • 更多 Vision Transformer 相对位置 / 残差后归一化实验(得益于 TRC 计划,均在 TPU 上训练)
    • vit_relpos_small_patch16_224 - 81.5 @ 224, 82.5 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_relpos_medium_patch16_rpn_224 - 82.3 @ 224, 83.1 @ 320 — 相对位置编码 + 残差后归一化,无类别标记,平均池化
    • vit_relpos_medium_patch16_224 - 82.5 @ 224, 83.3 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_relpos_base_patch16_gapcls_224 - 82.8 @ 224, 83.9 @ 320 — 相对位置编码、层缩放、类别标记、平均池化(误用)
  • 让 512 维、8 头的“medium”ViT 模型变体重获新生(该变体曾在 2020 年首个 ViT 实现中,用于 DeiT 之前的“small”模型)
  • 为 ViT 添加相对位置支持,以便在现有实现与官方 Swin-V2 实现中的部分新增内容之间进行切换,用于后续试验
  • Sequencer2D 实现(https://arxiv.org/abs/2205.01972),由作者通过 PR 添加(https://github.com/okojoalg)

2022 年 5 月 2 日

  • 添加相对位置(Swin-V2 log-coord)的 Vision Transformer 实验(vision_transformer_relpos.py) )以及残差后归一化分支(来自 Swin-V2)(vision_transformer*.py)
    • vit_relpos_base_patch32_plus_rpn_256 - 79.5 @ 256, 80.6 @ 320 — 相对位置 + 扩展宽度 + 残差后归一化,无类别标记,平均池化
    • vit_relpos_base_patch16_224 - 82.5 @ 224, 83.6 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_base_patch16_rpn_224 - 82.3 @ 224 — 相对位置编码 + 残差后归一化,无类别标记,平均池化
  • 重构 Vision Transformer,移除仅在初始 vit 中使用、而在较新的预训练(例如 How to Train Your ViT)中很少使用的表示层
  • vit_* 模型支持移除类别标记、使用全局平均池化以及使用 fc_norm(类似于 beit、mae)。

2022 年 4 月 22 日

  • timm 模型现已在 fast.ai 中获得官方支持!恰逢新版 Practical Deep Learning 课程上线。timmdocs 文档链接已更新为 timm.fast.ai。
  • TPU 训练系列中又新增了两个模型权重 系列. 部分 In22k 预训练仍在进行中。
    • seresnext101d_32x8d - 83.69 @ 224, 84.35 @ 288
    • seresnextaa101d_32x8d(使用 AvgPool2d 进行抗锯齿处理)- 224 分辨率下 83.85,288 分辨率下 84.57

2022 年 3 月 23 日

  • 在基础 ViT 模型中添加 ParallelBlock 和 LayerScale 选项,以支持 关于 ViT 的三件每个人都应该知道的事 中的模型配置
  • convnext_tiny_hnf(先进行头部归一化)的权重,使用(接近)A2 配方训练,top-1 准确率为 82.2%,增加训练轮次后表现可能更好。

2022 年 3 月 21 日

  • 合并 norm_norm_norm。重要 此更新将用于即将发布的 0.6.x 版本,可能会在一段时间内导致 master 分支不稳定。如果需要稳定性,可以使用 0.5.x 分支或之前的 0.5.x 版本。
  • 如本 版本说明
    • regnety_040 - 82.3 @ 224, 82.96 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_040 - 82.44 @ 224, 83.18 @ 288 (timm pre-act)
    • regnetv_064 - 83.1 @ 224, 83.71 @ 288 (timm pre-act)
    • regnetz_040 - 83.67 @ 256, 84.25 @ 320
    • regnetz_040h - 83.77 @ 256, 84.5 @ 320(头部额外增加 fc)
    • resnetv2_50d_gn - 80.8 @ 224, 81.96 @ 288(pre-act GroupNorm)
    • resnetv2_50d_evos 80.77 @ 224,82.04 @ 288(pre-act EvoNormS)
    • regnetz_c16_evos - 81.9 @ 256, 82.64 @ 320 (EvoNormS)
    • regnetz_d8_evos - 83.42 @ 256, 84.04 @ 320 (EvoNormS)
    • xception41p - 82 @ 299 (timm pre-act)
    • xception65 - 83.17 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 83.85 @ 256, 84.44 @ 320
  • 修复了 HuggingFace hub 支持,并为允许预训练模型定义和权重使用替代“配置来源”奠定了初步基础(即将支持通用本地文件/远程 URL)
  • 已添加 SwinTransformer-V2 实现。由 Christoph Reich 提交。我正在进行训练实验和模型修改,因此可能会出现兼容性中断。
  • 从 https://github.com/microsoft/Cream/tree/main/AutoFormerV2 添加了 Swin-S3 (AutoFormerV2) 模型 / 权重
  • 权重改编自 https://github.com/apple/ml-cvnets 的 MobileViT 模型
  • 权重改编自 https://github.com/sail-sg/poolformer 的 PoolFormer 模型
  • 权重改编自 https://github.com/sail-sg/volo 的 VOLO 模型
  • 大量实验工作,尝试使用非 BatchNorm 的归一化层,例如 EvoNorm、FilterResponseNorm、GroupNorm 等
  • 增强对添加到多个模型中的替代 norm + act(‘NormAct’)层的支持,尤其是 EfficientNet/MobileNetV3、RegNet 和 aligned Xception
  • EfficientNet 系列新增了对分组卷积的支持
  • 为所有模型添加‘group matching’ API,以便对模型参数进行分组,从而应用‘layer-wise’ LR 衰减,并在 LR 调度器中添加 lr 缩放
  • 许多模型新增了对梯度检查点的支持
  • forward_head(x, pre_logits=False) 添加到所有模型中的函数,允许分别调用 forward_features + forward_head
  • 所有视觉 Transformer 和视觉 MLP 模型均已更新,使其从 forward_features 返回未经池化/未经 token 选择的特征,以与 CNN 模型保持一致;token 选择或池化操作现在在 forward_head 中应用。

2022 年 2 月 2 日

  • Chris Hughes 昨天在他的博客上发表了一篇关于 timm 的全面实践指南,非常值得一读。PyTorch 图像模型(timm)入门:从业者指南
  • 我目前正在准备将 norm_norm_norm 分支合并回 master(0.6.x 版本),预计在下周左右完成。
    • 这些改动比平时更广泛,可能会使某些模型 API 的使用变得不稳定甚至中断(目标是实现完全向后兼容)。因此,请注意 pip install git+https://github.com/rwightman/pytorch-image-models 安装!
    • 0.5.x 版本以及 0.5.x 分支将保持稳定,直到尘埃落定,期间可能会进行一两次 cherry-pick。如果您希望获得稳定版本,建议暂时通过 pypi 进行安装。

2022 年 1 月 14 日

  • 版本 0.5.4 即将发布并推送到 pypi。距离上次 pypi 更新已有一段时间,且风险较高的更改很快将合并到 main 分支……
  • 添加来自官方实现(https://github.com/facebookresearch/ConvNeXt)的带权重的 ConvNeXT 模型,进行了一些性能优化,并兼容 timm 的功能
  • 尝试训练了几个小型(约 180 万至 300 万参数)/ 针对移动端优化的模型,目前有几个表现不错,还有更多模型正在开发中……
    • mnasnet_small - 65.6 top-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • 由 rsomani95 添加的 TinyNet 模型
  • 通过 MobileNetV3 架构添加的 LCNet

2023 年 1 月 5 日

2022 年 12 月 23 日 🎄☃

  • 添加来自 https://github.com/google-research/big_vision (的 FlexiViT 模型和权重(论文见 https://arxiv.org/abs/2212.08013)
    • NOTE 目前,调整大小在模型创建时是静态的,动态的 / 训练补丁大小采样正在进行中
  • 更多模型现已更新为多权重格式,并可通过 HF hub 下载(convnext、efficientnet、mobilenet、vision_transformer*、beit)
  • 更多模型预训练标签及调整,部分模型名称已更改(正在处理弃用翻译,目前请考虑主分支 DEV 分支,稳定使用请使用 0.6.x)
  • 更多 ImageNet-12k(22k 子集)预训练模型陆续出现:
    • efficientnet_b5.in12k_ft_in1k - 85.9 @ 448x448
    • vit_medium_patch16_gap_384.in12k_ft_in1k - 85.5 @ 384x384
    • vit_medium_patch16_gap_256.in12k_ft_in1k - 84.5 @ 256x256
    • convnext_nano.in12k_ft_in1k - 82.9 @ 288x288

2022 年 12 月 8 日

  • 将 'EVA l' 添加到 vision_transformer.py, MAE 风格的 ViT-L/14 MIM 预训练,使用 EVA-CLIP 目标,在 ImageNet-1k 上进行微调(部分模型在 ImageNet-22k 上进行中间训练)
modeltop1param_countgmacmactshub
eva_large_patch14_336.in22k_ft_in22k_in1k89.2304.5191.1270.2链接
eva_large_patch14_336.in22k_ft_in1k88.7304.5191.1270.2链接
eva_large_patch14_196.in22k_ft_in22k_in1k88.6304.161.663.5链接
eva_large_patch14_196.in22k_ft_in1k87.9304.161.663.5链接

2022 年 12 月 6 日

modeltop1param_countgmacmactshub
eva_giant_patch14_560.m30m_ft_in22k_in1k89.81014.41906.82577.2链接
eva_giant_patch14_336.m30m_ft_in22k_in1k89.61013620.6550.7链接
eva_giant_patch14_336.clip_ft_in1k89.41013620.6550.7链接
eva_giant_patch14_224.clip_ft_in1k89.11012.6267.2192.6链接

2022 年 12 月 5 日

  • 预发布版(0.8.0dev0) 多权重支持(model_arch.pretrained_tag). 使用以下命令安装: pip install --pre timm
    • vision_transformer、maxvit 和 convnext 是首批支持该功能的模型实现
    • 模型名称将随之更改(之前的 _21k 等函数将被合并),目前仍在处理弃用逻辑
    • 可能存在 bug,但我需要反馈,所以请试用一下
    • 如果需要稳定性,请使用 0.6.x pypi 版本或从 0.6.x 分支 克隆
  • 在 train/validate/inference/benchmark 中新增了对 PyTorch 2.0 compile 的支持,请使用 --torchcompile 参数
  • 推理脚本允许对输出进行更精细的控制,选择 k 以获取顶级类别的索引 + 概率,支持 json、csv 或 parquet 输出
  • 添加来自 LAION-2B 和原始 OpenAI CLIP 模型的完整微调 CLIP 图像塔权重
modeltop1param_countgmacmactshub
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k88.6632.5391407.5链接
vit_large_patch14_clip_336.openai_ft_in12k_in1k88.3304.5191.1270.2链接
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k88.2632167.4139.4链接
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k88.2304.5191.1270.2链接
vit_large_patch14_clip_224.openai_ft_in12k_in1k88.2304.281.188.8链接
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k87.9304.281.188.8链接
vit_large_patch14_clip_224.openai_ft_in1k87.9304.281.188.8链接
vit_large_patch14_clip_336.laion2b_ft_in1k87.9304.5191.1270.2链接
vit_huge_patch14_clip_224.laion2b_ft_in1k87.6632167.4139.4链接
vit_large_patch14_clip_224.laion2b_ft_in1k87.3304.281.188.8链接
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k87.286.955.5101.6链接
vit_base_patch16_clip_384.openai_ft_in12k_in1k8786.955.5101.6链接
vit_base_patch16_clip_384.laion2b_ft_in1k86.686.955.5101.6链接
vit_base_patch16_clip_384.openai_ft_in1k86.286.955.5101.6链接
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k86.286.617.623.9链接
vit_base_patch16_clip_224.openai_ft_in12k_in1k85.986.617.623.9链接
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k85.888.317.923.9链接
vit_base_patch16_clip_224.laion2b_ft_in1k85.586.617.623.9链接
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k85.488.313.116.5链接
vit_base_patch16_clip_224.openai_ft_in1k85.386.617.623.9链接
vit_base_patch32_clip_384.openai_ft_in12k_in1k85.288.313.116.5链接
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k83.388.24.45链接
vit_base_patch32_clip_224.laion2b_ft_in1k82.688.24.45链接
vit_base_patch32_clip_224.openai_ft_in1k81.988.24.45链接
  • 移植来自官方实现 https://github.com/google-research/maxvit
    • 在 384/512 分辨率的 in21k 微调权重上,性能下降幅度超出了预期,可能存在细节缺失,但 21k FT 似乎对微小的预处理操作较为敏感
modeltop1param_countgmacmactshub
maxvit_xlarge_tf_512.in21k_ft_in1k88.5475.8534.11413.2链接
maxvit_xlarge_tf_384.in21k_ft_in1k88.3475.3292.8668.8链接
maxvit_base_tf_512.in21k_ft_in1k88.2119.9138704链接
maxvit_large_tf_512.in21k_ft_in1k88212.3244.8942.2链接
maxvit_large_tf_384.in21k_ft_in1k88212132.6445.8链接
maxvit_base_tf_384.in21k_ft_in1k87.9119.673.8332.9链接
maxvit_base_tf_512.in1k86.6119.9138704链接
maxvit_large_tf_512.in1k86.5212.3244.8942.2链接
maxvit_base_tf_384.in1k86.3119.673.8332.9链接
maxvit_large_tf_384.in1k86.2212132.6445.8链接
maxvit_small_tf_512.in1k86.169.167.3383.8链接
maxvit_tiny_tf_512.in1k85.73133.5257.6链接
maxvit_small_tf_384.in1k85.56935.9183.6链接
maxvit_tiny_tf_384.in1k85.13117.5123.4链接
maxvit_large_tf_224.in1k84.9211.843.7127.4链接
maxvit_base_tf_224.in1k84.9119.52495链接
maxvit_small_tf_224.in1k84.468.911.753.2链接
maxvit_tiny_tf_224.in1k83.430.95.635.8链接

2022 年 10 月 15 日

  • 训练和验证脚本增强
  • 非 GPU(即 CPU)设备支持
  • 训练脚本的 SLURM 兼容性
  • HF datasets 支持(通过 ReaderHfds)
  • TFDS/WDS 数据加载改进(针对分布式使用场景,修复了与样本数量估计相关的样本填充/循环问题)
  • in_chans !=3 对脚本 / 加载器的支持
  • Adan 优化器
  • 可通过 args 启用逐步学习率调度
  • 数据集的 parsers 已重命名为 readers,以更准确地描述其用途
  • AMP 参数已更改,通过 --amp-impl apex 使用 APEX,通过 --amp-dtype bfloat16 支持 bfloat16
  • 主分支已切换到 0.7.x 版本,0.6x 分支已分叉,用于稳定发布 weight only adds
  • master -> main 分支重命名

2022 年 10 月 10 日

  • 更多权重已加入 maxxvit 系列,包括基于首个 ConvNeXt 块的 coatnext 以及 maxxvit 实验:
    • coatnext_nano_rw_224 - 82.0 @ 224 (G) — (使用 ConvNeXt 卷积块,无 BatchNorm)
    • maxxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.7 @ 320 (G) (使用 ConvNeXt 卷积块,无 BN)
    • maxvit_rmlp_small_rw_224 - 84.5 @ 224, 85.1 @ 320 (G)
    • maxxvit_rmlp_small_rw_256 - 84.6 @ 256, 84.9 @ 288 (G) — 训练效果可能更好,超参数需要调优(使用 ConvNeXt 块,无 BN)
    • coatnet_rmlp_2_rw_224 - 84.6 @ 224, 85 @ 320 (T)
    • NOTE: 官方的 MaxVit 权重(in1k)已在 https://github.com/google-research/maxvit 发布——由于我的实现是独立于他们的实现而创建的,存在一些小的差异,再加上整个 TF same padding 的问题,因此需要进行一些额外的工作来进行移植和适配。

2022 年 9 月 23 日

  • LAION-2B CLIP 图像塔可作为预训练骨干网络,用于微调或特征提取(不含分类器)
    • vit_base_patch32_224_clip_laion2b
    • vit_large_patch14_224_clip_laion2b
    • vit_huge_patch14_224_clip_laion2b
    • vit_giant_patch14_224_clip_laion2b

2022 年 9 月 7 日

  • Hugging Face 的 timm 文档 主页现已上线,未来可在此处查看更多内容
  • 添加来自 https://github.com/microsoft/unilm/tree/master/beit2 的 base 和 large 224x224 模型的 BEiT-v2 权重
  • 新增更多权重 maxxvit 系列,包括一个 pico (7.5M 参数、1.9 GMACs 的)以及两个 tiny 变体:
    • maxvit_rmlp_pico_rw_256 - 80.5 @ 256, 81.3 @ 320 (T)
    • maxvit_tiny_rw_224 - 83.5 @ 224 (G)
    • maxvit_rmlp_tiny_rw_256 - 84.2 @ 256, 84.8 @ 320 (T)

2022 年 8 月 29 日

  • MaxVit 的窗口大小默认随 img_size 缩放。添加新的 RelPosMlp MaxViT 权重,利用这一特性:
    • maxvit_rmlp_nano_rw_256 - 83.0 @ 256, 83.6 @ 320 (T)

2022 年 8 月 26 日

  • CoAtNet (https://arxiv.org/abs/2106.04803) 和 MaxVit (https://arxiv.org/abs/2204.01697) timm 原始模型
  • CoAtNet 和 MaxVit 的初始 timm 预训练权重(正在增加更多):
    • coatnet_nano_rw_224 - 81.7 @ 224 (T)
    • coatnet_rmlp_nano_rw_224 - 82.0 @ 224, 82.8 @ 320 (T)
    • coatnet_0_rw_224 - 82.4 (T) — 注意:timm 中的 '0' coatnet 模型在第三阶段多包含 2 个块
    • coatnet_bn_0_rw_224 - 82.4 (T)
    • maxvit_nano_rw_256 - 82.9 @ 256 (T)
    • coatnet_rmlp_1_rw_224 - 83.4 @ 224, 84 @ 320 (T)
    • coatnet_1_rw_224 - 83.6 @ 224 (G)
    • (T) = 使用 bits_and_tpu 分支训练代码在 TPU 上训练,(G) = 在 GPU 上训练
  • GCVit(权重改编自 https://github.com/NVlabs/GCVit,代码为 100% 的 timm 重写,以满足许可要求)
  • MViT-V2(多尺度 ViT,改编自 https://github.com/facebookresearch/mvit)
  • EfficientFormer(改编自 https://github.com/snap-research/EfficientFormer)
  • PyramidVisionTransformer-V2(改编自 https://github.com/whai362/PVT)
  • 针对 LayerNorm 和 GroupNorm 的‘Fast Norm’支持,可在 AMP 下避免 float32 上转换(如果可用,会使用 APEX LN 以进一步提升性能)

2022 年 8 月 15 日

  • 新增 ConvNeXt atto 权重
    • convnext_atto - 75.7 @ 224, 77.0 @ 288
    • convnext_atto_ols - 75.9 @ 224, 77.2 @ 288

2022 年 8 月 5 日

  • 更多带有预训练权重的自定义小型 ConvNeXt 模型定义
    • convnext_femto - 77.5 @ 224, 78.7 @ 288
    • convnext_femto_ols - 77.9 @ 224, 78.9 @ 288
    • convnext_pico - 79.5 @ 224, 80.4 @ 288
    • convnext_pico_ols - 79.5 @ 224, 80.5 @ 288
    • convnext_nano_ols - 80.9 @ 224, 81.6 @ 288
  • 更新了 EdgeNeXt 以改进 ONNX 导出,并添加了新的 base 变体以及来自原始仓库(https://github.com/mmaaz60/EdgeNeXt)的权重

2022 年 7 月 28 日

  • 新增刚出炉的 DeiT-III Medium(width=512, depth=12, num_heads=8)模型权重。感谢 Hugo Touvron!

2022 年 7 月 27 日

  • 所有运行时基准测试和验证结果的 csv 文件均已更新!
  • 新增了一些权重和模型定义:
    • darknetaa53 - 79.8 @ 256, 80.5 @ 288
    • convnext_nano - 80.8 @ 224, 81.5 @ 288
    • cs3sedarknet_l - 81.2 @ 256, 81.8 @ 288
    • cs3darknet_x - 81.8 @ 256, 82.2 @ 288
    • cs3sedarknet_x - 82.2 @ 256, 82.7 @ 288
    • cs3edgenet_x - 82.2 @ 256, 82.7 @ 288
    • cs3se_edgenet_x - 82.8 @ 256, 83.5 @ 320
  • cs3* 权重全部在 TPU 上训练,使用 bits_and_tpu 分支。感谢 TRC 计划!
  • 为 ConvNeXt 添加对 output_stride=8 和 16 的支持(膨胀)
  • deit3 模型无法调整 pos_emb 大小的问题已修复
  • Version 0.6.7 PyPi 发布(包含自 0.6.5 以来的上述错误修复和新权重)

2022 年 7 月 8 日

更多模型,更多修复

  • 新增的官方研究模型(含权重):
  • 我自己的模型:
    • 根据要求添加了小型 ResNet 定义,其 basic 和 bottleneck 均包含 1 个重复块(resnet10 和 resnet14)
    • CspNet 已重构,采用 dataclass 配置,并简化了 CrossStage3(cs3)选项。这些定义更接近 YOLO-v5+ 的 backbone 定义。
    • 进一步调整相对位置 ViT。训练了两个srelpos(共享相对位置)模型,以及一个带 class token 的中等规模模型。
    • 为 EdgeNeXt 添加一种替代的下采样模式,并训练一个small模型。该模型优于原始的 small 模型,但不及其新发布的 USI 训练权重。
  • 我自己的模型权重结果(均在 ImageNet-1k 上训练)
    • resnet10t - 66.5 @ 176, 68.3 @ 224
    • resnet14t - 71.3 @ 176, 72.3 @ 224
    • resnetaa50 - 80.6 @ 224 , 81.6 @ 288
    • darknet53 - 80.0 @ 256, 80.5 @ 288
    • cs3darknet_m - 77.0 @ 256, 77.6 @ 288
    • cs3darknet_focus_m - 76.7 @ 256, 77.3 @ 288
    • cs3darknet_l - 80.4 @ 256, 80.9 @ 288
    • cs3darknet_focus_l - 80.3 @ 256, 80.9 @ 288
    • vit_srelpos_small_patch16_224 - 81.1 @ 224, 82.1 @ 320
    • vit_srelpos_medium_patch16_224 - 82.3 @ 224, 83.1 @ 320
    • vit_relpos_small_patch16_cls_224 - 82.6 @ 224, 83.6 @ 320
    • edgnext_small_rw - 79.6 @ 224, 80.4 @ 320
  • cs3、darknet 和 vit_*relpos 的上述权重均得益于 TRC 计划,在 TPU 上完成训练。其余模型则在过热的 GPU 上训练。
  • Hugging Face Hub 支持修复已验证,演示笔记本待定
  • 预训练权重/配置可以从外部加载(例如从本地磁盘),并支持头部适配。
  • 添加支持,以更改 timm 数据集/解析器扫描的图像扩展名。参见(https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103)
  • 默认使用的 ConvNeXt LayerNorm 实现 F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2) 通过 LayerNorm2d 在所有情况下。
    • 在某些硬件(例如配备 CL 的 Ampere)上,速度略慢于之前的自定义实现,但在更广泛的硬件和 PyTorch 版本范围内,整体性能回退更少。
    • 之前的实现以 LayerNormExp2d 的形式存在于 models/layers/norm.py 中
  • 大量错误修复
  • 目前正在测试即将发布的 PyPi 0.6.x 版本
  • LeViT 更大模型的预训练仍处于开发中,没有蒸馏的话它们很难训练好/容易训练。是时候(终于)添加蒸馏支持了吗?
  • ImageNet-22k 权重训练 + 微调正在进行中,多权重支持的工作也在(缓慢地)推进(权重数量非常多,唉)……

2022 年 5 月 13 日

  • 从(https://github.com/microsoft/Swin-Transformer)添加了官方的 Swin-V2 模型和权重。已清理以支持 torchscript。
  • 对现有的 timm Swin-V2-CR 实现进行了一些重构,后续可能还会做更多工作,使部分代码更接近官方实现,并决定是否合并某些方面。
  • 更多 Vision Transformer 相对位置 / 残差后归一化实验(得益于 TRC 计划,均在 TPU 上训练)
    • vit_relpos_small_patch16_224 - 81.5 @ 224, 82.5 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_relpos_medium_patch16_rpn_224 - 82.3 @ 224, 83.1 @ 320 — 相对位置编码 + 残差后归一化,无类别标记,平均池化
    • vit_relpos_medium_patch16_224 - 82.5 @ 224, 83.3 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_relpos_base_patch16_gapcls_224 - 82.8 @ 224, 83.9 @ 320 — 相对位置编码、层缩放、类别标记、平均池化(误用)
  • 让 512 维、8 头的“medium”ViT 模型变体重获新生(该变体曾在 2020 年首个 ViT 实现中,用于 DeiT 之前的“small”模型)
  • 为 ViT 添加相对位置支持,以便在现有实现与官方 Swin-V2 实现中的部分新增内容之间进行切换,用于后续试验
  • Sequencer2D 实现(https://arxiv.org/abs/2205.01972),由作者通过 PR 添加(https://github.com/okojoalg)

2022 年 5 月 2 日

  • 添加相对位置(Swin-V2 log-coord)的 Vision Transformer 实验(vision_transformer_relpos.py) )以及残差后归一化分支(来自 Swin-V2)(vision_transformer*.py)
    • vit_relpos_base_patch32_plus_rpn_256 - 79.5 @ 256, 80.6 @ 320 — 相对位置 + 扩展宽度 + 残差后归一化,无类别标记,平均池化
    • vit_relpos_base_patch16_224 - 82.5 @ 224, 83.6 @ 320 — 相对位置编码,层缩放,无类别标记,平均池化
    • vit_base_patch16_rpn_224 - 82.3 @ 224 — 相对位置编码 + 残差后归一化,无类别标记,平均池化
  • 重构 Vision Transformer,移除仅在初始 vit 中使用、而在较新的预训练(例如 How to Train Your ViT)中很少使用的表示层
  • vit_* 模型支持移除类别标记、使用全局平均池化以及使用 fc_norm(类似于 beit、mae)。

2022 年 4 月 22 日

  • timm 模型现已在 fast.ai 中获得官方支持!恰逢新版 Practical Deep Learning 课程上线。timmdocs 文档链接已更新为 timm.fast.ai。
  • TPU 训练系列中又新增了两个模型权重 系列. 部分 In22k 预训练仍在进行中。
    • seresnext101d_32x8d - 83.69 @ 224, 84.35 @ 288
    • seresnextaa101d_32x8d(使用 AvgPool2d 进行抗锯齿处理)- 224 分辨率下 83.85,288 分辨率下 84.57

2022 年 3 月 23 日

  • 在基础 ViT 模型中添加 ParallelBlock 和 LayerScale 选项,以支持 关于 ViT 的三件每个人都应该知道的事 中的模型配置
  • convnext_tiny_hnf(先进行头部归一化)的权重,使用(接近)A2 配方训练,top-1 准确率为 82.2%,增加训练轮次后表现可能更好。

2022 年 3 月 21 日

  • 合并 norm_norm_norm。重要 此更新将用于即将发布的 0.6.x 版本,可能会在一段时间内导致 master 分支不稳定。如果需要稳定性,可以使用 0.5.x 分支或之前的 0.5.x 版本。
  • 如本 版本说明
    • regnety_040 - 82.3 @ 224, 82.96 @ 288
    • regnety_064 - 83.0 @ 224, 83.65 @ 288
    • regnety_080 - 83.17 @ 224, 83.86 @ 288
    • regnetv_040 - 82.44 @ 224, 83.18 @ 288 (timm pre-act)
    • regnetv_064 - 83.1 @ 224, 83.71 @ 288 (timm pre-act)
    • regnetz_040 - 83.67 @ 256, 84.25 @ 320
    • regnetz_040h - 83.77 @ 256, 84.5 @ 320(头部额外增加 fc)
    • resnetv2_50d_gn - 80.8 @ 224, 81.96 @ 288(pre-act GroupNorm)
    • resnetv2_50d_evos 80.77 @ 224,82.04 @ 288(pre-act EvoNormS)
    • regnetz_c16_evos - 81.9 @ 256, 82.64 @ 320 (EvoNormS)
    • regnetz_d8_evos - 83.42 @ 256, 84.04 @ 320 (EvoNormS)
    • xception41p - 82 @ 299 (timm pre-act)
    • xception65 - 83.17 @ 299
    • xception65p - 83.14 @ 299 (timm pre-act)
    • resnext101_64x4d - 82.46 @ 224, 83.16 @ 288
    • seresnext101_32x8d - 83.57 @ 224, 84.270 @ 288
    • resnetrs200 - 83.85 @ 256, 84.44 @ 320
  • 修复了 HuggingFace hub 支持,并为允许预训练模型定义和权重使用替代“配置来源”奠定了初步基础(即将支持通用本地文件/远程 URL)
  • 已添加 SwinTransformer-V2 实现。由 Christoph Reich 提交。我正在进行训练实验和模型修改,因此可能会出现兼容性中断。
  • 从 https://github.com/microsoft/Cream/tree/main/AutoFormerV2 添加了 Swin-S3 (AutoFormerV2) 模型 / 权重
  • 权重改编自 https://github.com/apple/ml-cvnets 的 MobileViT 模型
  • 权重改编自 https://github.com/sail-sg/poolformer 的 PoolFormer 模型
  • 权重改编自 https://github.com/sail-sg/volo 的 VOLO 模型
  • 大量实验工作,尝试使用非 BatchNorm 的归一化层,例如 EvoNorm、FilterResponseNorm、GroupNorm 等
  • 增强对添加到多个模型中的替代 norm + act(‘NormAct’)层的支持,尤其是 EfficientNet/MobileNetV3、RegNet 和 aligned Xception
  • EfficientNet 系列新增了对分组卷积的支持
  • 为所有模型添加‘group matching’ API,以便对模型参数进行分组,从而应用‘layer-wise’ LR 衰减,并在 LR 调度器中添加 lr 缩放
  • 许多模型新增了对梯度检查点的支持
  • forward_head(x, pre_logits=False) 添加到所有模型中的函数,允许分别调用 forward_features + forward_head
  • 所有视觉 Transformer 和视觉 MLP 模型均已更新,使其从 forward_features 返回未经池化/未经 token 选择的特征,以与 CNN 模型保持一致;token 选择或池化操作现在在 forward_head 中应用。

2022 年 2 月 2 日

  • Chris Hughes 昨天在他的博客上发表了一篇关于 timm 的全面实践指南,非常值得一读。PyTorch 图像模型(timm)入门:从业者指南
  • 我目前正在准备将 norm_norm_norm 分支合并回 master(0.6.x 版本),预计在下周左右完成。
    • 这些改动比平时更广泛,可能会使某些模型 API 的使用变得不稳定甚至中断(目标是实现完全向后兼容)。因此,请注意 pip install git+https://github.com/rwightman/pytorch-image-models 安装!
    • 0.5.x 版本以及 0.5.x 分支将保持稳定,直到尘埃落定,期间可能会进行一两次 cherry-pick。如果您希望获得稳定版本,建议暂时通过 pypi 进行安装。

2022 年 1 月 14 日

  • 版本 0.5.4 即将发布并推送到 pypi。距离上次 pypi 更新已有一段时间,且风险较高的更改很快将合并到 main 分支……
  • 添加来自官方实现(https://github.com/facebookresearch/ConvNeXt)的带权重的 ConvNeXT 模型,进行了一些性能优化,并兼容 timm 的功能
  • 尝试训练了几个小型(约 180 万至 300 万参数)/ 针对移动端优化的模型,目前有几个表现不错,还有更多模型正在开发中……
    • mnasnet_small - 65.6 top-1
    • mobilenetv2_050 - 65.9
    • lcnet_100/075/050 - 72.1 / 68.8 / 63.1
    • semnasnet_075 - 73
    • fbnetv3_b/d/g - 79.1 / 79.7 / 82.0
  • 由 rsomani95 添加的 TinyNet 模型
  • 通过 MobileNetV3 架构添加的 LCNet
Update on GitHub