timm 文档
更新日志
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
更新日志
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-1vit_so150m_patch16_reg4_gap_384.sbb_e250_in12k_ft_in1k
- 87.4% top-1vit_so150m_patch16_reg4_gap_256.sbb_e250_in12k
- 其他类型、拼写错误等清理
- 发布 1.0.14 版本以推出上述 LeViT 修复
2025 年 1 月 9 日
- 增加在纯
bfloat16
或float16
模式下进行训练和验证的支持 - 由 https://github.com/caojiaolong 添加了 `wandb` 项目名称参数,使用 arg.experiment 作为名称
- 修复了在不支持硬链接的文件系统(例如 FUSE fs 挂载)上检查点保存不工作的旧问题
- 发布 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 向现有 PaliGemma 添加 PaliGemma2 编码器,请在 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:
的加载方式兼容,从而能与新的 TransformersTimmWrapperModel
配合使用
2024 年 11 月 28 日
- 更多优化器
- 添加 MARS 优化器(https://arxiv.org/abs/2411.10438, https://github.com/AGI-Arena/MARS)
- 添加 LaProp 优化器(https://arxiv.org/abs/2002.04839, https://github.com/Z-T-WANG/LaProp-Optimizer)
- 将来自“Cautious Optimizers” (https://arxiv.org/abs/2411.16085, https://github.com/kyleliang919/C-Optim) 的掩码功能添加到 Adafactor、Adafactor Big Vision、AdamW (legacy)、Adopt、Lamb、LaProp、Lion、NadamW、RMSPropTF、SGDW 中
- 清理一些关于优化器和工厂的文档字符串和类型注释
- 添加在 in12k 上预训练并在 in1k @ 384x384 上微调的 MobileNet-V4 Conv Medium 模型
- 添加小型 cs3darknet,速度相当不错
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) 优化器
- 添加“Big Vision”版本的 Adafactor(https://github.com/google-research/big_vision/blob/main/big_vision/optax.py)优化器
- 修复原始 Adafactor 以选择更好的卷积分解维度
- 调整 LAMB 优化器,自原始版本以来在 torch.where 功能方面有所改进,并对裁剪进行了一些重构
- 改进了 vit、deit、eva 中的动态图像尺寸支持,以支持从非方形补丁网格调整大小,感谢 https://github.com/wojtke
2024 年 10 月 31 日
添加了一组经过良好训练的全新 ResNet 和 ResNet-V2 18/34(基础块)权重。请参阅 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 模型的预激活(ResNetV2)版本(权重待定)
- 发布 1.0.10
2024 年 10 月 11 日
- 添加了 MambaOut(https://github.com/yuweihao/MambaOut)模型和权重。这是对 SSM 视觉模型的一种巧妙改造,但没有 SSM(本质上是带有门控的 ConvNeXt)。混合了原始权重和自定义变体及权重。
- SigLIP SO400M ViT 在 ImageNet-1k 上以 378x378 进行微调,为现有的 SigLIP 384x384 模型增加了 378x378 选项
- vit_so400m_patch14_siglip_378.webli_ft_in1k - 89.42 top-1
- vit_so400m_patch14_siglip_gap_378.webli_ft_in1k - 89.03
- 来自最近的多语言(i18n)变体的 SigLIP SO400M ViT 编码器,patch16 @ 256x256(https://huggingface.co/timm/ViT-SO400M-16-SigLIP-i18n-256)。OpenCLIP 更新待定。
- 添加了两个 ConvNeXt ‘Zepto’ 模型和权重(一个带有重叠主干,一个带有补丁主干)。使用 RMSNorm,比之前的 ‘Atto’ 更小,参数为 2.2M。
- convnext_zepto_rms_ols.ra4_e3600_r224_in1k - 在 224x224 分辨率下 top-1 准确率为 73.20
- convnext_zepto_rms.ra4_e3600_r224_in1k - 72.81 @ 224
2024 年 9 月
- 为改进单元测试和特定低资源应用,添加了一套微型测试模型 (https://huggingface.co/blog/rwightman/timm-tiny-test)
- 添加 MobileNetV4-Conv-Small (0.5x) 模型 (https://huggingface.co/posts/rwightman/793053396198664)
- mobilenetv4_conv_small_050.e3000_r224_in1k - 在 256x256 分辨率下 top-1 准确率 65.81,在 224x224 分辨率下 64.76
- 添加使用 MNV4 Small 配方训练的 MobileNetV3-Large 变体
- mobilenetv3_large_150d.ra4_e3600_r256_in1k - 81.81 @ 320, 80.94 @ 256
- mobilenetv3_large_100.ra4_e3600_r224_in1k - 77.16 @ 256, 76.31 @ 224
2024 年 8 月 21 日
- 更新了在 ImageNet-12k 上训练并在 ImageNet-1k 上微调的 SBB ViT 模型,挑战了许多更大、更慢的模型
模型 | top1 | top5 | 参数数量 | 图像尺寸 |
---|---|---|---|---|
vit_mediumd_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 87.438 | 98.256 | 64.11 | 384 |
vit_mediumd_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 86.608 | 97.934 | 64.11 | 256 |
vit_betwixt_patch16_reg4_gap_384.sbb2_e200_in12k_ft_in1k | 86.594 | 98.02 | 60.4 | 384 |
vit_betwixt_patch16_reg4_gap_256.sbb2_e200_in12k_ft_in1k | 85.734 | 97.61 | 60.4 | 256 |
- 采用 MNV4 基准挑战配方的 MobileNet-V1 1.25、EfficientNet-B1 和 ResNet50-D 权重
模型 | top1 | top5 | 参数数量 | 图像尺寸 |
---|---|---|---|---|
resnet50d.ra4_e3600_r224_in1k | 81.838 | 95.922 | 25.58 | 288 |
efficientnet_b1.ra4_e3600_r240_in1k | 81.440 | 95.700 | 7.79 | 288 |
resnet50d.ra4_e3600_r224_in1k | 80.952 | 95.384 | 25.58 | 224 |
efficientnet_b1.ra4_e3600_r240_in1k | 80.406 | 95.152 | 7.79 | 240 |
mobilenetv1_125.ra4_e3600_r224_in1k | 77.600 | 93.804 | 6.27 | 256 |
mobilenetv1_125.ra4_e3600_r224_in1k | 76.924 | 93.234 | 6.27 | 224 |
- 添加 SAM2 (HieraDet) 主干架构和权重加载支持
- 添加使用 abswin 位置嵌入在 in12k 上训练并在 1k 上微调的 Hiera Small 权重
模型 | top1 | top5 | 参数数量 |
---|---|---|---|
hiera_small_abswin_256.sbb2_e200_in12k_ft_in1k | 84.912 | 97.260 | 35.01 |
hiera_small_abswin_256.sbb2_pd_e200_in12k_ft_in1k | 84.560 | 97.106 | 35.01 |
2024 年 8 月 8 日
- 添加 RDNet(“DenseNets Reloaded”,https://arxiv.org/abs/2403.19588),感谢 Donghyun Kim
2024 年 7 月 28 日
- 使用基于
ra4
mnv4-small 的配方添加了mobilenet_edgetpu_v2_m
权重。在 224x224 分辨率下 top-1 准确率 80.1%,在 256x256 分辨率下 80.7%。 - 发布 1.0.8
2024 年 7 月 26 日
- 更多 MobileNet-v4 权重,在 ImageNet-12k 上预训练并微调,以及抗锯齿的 ConvLarge 模型
模型 | top1 | top1_err | top5 | top5_err | 参数数量 | 图像尺寸 |
---|---|---|---|---|---|---|
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84.99 | 15.01 | 97.294 | 2.706 | 32.59 | 544 |
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84.772 | 15.228 | 97.344 | 2.656 | 32.59 | 480 |
mobilenetv4_conv_aa_large.e230_r448_in12k_ft_in1k | 84.64 | 15.36 | 97.114 | 2.886 | 32.59 | 448 |
mobilenetv4_conv_aa_large.e230_r384_in12k_ft_in1k | 84.314 | 15.686 | 97.102 | 2.898 | 32.59 | 384 |
mobilenetv4_conv_aa_large.e600_r384_in1k | 83.824 | 16.176 | 96.734 | 3.266 | 32.59 | 480 |
mobilenetv4_conv_aa_large.e600_r384_in1k | 83.244 | 16.756 | 96.392 | 3.608 | 32.59 | 384 |
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82.99 | 17.01 | 96.67 | 3.33 | 11.07 | 320 |
mobilenetv4_hybrid_medium.e200_r256_in12k_ft_in1k | 82.364 | 17.636 | 96.256 | 3.744 | 11.07 | 256 |
- 令人印象深刻的 MobileNet-V1 和 EfficientNet-B0 基准挑战(https://huggingface.co/blog/rwightman/mobilenet-baselines)
模型 | top1 | top1_err | top5 | top5_err | 参数数量 | 图像尺寸 |
---|---|---|---|---|---|---|
efficientnet_b0.ra4_e3600_r224_in1k | 79.364 | 20.636 | 94.754 | 5.246 | 5.29 | 256 |
efficientnet_b0.ra4_e3600_r224_in1k | 78.584 | 21.416 | 94.338 | 5.662 | 5.29 | 224 |
mobilenetv1_100h.ra4_e3600_r224_in1k | 76.596 | 23.404 | 93.272 | 6.728 | 5.28 | 256 |
mobilenetv1_100.ra4_e3600_r224_in1k | 76.094 | 23.906 | 93.004 | 6.996 | 4.23 | 256 |
mobilenetv1_100h.ra4_e3600_r224_in1k | 75.662 | 24.338 | 92.504 | 7.496 | 5.28 | 224 |
mobilenetv1_100.ra4_e3600_r224_in1k | 75.382 | 24.618 | 92.312 | 7.688 | 4.23 | 224 |
- 在 vit 和 swin v1/v2 模型中添加了
set_input_size()
的原型,以允许在模型创建后更改图像大小、补丁大小、窗口大小。 - 在 swin 中改进了对不同大小处理的支持,除了
set_input_size
,还在__init__
中添加了always_partition
和strict_img_size
参数,以允许更灵活的输入大小约束 - 修复中间“Getter”特征包装器的乱序索引信息,检查相同内容的越界或范围索引。
- 添加几个参数小于 0.5M 的 `tiny` 模型用于测试,这些模型实际上是在 ImageNet-1k 上训练的
模型 | top1 | top1_err | top5 | top5_err | 参数数量 | 图像尺寸 | crop_pct |
---|---|---|---|---|---|---|---|
test_efficientnet.r160_in1k | 47.156 | 52.844 | 71.726 | 28.274 | 0.36 | 192 | 1.0 |
test_byobnet.r160_in1k | 46.698 | 53.302 | 71.674 | 28.326 | 0.46 | 192 | 1.0 |
test_efficientnet.r160_in1k | 46.426 | 53.574 | 70.928 | 29.072 | 0.36 | 160 | 0.875 |
test_byobnet.r160_in1k | 45.378 | 54.622 | 70.572 | 29.428 | 0.46 | 160 | 0.875 |
test_vit.r160_in1k | 42.0 | 58.0 | 68.664 | 31.336 | 0.37 | 192 | 1.0 |
test_vit.r160_in1k | 40.822 | 59.178 | 67.212 | 32.788 | 0.37 | 160 | 0.875 |
- 修复 vit reg token 初始化,感谢 Promisery
- 其他杂项修复
2024 年 6 月 24 日
- 新增 3 个采用不同 MQA 权重初始化方案的 MobileNetV4 混合权重
模型 | top1 | top1_err | top5 | top5_err | 参数数量 | 图像尺寸 |
---|---|---|---|---|---|---|
mobilenetv4_hybrid_large.ix_e600_r384_in1k | 84.356 | 15.644 | 96.892 | 3.108 | 37.76 | 448 |
mobilenetv4_hybrid_large.ix_e600_r384_in1k | 83.990 | 16.010 | 96.702 | 3.298 | 37.76 | 384 |
mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 83.394 | 16.606 | 96.760 | 3.240 | 11.07 | 448 |
mobilenetv4_hybrid_medium.ix_e550_r384_in1k | 82.968 | 17.032 | 96.474 | 3.526 | 11.07 | 384 |
mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 82.492 | 17.508 | 96.278 | 3.722 | 11.07 | 320 |
mobilenetv4_hybrid_medium.ix_e550_r256_in1k | 81.446 | 18.554 | 95.704 | 4.296 | 11.07 | 256 |
- 在 DaViT 模型中加载 florence2 权重
2024 年 6 月 12 日
- 添加了 MobileNetV4 模型和初始的一组 `timm` 训练权重
模型 | top1 | top1_err | top5 | top5_err | 参数数量 | 图像尺寸 |
---|---|---|---|---|---|---|
mobilenetv4_hybrid_large.e600_r384_in1k | 84.266 | 15.734 | 96.936 | 3.064 | 37.76 | 448 |
mobilenetv4_hybrid_large.e600_r384_in1k | 83.800 | 16.200 | 96.770 | 3.230 | 37.76 | 384 |
mobilenetv4_conv_large.e600_r384_in1k | 83.392 | 16.608 | 96.622 | 3.378 | 32.59 | 448 |
mobilenetv4_conv_large.e600_r384_in1k | 82.952 | 17.048 | 96.266 | 3.734 | 32.59 | 384 |
mobilenetv4_conv_large.e500_r256_in1k | 82.674 | 17.326 | 96.31 | 3.69 | 32.59 | 320 |
mobilenetv4_conv_large.e500_r256_in1k | 81.862 | 18.138 | 95.69 | 4.31 | 32.59 | 256 |
mobilenetv4_hybrid_medium.e500_r224_in1k | 81.276 | 18.724 | 95.742 | 4.258 | 11.07 | 256 |
mobilenetv4_conv_medium.e500_r256_in1k | 80.858 | 19.142 | 95.768 | 4.232 | 9.72 | 320 |
mobilenetv4_hybrid_medium.e500_r224_in1k | 80.442 | 19.558 | 95.38 | 4.62 | 11.07 | 224 |
mobilenetv4_conv_blur_medium.e500_r224_in1k | 80.142 | 19.858 | 95.298 | 4.702 | 9.72 | 256 |
mobilenetv4_conv_medium.e500_r256_in1k | 79.928 | 20.072 | 95.184 | 4.816 | 9.72 | 256 |
mobilenetv4_conv_medium.e500_r224_in1k | 79.808 | 20.192 | 95.186 | 4.814 | 9.72 | 256 |
mobilenetv4_conv_blur_medium.e500_r224_in1k | 79.438 | 20.562 | 94.932 | 5.068 | 9.72 | 224 |
mobilenetv4_conv_medium.e500_r224_in1k | 79.094 | 20.906 | 94.77 | 5.23 | 9.72 | 224 |
mobilenetv4_conv_small.e2400_r224_in1k | 74.616 | 25.384 | 92.072 | 7.928 | 3.77 | 256 |
mobilenetv4_conv_small.e1200_r224_in1k | 74.292 | 25.708 | 92.116 | 7.884 | 3.77 | 256 |
mobilenetv4_conv_small.e2400_r224_in1k | 73.756 | 26.244 | 91.422 | 8.578 | 3.77 | 224 |
mobilenetv4_conv_small.e1200_r224_in1k | 73.454 | 26.546 | 91.34 | 8.66 | 3.77 | 224 |
- 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)。
- 为变换添加 `normalize=` 标志,返回具有原始 dytpe 的非归一化 torch.Tensor(用于 `chug`)
- 发布 1.0.3 版本
2024 年 5 月 11 日
- 发布了 `寻找更好的 ViT 基线(为 GPU 资源有限者)` 的权重和 vit 变体。探索了 Tiny 和 Base 之间的模型形状。
- 添加了 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 版本做准备,已经稳定了一段时间了。
- 一个长期缺失的重要功能:为具有扁平隐藏状态或非标准模块布局的 ViT 模型(目前涵盖
'vit_*', 'twins_*', 'deit*', 'beit*', 'mvitv2*', 'eva*', 'samvit_*', 'flexivit*'
)提供features_only=True
支持 - 上述功能支持是通过一个新的
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
- 发布 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 数据 - 在所有数据集中保持输入和目标列/字段键的一致性,并通过参数传递
- 在使用例如
--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 兼容性,即将放弃对其的支持
- 其他杂项修复
- 发布 0.9.12 版本
2023 年 11 月 20 日
- 通过
model_args
配置项,为基于 Hugging Face Hub 的 timm 模型增加了显著的灵活性。model_args
将在模型创建时作为 kwargs 传递。 - 使用最新模型更新了 imagenet 评估和测试集的 csv 文件
vision_transformer.py
的类型和文档清理由 Laureηt 完成- 发布 0.9.11 版本
2023 年 11 月 3 日
- 添加了 DFN(数据过滤网络)(https://huggingface.co/papers/2309.17425) 和 MetaCLIP (https://huggingface.ac.cn/papers/2309.16671) 的 ViT 权重
- 添加了 DINOv2 'register' ViT 模型权重 (https://huggingface.ac.cn/papers/2309.16588, https://huggingface.co/papers/2304.07193)
- 为 OpenAI、DFN、MetaCLIP 权重添加了使用它的
quickgelu
ViT 变体(效率较低) - 感谢 Aryan 对 ResNet、MobileNet-v3 增加了改进的类型提示
- 在 ImageNet-12k 上微调(来自 LAION-2B CLIP)的 `convnext_xxlarge`
- 发布 0.9.9 版本
2023 年 10 月 20 日
- SigLIP 图像塔权重在 `vision_transformer.py` 中得到支持。
- 在微调和下游特征使用方面有巨大潜力。
- 根据 Vision Transformers Need Registers,vit 模型中增加了实验性的“寄存器”支持
- 更新了 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` 以允许图像大小不能被补丁大小整除(每次前向传播时在右下角填充到补丁大小)。
- 除非将 PatchEmbed 模块添加为叶子节点,否则启用任一动态模式都会破坏 FX 跟踪。
- 现有的通过在创建时传递不同的 `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
2023 年 8 月 25 日
- 自上次发布以来新增了许多模型
- FastViT - https://arxiv.org/abs/2303.14189
- MobileOne - https://arxiv.org/abs/2206.04040
- InceptionNeXt - https://arxiv.org/abs/2303.16900
- RepGhostNet - https://arxiv.org/abs/2211.06088(感谢 https://github.com/ChengpengChen)
- GhostNetV2 - https://arxiv.org/abs/2211.12905(感谢 https://github.com/yehuitang)
- EfficientViT (MSRA) - https://arxiv.org/abs/2305.07027(感谢 https://github.com/seefun)
- EfficientViT (MIT) - https://arxiv.org/abs/2205.14756(感谢 https://github.com/seefun)
- 向 `benchmark.py`、`onnx_export.py` 和 `validate.py` 添加 `--reparam` 参数,以触发具有 `reparameterize()`、`switch_to_deploy()` 或 `fuse()` 中任意一个方法的模型的层重参数化/融合
- 包括 FastViT, MobileOne, RepGhostNet, EfficientViT (MSRA), RepViT, RepVGG, 和 LeViT
- 准备 0.9.6 ‘返校’ 版本发布
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 的补丁和位置嵌入在加载时适用于 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 特征主干权重
- 由 Fredo Guan 添加了 MetaFormer(poolformer-v2、caformer、convformer、更新的 poolformer (v1))及其权重
- 在 vit/deit 模型上增加了实验性的 `get_intermediate_layers` 函数,用于获取隐藏状态(灵感来自 DINO 的实现)。此功能仍在开发中,可能会有较大变化……欢迎反馈。
- 如果 `pretrained=True` 但没有权重存在,模型创建会抛出错误(而不是继续使用随机初始化)
- 修复了源自 TF 的 inception / nasnet 权重在原始分类器中有 1001 个类别时的回归问题
- 将 bitsandbytes (https://github.com/TimDettmers/bitsandbytes) 优化器添加到工厂,使用 `bnb` 前缀,例如 `bnbadam8bit`
- 杂项清理和修复
- 在将 `timm` 从预发布状态转为 0.9 版本之前的最终测试
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`,用于缩放分类器头部并为微调设置固定偏置
- 移除了所有 InplaceABN (`inplace_abn`) 的使用,在 tresnet 中用标准 BatchNorm 替换(并相应修改了权重)。
2023 年 4 月 12 日
- 添加了我一直以来使用的 ONNX 导出脚本、验证脚本和辅助函数。调整了“same”填充以更好地与最近的 ONNX + PyTorch 配合导出。
- 重构了 vit 及类似模型的 dropout 参数,将 drop_rate 分为 `drop_rate` (分类器 dropout)、`proj_drop_rate` (块 mlp / 输出投影)、`pos_drop_rate` (位置嵌入 drop)、`attn_drop_rate` (注意力 dropout)。同时向 vit 和 eva 模型添加了 patch dropout (FLIP)。
- 为更多 vit 模型提供了融合的 F.scaled_dot_product_attention 支持,添加了环境变量 (TIMM_FUSED_ATTN) 进行控制,并提供了配置接口来启用/禁用
- 添加了 EVA-CLIP 主干网络和图像塔权重,最高支持到 4B 参数的“enormous”模型,以及之前遗漏的 336x336 OpenAI ViT 模型。
2023 年 4 月 5 日
- 所有 ResNet 模型已推送到 Hugging Face Hub,并支持多权重
- 所有过去的 `timm` 训练权重已添加,并带有基于配方的标签以作区分
- 所有 ResNet strikes back A1/A2/A3(种子 0)和 R50 示例 B/C1/C2/D 权重均可用
- 向现有的 torchvision 原始权重中添加 torchvision v2 配方权重
- 请参阅 https://huggingface.co/timm/seresnextaa101d_32x8d.sw_in12k_ft_in1k_288#model-comparison 中的比较表
- 为一些抗锯齿 ResNet 模型提供了新的 ImageNet-12k + ImageNet-1k 微调
resnetaa50d.sw_in12k_ft_in1k
- 81.7 @ 224, 82.6 @ 288resnetaa101d.sw_in12k_ft_in1k
- 83.5 @ 224, 84.1 @ 288seresnextaa101d_32x8d.sw_in12k_ft_in1k
- 86.0 @ 224, 86.5 @ 288seresnextaa101d_32x8d.sw_in12k_ft_in1k_288
- 86.5 @ 288, 86.7 @ 320
2023 年 3 月 31 日
- 添加首个 ConvNext-XXLarge CLIP -> IN-1k 微调,以及针对 convnext-base/large CLIP 模型的 IN-12k 中间微调。
模型 | top1 | top5 | 图像尺寸 | 参数数量 | gmacs | macts |
---|---|---|---|---|---|---|
convnext_xxlarge.clip_laion2b_soup_ft_in1k | 88.612 | 98.704 | 256 | 846.47 | 198.09 | 124.45 |
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_384 | 88.312 | 98.578 | 384 | 200.13 | 101.11 | 126.74 |
convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_320 | 87.968 | 98.47 | 320 | 200.13 | 70.21 | 88.02 |
convnext_base.clip_laion2b_augreg_ft_in12k_in1k_384 | 87.138 | 98.212 | 384 | 88.59 | 45.21 | 84.49 |
convnext_base.clip_laion2b_augreg_ft_in12k_in1k | 86.344 | 97.97 | 256 | 88.59 | 20.09 | 37.55 |
- 添加 EVA-02 MIM 预训练和微调权重,推送到 HF hub 并更新所有 EVA 模型的模型卡。首个 top-1 准确率超过 90%(top-5 准确率 99%)的模型!请查看原始代码和权重 https://github.com/baaivision/EVA 以获取更多关于他们融合 MIM、CLIP 以及许多模型、数据集和训练配方调整工作的详细信息。
模型 | top1 | top5 | 参数数量 | 图像尺寸 |
---|---|---|---|---|
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k | 90.054 | 99.042 | 305.08 | 448 |
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k | 89.946 | 99.01 | 305.08 | 448 |
eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.792 | 98.992 | 1014.45 | 560 |
eva02_large_patch14_448.mim_in22k_ft_in1k | 89.626 | 98.954 | 305.08 | 448 |
eva02_large_patch14_448.mim_m38m_ft_in1k | 89.57 | 98.918 | 305.08 | 448 |
eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.56 | 98.956 | 1013.01 | 336 |
eva_giant_patch14_336.clip_ft_in1k | 89.466 | 98.82 | 1013.01 | 336 |
eva_large_patch14_336.in22k_ft_in22k_in1k | 89.214 | 98.854 | 304.53 | 336 |
eva_giant_patch14_224.clip_ft_in1k | 88.882 | 98.678 | 1012.56 | 224 |
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k | 88.692 | 98.722 | 87.12 | 448 |
eva_large_patch14_336.in22k_ft_in1k | 88.652 | 98.722 | 304.53 | 336 |
eva_large_patch14_196.in22k_ft_in22k_in1k | 88.592 | 98.656 | 304.14 | 196 |
eva02_base_patch14_448.mim_in22k_ft_in1k | 88.23 | 98.564 | 87.12 | 448 |
eva_large_patch14_196.in22k_ft_in1k | 87.934 | 98.504 | 304.14 | 196 |
eva02_small_patch14_336.mim_in22k_ft_in1k | 85.74 | 97.614 | 22.13 | 336 |
eva02_tiny_patch14_336.mim_in22k_ft_in1k | 80.658 | 95.524 | 5.76 | 336 |
- 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)模型和权重,并进行了大量重构,支持特征提取,无固定分辨率/大小限制
- 随着 HF hub 推送,RegNet 权重增加,包括 SWAG、SEER 和 torchvision v2 权重。SEER 在模型大小方面的性能相当差,但可能有用。
- 更多 ImageNet-12k 预训练和 1k 微调的 `timm` 权重
rexnetr_200.sw_in12k_ft_in1k
- 82.6 @ 224, 83.2 @ 288rexnetr_300.sw_in12k_ft_in1k
- 84.0 @ 224, 84.5 @ 288regnety_120.sw_in12k_ft_in1k
- 85.0 @ 224, 85.4 @ 288regnety_160.lion_in12k_ft_in1k
- 85.6 @ 224, 86.0 @ 288regnety_160.sw_in12k_ft_in1k
- 在 224x224 分辨率下 85.6,在 288x288 分辨率下 86.0(与 SWAG PT + 1k FT 相比,结果相同但分辨率低得多,远超 SEER FT)
- 添加了模型名称弃用 + 重映射功能(这是将 0.8.x 从预发布版中推出的一个里程碑)。正在添加映射…
- 小错误修复和改进。
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、并行块
- 为
vit_*
、vit_relpos_*
、coatnet
/maxxvit
(首批)添加 F.scaled_dot_product_attention 支持(仅限 PyTorch 2.0) - 添加 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
- 在 256x256 分辨率下达到 86.2%convnext_base.clip_laiona_augreg_ft_in1k_384
- 在 384x384 分辨率下达到 86.5%convnext_large_mlp.clip_laion2b_augreg_ft_in1k
- 在 256x256 分辨率下达到 87.3%convnext_large_mlp.clip_laion2b_augreg_ft_in1k_384
- 在 384x384 分辨率下达到 87.9%
- 添加 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 模型重构为多阶段结构,为新的
conv
变体添加features_only=True
支持,需要权重重映射。
- 新的 EfficientFormer-V2 架构,对原始版本(https://github.com/snap-research/EfficientFormer)进行了重大重构。支持
- 将 ImageNet 元数据(synsets, indices)从
/results
移动到timm/data/_info
。 - 添加 ImageNetInfo / DatasetInfo 类,为
timm
中各种 ImageNet 分类器布局提供标签。- 更新
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 日
添加两个 convnext 12k -> 1k 在 384x384 分辨率下的微调模型
convnext_tiny.in12k_ft_in1k_384
- 85.1 @ 384convnext_small.in12k_ft_in1k_384
- 86.2 @ 384
将所有 MaxxViT 权重推送到 HF hub,并为
rw
base MaxViT 和 CoAtNet 1/2 模型添加新的 ImageNet-12k -> 1k 微调模型
模型 | top1 | top5 | 样本/秒 | 参数 (M) | GMAC | 激活值 (M) |
---|---|---|---|---|---|---|
maxvit_xlarge_tf_512.in21k_ft_in1k | 88.53 | 98.64 | 21.76 | 475.77 | 534.14 | 1413.22 |
maxvit_xlarge_tf_384.in21k_ft_in1k | 88.32 | 98.54 | 42.53 | 475.32 | 292.78 | 668.76 |
maxvit_base_tf_512.in21k_ft_in1k | 88.20 | 98.53 | 50.87 | 119.88 | 138.02 | 703.99 |
maxvit_large_tf_512.in21k_ft_in1k | 88.04 | 98.40 | 36.42 | 212.33 | 244.75 | 942.15 |
maxvit_large_tf_384.in21k_ft_in1k | 87.98 | 98.56 | 71.75 | 212.03 | 132.55 | 445.84 |
maxvit_base_tf_384.in21k_ft_in1k | 87.92 | 98.54 | 104.71 | 119.65 | 73.80 | 332.90 |
maxvit_rmlp_base_rw_384.sw_in12k_ft_in1k | 87.81 | 98.37 | 106.55 | 116.14 | 70.97 | 318.95 |
maxxvitv2_rmlp_base_rw_384.sw_in12k_ft_in1k | 87.47 | 98.37 | 149.49 | 116.09 | 72.98 | 213.74 |
coatnet_rmlp_2_rw_384.sw_in12k_ft_in1k | 87.39 | 98.31 | 160.80 | 73.88 | 47.69 | 209.43 |
maxvit_rmlp_base_rw_224.sw_in12k_ft_in1k | 86.89 | 98.02 | 375.86 | 116.14 | 23.15 | 92.64 |
maxxvitv2_rmlp_base_rw_224.sw_in12k_ft_in1k | 86.64 | 98.02 | 501.03 | 116.09 | 24.20 | 62.77 |
maxvit_base_tf_512.in1k | 86.60 | 97.92 | 50.75 | 119.88 | 138.02 | 703.99 |
coatnet_2_rw_224.sw_in12k_ft_in1k | 86.57 | 97.89 | 631.88 | 73.87 | 15.09 | 49.22 |
maxvit_large_tf_512.in1k | 86.52 | 97.88 | 36.04 | 212.33 | 244.75 | 942.15 |
coatnet_rmlp_2_rw_224.sw_in12k_ft_in1k | 86.49 | 97.90 | 620.58 | 73.88 | 15.18 | 54.78 |
maxvit_base_tf_384.in1k | 86.29 | 97.80 | 101.09 | 119.65 | 73.80 | 332.90 |
maxvit_large_tf_384.in1k | 86.23 | 97.69 | 70.56 | 212.03 | 132.55 | 445.84 |
maxvit_small_tf_512.in1k | 86.10 | 97.76 | 88.63 | 69.13 | 67.26 | 383.77 |
maxvit_tiny_tf_512.in1k | 85.67 | 97.58 | 144.25 | 31.05 | 33.49 | 257.59 |
maxvit_small_tf_384.in1k | 85.54 | 97.46 | 188.35 | 69.02 | 35.87 | 183.65 |
maxvit_tiny_tf_384.in1k | 85.11 | 97.38 | 293.46 | 30.98 | 17.53 | 123.42 |
maxvit_large_tf_224.in1k | 84.93 | 96.97 | 247.71 | 211.79 | 43.68 | 127.35 |
coatnet_rmlp_1_rw2_224.sw_in12k_ft_in1k | 84.90 | 96.96 | 1025.45 | 41.72 | 8.11 | 40.13 |
maxvit_base_tf_224.in1k | 84.85 | 96.99 | 358.25 | 119.47 | 24.04 | 95.01 |
maxxvit_rmlp_small_rw_256.sw_in1k | 84.63 | 97.06 | 575.53 | 66.01 | 14.67 | 58.38 |
coatnet_rmlp_2_rw_224.sw_in1k | 84.61 | 96.74 | 625.81 | 73.88 | 15.18 | 54.78 |
maxvit_rmlp_small_rw_224.sw_in1k | 84.49 | 96.76 | 693.82 | 64.90 | 10.75 | 49.30 |
maxvit_small_tf_224.in1k | 84.43 | 96.83 | 647.96 | 68.93 | 11.66 | 53.17 |
maxvit_rmlp_tiny_rw_256.sw_in1k | 84.23 | 96.78 | 807.21 | 29.15 | 6.77 | 46.92 |
coatnet_1_rw_224.sw_in1k | 83.62 | 96.38 | 989.59 | 41.72 | 8.04 | 34.60 |
maxvit_tiny_rw_224.sw_in1k | 83.50 | 96.50 | 1100.53 | 29.06 | 5.11 | 33.11 |
maxvit_tiny_tf_224.in1k | 83.41 | 96.59 | 1004.94 | 30.92 | 5.60 | 35.78 |
coatnet_rmlp_1_rw_224.sw_in1k | 83.36 | 96.45 | 1093.03 | 41.69 | 7.85 | 35.47 |
maxxvitv2_nano_rw_256.sw_in1k | 83.11 | 96.33 | 1276.88 | 23.70 | 6.26 | 23.05 |
maxxvit_rmlp_nano_rw_256.sw_in1k | 83.03 | 96.34 | 1341.24 | 16.78 | 4.37 | 26.05 |
maxvit_rmlp_nano_rw_256.sw_in1k | 82.96 | 96.26 | 1283.24 | 15.50 | 4.47 | 31.92 |
maxvit_nano_rw_256.sw_in1k | 82.93 | 96.23 | 1218.17 | 15.45 | 4.46 | 30.28 |
coatnet_bn_0_rw_224.sw_in1k | 82.39 | 96.19 | 1600.14 | 27.44 | 4.67 | 22.04 |
coatnet_0_rw_224.sw_in1k | 82.39 | 95.84 | 1831.21 | 27.44 | 4.43 | 18.73 |
coatnet_rmlp_nano_rw_224.sw_in1k | 82.05 | 95.87 | 2109.09 | 15.15 | 2.62 | 20.34 |
coatnext_nano_rw_224.sw_in1k | 81.95 | 95.92 | 2525.52 | 14.70 | 2.47 | 12.80 |
coatnet_nano_rw_224.sw_in1k | 81.70 | 95.64 | 2344.52 | 15.14 | 2.41 | 15.41 |
maxvit_rmlp_pico_rw_256.sw_in1k | 80.53 | 95.21 | 1594.71 | 7.52 | 1.85 | 24.86 |
2023 年 1 月 11 日
- 更新 ConvNeXt ImageNet-12k 预训练系列,增加两个新的微调权重(以及预微调的
.in12k
标签)convnext_nano.in12k_ft_in1k
- 在 224 分辨率下 82.3,在 288 分辨率下 82.9(之前已发布)convnext_tiny.in12k_ft_in1k
- 84.2 @ 224, 84.5 @ 288convnext_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 日
- ConvNeXt-V2 模型和权重已添加到现有的
convnext.py
- 论文: ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
- 参考实现: https://github.com/facebookresearch/ConvNeXt-V2 (注意: 权重目前为 CC-BY-NC 许可) @dataclass
2022 年 12 月 23 日 🎄☃
- 添加来自 https://github.com/google-research/big_vision 的 FlexiViT 模型和权重(请参阅论文 https://arxiv.org/abs/2212.08013)
- 注意:目前调整大小在模型创建时是静态的,动态调整/训练时 patch 大小采样功能仍在开发中
- 更多模型已更新为多权重,并可通过 HF hub 下载(convnext, efficientnet, mobilenet, vision_transformer*, beit)
- 更多模型预训练标签和调整,一些模型名称已更改(正在处理弃用翻译,目前请将主分支视为 DEV 分支,使用 0.6.x 以获得稳定版本)
- 更多 ImageNet-12k(22k 的子集)预训练模型正在涌现
efficientnet_b5.in12k_ft_in1k
- 在 448x448 分辨率下达到 85.9vit_medium_patch16_gap_384.in12k_ft_in1k
- 在 384x384 分辨率下达到 85.5vit_medium_patch16_gap_256.in12k_ft_in1k
- 在 256x256 分辨率下达到 84.5convnext_nano.in12k_ft_in1k
- 在 288x288 分辨率下达到 82.9
2022 年 12 月 8 日
- 向
vision_transformer.py
添加 ‘EVA l’,MAE 风格的 ViT-L/14 MIM 预训练,使用 EVA-CLIP 目标,在 ImageNet-1k 上进行微调(部分模型在 ImageNet-22k 上进行中间微调)
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 | 304.5 | 191.1 | 270.2 | 链接 |
eva_large_patch14_336.in22k_ft_in1k | 88.7 | 304.5 | 191.1 | 270.2 | 链接 |
eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 | 304.1 | 61.6 | 63.5 | 链接 |
eva_large_patch14_196.in22k_ft_in1k | 87.9 | 304.1 | 61.6 | 63.5 | 链接 |
2022 年 12 月 6 日
- 向
beit.py
添加 ‘EVA g’,BEiT 风格的 ViT-g/14 模型权重,包含 MIM 预训练和 CLIP 预训练两种。
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.8 | 1014.4 | 1906.8 | 2577.2 | 链接 |
eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.6 | 1013 | 620.6 | 550.7 | 链接 |
eva_giant_patch14_336.clip_ft_in1k | 89.4 | 1013 | 620.6 | 550.7 | 链接 |
eva_giant_patch14_224.clip_ft_in1k | 89.1 | 1012.6 | 267.2 | 192.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
参数 - 推理脚本允许对输出进行更多控制,可为 top-class 索引 + 概率选择 k,并输出为 json、csv 或 parquet 格式
- 添加了来自 LAION-2B 和原始 OpenAI CLIP 模型的全套微调 CLIP 图像塔权重
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k | 88.6 | 632.5 | 391 | 407.5 | 链接 |
vit_large_patch14_clip_336.openai_ft_in12k_in1k | 88.3 | 304.5 | 191.1 | 270.2 | 链接 |
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k | 88.2 | 632 | 167.4 | 139.4 | 链接 |
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k | 88.2 | 304.5 | 191.1 | 270.2 | 链接 |
vit_large_patch14_clip_224.openai_ft_in12k_in1k | 88.2 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k | 87.9 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_224.openai_ft_in1k | 87.9 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_336.laion2b_ft_in1k | 87.9 | 304.5 | 191.1 | 270.2 | 链接 |
vit_huge_patch14_clip_224.laion2b_ft_in1k | 87.6 | 632 | 167.4 | 139.4 | 链接 |
vit_large_patch14_clip_224.laion2b_ft_in1k | 87.3 | 304.2 | 81.1 | 88.8 | 链接 |
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k | 87.2 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.openai_ft_in12k_in1k | 87 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.laion2b_ft_in1k | 86.6 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.openai_ft_in1k | 86.2 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k | 86.2 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch16_clip_224.openai_ft_in12k_in1k | 85.9 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k | 85.8 | 88.3 | 17.9 | 23.9 | 链接 |
vit_base_patch16_clip_224.laion2b_ft_in1k | 85.5 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k | 85.4 | 88.3 | 13.1 | 16.5 | 链接 |
vit_base_patch16_clip_224.openai_ft_in1k | 85.3 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_384.openai_ft_in12k_in1k | 85.2 | 88.3 | 13.1 | 16.5 | 链接 |
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k | 83.3 | 88.2 | 4.4 | 5 | 链接 |
vit_base_patch32_clip_224.laion2b_ft_in1k | 82.6 | 88.2 | 4.4 | 5 | 链接 |
vit_base_patch32_clip_224.openai_ft_in1k | 81.9 | 88.2 | 4.4 | 5 | 链接 |
- 从官方实现 https://github.com/google-research/maxvit 移植的 MaxViT Tensorflow 权重
- 对于上采样的 384/512 in21k 微调权重,性能下降幅度超出预期,可能缺少细节,但 21k FT 似乎对小的预处理很敏感
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
maxvit_xlarge_tf_512.in21k_ft_in1k | 88.5 | 475.8 | 534.1 | 1413.2 | 链接 |
maxvit_xlarge_tf_384.in21k_ft_in1k | 88.3 | 475.3 | 292.8 | 668.8 | 链接 |
maxvit_base_tf_512.in21k_ft_in1k | 88.2 | 119.9 | 138 | 704 | 链接 |
maxvit_large_tf_512.in21k_ft_in1k | 88 | 212.3 | 244.8 | 942.2 | 链接 |
maxvit_large_tf_384.in21k_ft_in1k | 88 | 212 | 132.6 | 445.8 | 链接 |
maxvit_base_tf_384.in21k_ft_in1k | 87.9 | 119.6 | 73.8 | 332.9 | 链接 |
maxvit_base_tf_512.in1k | 86.6 | 119.9 | 138 | 704 | 链接 |
maxvit_large_tf_512.in1k | 86.5 | 212.3 | 244.8 | 942.2 | 链接 |
maxvit_base_tf_384.in1k | 86.3 | 119.6 | 73.8 | 332.9 | 链接 |
maxvit_large_tf_384.in1k | 86.2 | 212 | 132.6 | 445.8 | 链接 |
maxvit_small_tf_512.in1k | 86.1 | 69.1 | 67.3 | 383.8 | 链接 |
maxvit_tiny_tf_512.in1k | 85.7 | 31 | 33.5 | 257.6 | 链接 |
maxvit_small_tf_384.in1k | 85.5 | 69 | 35.9 | 183.6 | 链接 |
maxvit_tiny_tf_384.in1k | 85.1 | 31 | 17.5 | 123.4 | 链接 |
maxvit_large_tf_224.in1k | 84.9 | 211.8 | 43.7 | 127.4 | 链接 |
maxvit_base_tf_224.in1k | 84.9 | 119.5 | 24 | 95 | 链接 |
maxvit_small_tf_224.in1k | 84.4 | 68.9 | 11.7 | 53.2 | 链接 |
maxvit_tiny_tf_224.in1k | 83.4 | 30.9 | 5.6 | 35.8 | 链接 |
2022 年 10 月 15 日
- 训练和验证脚本增强
- 非 GPU(即 CPU)设备支持
- 训练脚本的 SLURM 兼容性
- HF 数据集支持(通过 ReaderHfds)
- TFDS/WDS 数据加载改进(修复了分布式使用的样本填充/包裹,与样本计数估计相关)
- 脚本/加载器支持 in_chans !=3
- Adan 优化器
- 可通过参数启用每步学习率调度
- 数据集‘parsers’重命名为‘readers’,更具描述性
- AMP 参数更改,通过
--amp-impl apex
使用 APEX,通过--amp-dtype bfloat16
支持 bfloat16 - 主分支切换到 0.7.x 版本,0.6x 分支用于稳定发布仅添加权重的版本
- 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)- 注意:官方 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
原创模型- 两者均可在
maxxvit.py
模型定义中找到,包含许多超出原始论文范围的实验 - MaxVit 作者的一个未完成的 Tensorflow 版本可以在 https://github.com/google-research/maxvit 找到
- 两者均可在
- 初始 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’ coatnets 在第三阶段多了 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 @ 288convnext_atto_ols
- 75.9 @ 224, 77.2 @ 288
2022 年 8 月 5 日
- 更多自定义的 ConvNeXt 小型模型定义及权重
convnext_femto
- 77.5 @ 224, 78.7 @ 288convnext_femto_ols
- 77.9 @ 224, 78.9 @ 288convnext_pico
- 79.5 @ 224, 80.4 @ 288convnext_pico_ols
- 79.5 @ 224, 80.5 @ 288convnext_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 @ 288convnext_nano
- 80.8 @ 224, 81.5 @ 288cs3sedarknet_l
- 81.2 @ 256, 81.8 @ 288cs3darknet_x
- 81.8 @ 256, 82.2 @ 288cs3sedarknet_x
- 82.2 @ 256, 82.7 @ 288cs3edgenet_x
- 82.2 @ 256, 82.7 @ 288cs3se_edgenet_x
- 82.8 @ 256, 83.5 @ 320
- 以上
cs3*
权重均在 TPU 上使用bits_and_tpu
分支训练。感谢 TRC 项目! - 为 ConvNeXt 添加 output_stride=8 和 16 的支持(扩张卷积)
- 修复了 deit3 模型无法调整 pos_emb 大小的问题
- PyPi 0.6.7 版本发布(包含自 0.6.5 以来的上述 bug 修复和新权重)
2022 年 7 月 8 日
更多模型,更多修复
- 添加了官方研究模型(带权重)
- 来自 (https://github.com/mmaaz60/EdgeNeXt) 的 EdgeNeXt
- 来自 (https://github.com/apple/ml-cvnets) 的 MobileViT-V2
- 来自 (https://github.com/facebookresearch/deit) 的 DeiT III (ViT 的复仇)
- 我自己的模型
- 应要求添加了小型
ResNet
定义,包含基础块和瓶颈块的 1 次重复(resnet10 和 resnet14) - 使用 dataclass 配置重构了
CspNet
,简化了 CrossStage3 (cs3
) 选项。这些更接近 YOLO-v5+ 的骨干网络定义。 - 更多相对位置 vit 实验。训练了两个
srelpos
(共享相对位置) 模型,以及一个带 class token 的 medium 模型。 - 为 EdgeNeXt 添加了备用下采样模式,并训练了一个
small
模型。比原始 small 模型好,但不如他们新训练的 USI 权重。
- 应要求添加了小型
- 我自己的模型权重结果 (所有 ImageNet-1k 训练)
resnet10t
- 66.5 @ 176, 68.3 @ 224resnet14t
- 71.3 @ 176, 72.3 @ 224resnetaa50
- 80.6 @ 224 , 81.6 @ 288darknet53
- 80.0 @ 256, 80.5 @ 288cs3darknet_m
- 77.0 @ 256, 77.6 @ 288cs3darknet_focus_m
- 76.7 @ 256, 77.3 @ 288cs3darknet_l
- 80.4 @ 256, 80.9 @ 288cs3darknet_focus_l
- 80.3 @ 256, 80.9 @ 288vit_srelpos_small_patch16_224
- 81.1 @ 224, 82.1 @ 320vit_srelpos_medium_patch16_224
- 82.3 @ 224, 83.1 @ 320vit_relpos_small_patch16_cls_224
- 82.6 @ 224, 83.6 @ 320edgnext_small_rw
- 79.6 @ 224, 80.4 @ 320
- 以上
cs3
、darknet
和vit_*relpos
权重均在 TPU 上训练,感谢 TRC 项目!其余在过热的 GPU 上训练。 - 已验证 Hugging Face Hub 支持修复,演示 notebook 待定
- 预训练权重/配置可从外部(如本地磁盘)加载,并支持头部适配。
- 添加支持以更改
timm
数据集/读取器扫描的图像扩展名。请参阅 (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103) - 默认 ConvNeXt LayerNorm 实现在所有情况下通过
LayerNorm2d
使用F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)
。- 在某些硬件(如 Ampere with CL)上比之前的自定义实现稍慢,但在更广泛的硬件/PyTorch 版本范围内的回归问题更少。
- 之前的实现作为
LayerNormExp2d
存在于models/layers/norm.py
- 大量 bug 修复
- 目前正在为即将发布的 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 相对位置/残差后归一化实验(全部在 TPU 上训练,感谢 TRC 项目)
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),由作者 (https://github.com/okojoalg) 通过 PR 添加
2022 年 5 月 2 日
- Vision Transformer 实验,添加相对位置(Swin-V2 对数坐标)(
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 中得到支持!正好赶上新的实用深度学习课程。timmdocs
文档链接更新为 timm.fast.ai。- 在 TPU 训练的 系列中添加了另外两个模型权重。一些 In22k 预训练仍在进行中。
seresnext101d_32x8d
- 83.69 @ 224, 84.35 @ 288seresnextaa101d_32x8d
(使用 AvgPool2d 进行抗锯齿) - 83.85 @ 224, 84.57 @ 288
2022 年 3 月 23 日
- 向基础 vit 模型添加
ParallelBlock
和LayerScale
选项,以支持 关于 ViT,每个人都应该知道的三件事 中的模型配置 convnext_tiny_hnf
(head norm first) 权重使用 (接近) A2 配方训练,top-1 准确率 82.2%,增加训练轮次可能会更好。
2022 年 3 月 21 日
- 合并
norm_norm_norm
。重要提示 此更新为即将发布的 0.6.x 版本,可能会在一段时间内破坏主分支的稳定性。如果需要稳定性,可以使用0.5.x
分支或之前的 0.5.x 版本。 - 此 版本 中描述的重大权重更新(全部在 TPU 上训练)
regnety_040
- 82.3 @ 224, 82.96 @ 288regnety_064
- 83.0 @ 224, 83.65 @ 288regnety_080
- 83.17 @ 224, 83.86 @ 288regnetv_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 @ 320regnetz_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 @ 299xception65p
- 83.14 @ 299 (timm pre-act)resnext101_64x4d
- 82.46 @ 224, 83.16 @ 288seresnext101_32x8d
- 83.57 @ 224, 84.270 @ 288resnetrs200
- 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 等
- 为多个模型(尤其是 EfficientNet/MobileNetV3、RegNet 和对齐的 Xception)增强了对备用归一化+激活(‘NormAct’)层的支持
- 为 EfficientNet 系列添加了分组卷积支持
- 为所有模型添加了‘组匹配’ API,以允许对模型参数进行分组以应用‘分层’学习率衰减,向学习率调度器添加了 lr_scale
- 为许多模型添加了梯度检查点支持
- 为所有模型添加了
forward_head(x, pre_logits=False)
函数,以允许单独调用forward_features
+forward_head
- 所有 vision transformer 和 vision MLP 模型更新为从
forward_features
返回未池化/未选择标记的特征,以与 CNN 模型保持一致,标记选择或池化现在在forward_head
中应用
2022 年 2 月 2 日
- Chris Hughes 昨天在他的博客上发布了一篇关于
timm
的详尽介绍。非常值得一读。 PyTorch Image Models (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 安装。
- 这次的更改比以往更广泛,可能会破坏一些模型 API 的使用(目标是完全向后兼容)。因此,请注意
2022 年 1 月 14 日
- 版本 0.5.4 将推送到 pypi。距离上次 pypi 更新已经有一段时间了,风险较大的更改很快将合并到主分支…
- 添加来自官方实现的 ConvNeXT 模型/权重 (https://github.com/facebookresearch/ConvNeXt),进行了一些性能调整,与 timm 的功能兼容
- 尝试训练了一些小型 (~1.8-3M 参数) / 移动端优化的模型,目前有几个效果不错,更多正在路上…
mnasnet_small
- 65.6 top-1mobilenetv2_050
- 65.9lcnet_100/075/050
- 72.1 / 68.8 / 63.1semnasnet_075
- 73fbnetv3_b/d/g
- 79.1 / 79.7 / 82.0
- 由 rsomani95 添加的 TinyNet 模型
- 通过 MobileNetV3 架构添加了 LCNet
2023 年 1 月 5 日
- ConvNeXt-V2 模型和权重已添加到现有的
convnext.py
- 论文: ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
- 参考实现: https://github.com/facebookresearch/ConvNeXt-V2 (注意: 权重目前为 CC-BY-NC 许可)
2022 年 12 月 23 日 🎄☃
- 添加来自 https://github.com/google-research/big_vision 的 FlexiViT 模型和权重(请参阅论文 https://arxiv.org/abs/2212.08013)
- 注意:目前调整大小在模型创建时是静态的,动态调整/训练时 patch 大小采样功能仍在开发中
- 更多模型已更新为多权重,并可通过 HF hub 下载(convnext, efficientnet, mobilenet, vision_transformer*, beit)
- 更多模型预训练标签和调整,一些模型名称已更改(正在处理弃用翻译,目前请将主分支视为 DEV 分支,使用 0.6.x 以获得稳定版本)
- 更多 ImageNet-12k(22k 的子集)预训练模型正在涌现
efficientnet_b5.in12k_ft_in1k
- 在 448x448 分辨率下达到 85.9vit_medium_patch16_gap_384.in12k_ft_in1k
- 在 384x384 分辨率下达到 85.5vit_medium_patch16_gap_256.in12k_ft_in1k
- 在 256x256 分辨率下达到 84.5convnext_nano.in12k_ft_in1k
- 在 288x288 分辨率下达到 82.9
2022 年 12 月 8 日
- 向
vision_transformer.py
添加 ‘EVA l’,MAE 风格的 ViT-L/14 MIM 预训练,使用 EVA-CLIP 目标,在 ImageNet-1k 上进行微调(部分模型在 ImageNet-22k 上进行中间微调)
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
eva_large_patch14_336.in22k_ft_in22k_in1k | 89.2 | 304.5 | 191.1 | 270.2 | 链接 |
eva_large_patch14_336.in22k_ft_in1k | 88.7 | 304.5 | 191.1 | 270.2 | 链接 |
eva_large_patch14_196.in22k_ft_in22k_in1k | 88.6 | 304.1 | 61.6 | 63.5 | 链接 |
eva_large_patch14_196.in22k_ft_in1k | 87.9 | 304.1 | 61.6 | 63.5 | 链接 |
2022 年 12 月 6 日
- 向
beit.py
添加 ‘EVA g’,BEiT 风格的 ViT-g/14 模型权重,包含 MIM 预训练和 CLIP 预训练两种。
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
eva_giant_patch14_560.m30m_ft_in22k_in1k | 89.8 | 1014.4 | 1906.8 | 2577.2 | 链接 |
eva_giant_patch14_336.m30m_ft_in22k_in1k | 89.6 | 1013 | 620.6 | 550.7 | 链接 |
eva_giant_patch14_336.clip_ft_in1k | 89.4 | 1013 | 620.6 | 550.7 | 链接 |
eva_giant_patch14_224.clip_ft_in1k | 89.1 | 1012.6 | 267.2 | 192.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
参数 - 推理脚本允许对输出进行更多控制,可为 top-class 索引 + 概率选择 k,并输出为 json、csv 或 parquet 格式
- 添加了来自 LAION-2B 和原始 OpenAI CLIP 模型的全套微调 CLIP 图像塔权重
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
vit_huge_patch14_clip_336.laion2b_ft_in12k_in1k | 88.6 | 632.5 | 391 | 407.5 | 链接 |
vit_large_patch14_clip_336.openai_ft_in12k_in1k | 88.3 | 304.5 | 191.1 | 270.2 | 链接 |
vit_huge_patch14_clip_224.laion2b_ft_in12k_in1k | 88.2 | 632 | 167.4 | 139.4 | 链接 |
vit_large_patch14_clip_336.laion2b_ft_in12k_in1k | 88.2 | 304.5 | 191.1 | 270.2 | 链接 |
vit_large_patch14_clip_224.openai_ft_in12k_in1k | 88.2 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_224.laion2b_ft_in12k_in1k | 87.9 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_224.openai_ft_in1k | 87.9 | 304.2 | 81.1 | 88.8 | 链接 |
vit_large_patch14_clip_336.laion2b_ft_in1k | 87.9 | 304.5 | 191.1 | 270.2 | 链接 |
vit_huge_patch14_clip_224.laion2b_ft_in1k | 87.6 | 632 | 167.4 | 139.4 | 链接 |
vit_large_patch14_clip_224.laion2b_ft_in1k | 87.3 | 304.2 | 81.1 | 88.8 | 链接 |
vit_base_patch16_clip_384.laion2b_ft_in12k_in1k | 87.2 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.openai_ft_in12k_in1k | 87 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.laion2b_ft_in1k | 86.6 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_384.openai_ft_in1k | 86.2 | 86.9 | 55.5 | 101.6 | 链接 |
vit_base_patch16_clip_224.laion2b_ft_in12k_in1k | 86.2 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch16_clip_224.openai_ft_in12k_in1k | 85.9 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_448.laion2b_ft_in12k_in1k | 85.8 | 88.3 | 17.9 | 23.9 | 链接 |
vit_base_patch16_clip_224.laion2b_ft_in1k | 85.5 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_384.laion2b_ft_in12k_in1k | 85.4 | 88.3 | 13.1 | 16.5 | 链接 |
vit_base_patch16_clip_224.openai_ft_in1k | 85.3 | 86.6 | 17.6 | 23.9 | 链接 |
vit_base_patch32_clip_384.openai_ft_in12k_in1k | 85.2 | 88.3 | 13.1 | 16.5 | 链接 |
vit_base_patch32_clip_224.laion2b_ft_in12k_in1k | 83.3 | 88.2 | 4.4 | 5 | 链接 |
vit_base_patch32_clip_224.laion2b_ft_in1k | 82.6 | 88.2 | 4.4 | 5 | 链接 |
vit_base_patch32_clip_224.openai_ft_in1k | 81.9 | 88.2 | 4.4 | 5 | 链接 |
- 从官方实现 https://github.com/google-research/maxvit 移植的 MaxViT Tensorflow 权重
- 对于上采样的 384/512 in21k 微调权重,性能下降幅度超出预期,可能缺少细节,但 21k FT 似乎对小的预处理很敏感
模型 | top1 | 参数数量 | gmac | macts | hub |
---|---|---|---|---|---|
maxvit_xlarge_tf_512.in21k_ft_in1k | 88.5 | 475.8 | 534.1 | 1413.2 | 链接 |
maxvit_xlarge_tf_384.in21k_ft_in1k | 88.3 | 475.3 | 292.8 | 668.8 | 链接 |
maxvit_base_tf_512.in21k_ft_in1k | 88.2 | 119.9 | 138 | 704 | 链接 |
maxvit_large_tf_512.in21k_ft_in1k | 88 | 212.3 | 244.8 | 942.2 | 链接 |
maxvit_large_tf_384.in21k_ft_in1k | 88 | 212 | 132.6 | 445.8 | 链接 |
maxvit_base_tf_384.in21k_ft_in1k | 87.9 | 119.6 | 73.8 | 332.9 | 链接 |
maxvit_base_tf_512.in1k | 86.6 | 119.9 | 138 | 704 | 链接 |
maxvit_large_tf_512.in1k | 86.5 | 212.3 | 244.8 | 942.2 | 链接 |
maxvit_base_tf_384.in1k | 86.3 | 119.6 | 73.8 | 332.9 | 链接 |
maxvit_large_tf_384.in1k | 86.2 | 212 | 132.6 | 445.8 | 链接 |
maxvit_small_tf_512.in1k | 86.1 | 69.1 | 67.3 | 383.8 | 链接 |
maxvit_tiny_tf_512.in1k | 85.7 | 31 | 33.5 | 257.6 | 链接 |
maxvit_small_tf_384.in1k | 85.5 | 69 | 35.9 | 183.6 | 链接 |
maxvit_tiny_tf_384.in1k | 85.1 | 31 | 17.5 | 123.4 | 链接 |
maxvit_large_tf_224.in1k | 84.9 | 211.8 | 43.7 | 127.4 | 链接 |
maxvit_base_tf_224.in1k | 84.9 | 119.5 | 24 | 95 | 链接 |
maxvit_small_tf_224.in1k | 84.4 | 68.9 | 11.7 | 53.2 | 链接 |
maxvit_tiny_tf_224.in1k | 83.4 | 30.9 | 5.6 | 35.8 | 链接 |
2022 年 10 月 15 日
- 训练和验证脚本增强
- 非 GPU(即 CPU)设备支持
- 训练脚本的 SLURM 兼容性
- HF 数据集支持(通过 ReaderHfds)
- TFDS/WDS 数据加载改进(修复了分布式使用的样本填充/包裹,与样本计数估计相关)
- 脚本/加载器支持 in_chans !=3
- Adan 优化器
- 可通过参数启用每步学习率调度
- 数据集‘parsers’重命名为‘readers’,更具描述性
- AMP 参数更改,通过
--amp-impl apex
使用 APEX,通过--amp-dtype bfloat16
支持 bfloat16 - 主分支切换到 0.7.x 版本,0.6x 分支用于稳定发布仅添加权重的版本
- 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)- 注意:官方 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
原创模型- 两者均可在
maxxvit.py
模型定义中找到,包含许多超出原始论文范围的实验 - MaxVit 作者的一个未完成的 Tensorflow 版本可以在 https://github.com/google-research/maxvit 找到
- 两者均可在
- 初始 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’ coatnets 在第三阶段多了 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 @ 288convnext_atto_ols
- 75.9 @ 224, 77.2 @ 288
2022 年 8 月 5 日
- 更多自定义的 ConvNeXt 小型模型定义及权重
convnext_femto
- 77.5 @ 224, 78.7 @ 288convnext_femto_ols
- 77.9 @ 224, 78.9 @ 288convnext_pico
- 79.5 @ 224, 80.4 @ 288convnext_pico_ols
- 79.5 @ 224, 80.5 @ 288convnext_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 @ 288convnext_nano
- 80.8 @ 224, 81.5 @ 288cs3sedarknet_l
- 81.2 @ 256, 81.8 @ 288cs3darknet_x
- 81.8 @ 256, 82.2 @ 288cs3sedarknet_x
- 82.2 @ 256, 82.7 @ 288cs3edgenet_x
- 82.2 @ 256, 82.7 @ 288cs3se_edgenet_x
- 82.8 @ 256, 83.5 @ 320
- 以上
cs3*
权重均在 TPU 上使用bits_and_tpu
分支训练。感谢 TRC 项目! - 为 ConvNeXt 添加 output_stride=8 和 16 的支持(扩张卷积)
- 修复了 deit3 模型无法调整 pos_emb 大小的问题
- PyPi 0.6.7 版本发布(包含自 0.6.5 以来的上述 bug 修复和新权重)
2022 年 7 月 8 日
更多模型,更多修复
- 添加了官方研究模型(带权重)
- 来自 (https://github.com/mmaaz60/EdgeNeXt) 的 EdgeNeXt
- 来自 (https://github.com/apple/ml-cvnets) 的 MobileViT-V2
- 来自 (https://github.com/facebookresearch/deit) 的 DeiT III (ViT 的复仇)
- 我自己的模型
- 应要求添加了小型
ResNet
定义,包含基础块和瓶颈块的 1 次重复(resnet10 和 resnet14) - 使用 dataclass 配置重构了
CspNet
,简化了 CrossStage3 (cs3
) 选项。这些更接近 YOLO-v5+ 的骨干网络定义。 - 更多相对位置 vit 实验。训练了两个
srelpos
(共享相对位置) 模型,以及一个带 class token 的 medium 模型。 - 为 EdgeNeXt 添加了备用下采样模式,并训练了一个
small
模型。比原始 small 模型好,但不如他们新训练的 USI 权重。
- 应要求添加了小型
- 我自己的模型权重结果 (所有 ImageNet-1k 训练)
resnet10t
- 66.5 @ 176, 68.3 @ 224resnet14t
- 71.3 @ 176, 72.3 @ 224resnetaa50
- 80.6 @ 224 , 81.6 @ 288darknet53
- 80.0 @ 256, 80.5 @ 288cs3darknet_m
- 77.0 @ 256, 77.6 @ 288cs3darknet_focus_m
- 76.7 @ 256, 77.3 @ 288cs3darknet_l
- 80.4 @ 256, 80.9 @ 288cs3darknet_focus_l
- 80.3 @ 256, 80.9 @ 288vit_srelpos_small_patch16_224
- 81.1 @ 224, 82.1 @ 320vit_srelpos_medium_patch16_224
- 82.3 @ 224, 83.1 @ 320vit_relpos_small_patch16_cls_224
- 82.6 @ 224, 83.6 @ 320edgnext_small_rw
- 79.6 @ 224, 80.4 @ 320
- 以上
cs3
、darknet
和vit_*relpos
权重均在 TPU 上训练,感谢 TRC 项目!其余在过热的 GPU 上训练。 - 已验证 Hugging Face Hub 支持修复,演示 notebook 待定
- 预训练权重/配置可从外部(如本地磁盘)加载,并支持头部适配。
- 添加支持以更改
timm
数据集/解析器扫描的图像扩展名。请参阅 (https://github.com/rwightman/pytorch-image-models/pull/1274#issuecomment-1178303103) - 默认 ConvNeXt LayerNorm 实现在所有情况下通过
LayerNorm2d
使用F.layer_norm(x.permute(0, 2, 3, 1), ...).permute(0, 3, 1, 2)
。- 在某些硬件(如 Ampere with CL)上比之前的自定义实现稍慢,但在更广泛的硬件/PyTorch 版本范围内的回归问题更少。
- 之前的实现作为
LayerNormExp2d
存在于models/layers/norm.py
- 大量 bug 修复
- 目前正在为即将发布的 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 相对位置/残差后归一化实验(全部在 TPU 上训练,感谢 TRC 项目)
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),由作者 (https://github.com/okojoalg) 通过 PR 添加
2022 年 5 月 2 日
- Vision Transformer 实验,添加相对位置(Swin-V2 对数坐标)(
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 中得到支持!正好赶上新的实用深度学习课程。timmdocs
文档链接更新为 timm.fast.ai。- 在 TPU 训练的 系列中添加了另外两个模型权重。一些 In22k 预训练仍在进行中。
seresnext101d_32x8d
- 83.69 @ 224, 84.35 @ 288seresnextaa101d_32x8d
(使用 AvgPool2d 进行抗锯齿) - 83.85 @ 224, 84.57 @ 288
2022 年 3 月 23 日
- 向基础 vit 模型添加
ParallelBlock
和LayerScale
选项,以支持 关于 ViT,每个人都应该知道的三件事 中的模型配置 convnext_tiny_hnf
(head norm first) 权重使用 (接近) A2 配方训练,top-1 准确率 82.2%,增加训练轮次可能会更好。
2022 年 3 月 21 日
- 合并
norm_norm_norm
。重要提示 此更新为即将发布的 0.6.x 版本,可能会在一段时间内破坏主分支的稳定性。如果需要稳定性,可以使用0.5.x
分支或之前的 0.5.x 版本。 - 此 版本 中描述的重大权重更新(全部在 TPU 上训练)
regnety_040
- 82.3 @ 224, 82.96 @ 288regnety_064
- 83.0 @ 224, 83.65 @ 288regnety_080
- 83.17 @ 224, 83.86 @ 288regnetv_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 @ 320regnetz_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 @ 299xception65p
- 83.14 @ 299 (timm pre-act)resnext101_64x4d
- 82.46 @ 224, 83.16 @ 288seresnext101_32x8d
- 83.57 @ 224, 84.270 @ 288resnetrs200
- 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 等
- 为多个模型(尤其是 EfficientNet/MobileNetV3、RegNet 和对齐的 Xception)增强了对备用归一化+激活(‘NormAct’)层的支持
- 为 EfficientNet 系列添加了分组卷积支持
- 为所有模型添加了‘组匹配’ API,以允许对模型参数进行分组以应用‘分层’学习率衰减,向学习率调度器添加了 lr_scale
- 为许多模型添加了梯度检查点支持
- 为所有模型添加了
forward_head(x, pre_logits=False)
函数,以允许单独调用forward_features
+forward_head
- 所有 vision transformer 和 vision MLP 模型更新为从
forward_features
返回未池化/未选择标记的特征,以与 CNN 模型保持一致,标记选择或池化现在在forward_head
中应用
2022 年 2 月 2 日
- Chris Hughes 昨天在他的博客上发布了一篇关于
timm
的详尽介绍。非常值得一读。 PyTorch Image Models (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 安装。
- 这次的更改比以往更广泛,可能会破坏一些模型 API 的使用(目标是完全向后兼容)。因此,请注意
2022 年 1 月 14 日
- 版本 0.5.4 将推送到 pypi。距离上次 pypi 更新已经有一段时间了,风险较大的更改很快将合并到主分支…
- 添加来自官方实现的 ConvNeXT 模型/权重 (https://github.com/facebookresearch/ConvNeXt),进行了一些性能调整,与 timm 的功能兼容
- 尝试训练了一些小型 (~1.8-3M 参数) / 移动端优化的模型,目前有几个效果不错,更多正在路上…
mnasnet_small
- 65.6 top-1mobilenetv2_050
- 65.9lcnet_100/075/050
- 72.1 / 68.8 / 63.1semnasnet_075
- 73fbnetv3_b/d/g
- 79.1 / 79.7 / 82.0
- 由 rsomani95 添加的 TinyNet 模型
- 通过 MobileNetV3 架构添加了 LCNet