寻找更好的(完整)ImageNet ViT 基线
社区文章 发布于 2024 年 8 月 26 日
timm
1.0.9 版刚刚发布。其中包含我在寻找更好的 ViT 基线系列中新发布的 ImageNet-12k 和 ImageNet-12k -> ImageNet-1k 权重。
模型 | 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 |
我想重点介绍这些模型,因为它们在 ImageNet-12k / ImageNet-22k 模型中处于帕累托前沿。有趣的是,通过比较具有相似 ImageNet-22k 微调的模型,可以看到(接近)Vanilla ViT 与其他架构的竞争力如何。在启用优化的注意力内核(timm
中默认为启用)的情况下,它们遥遥领先于 Swin,并且与 ConvNeXt 等模型相比表现良好。
另外值得指出的是,deit3
模型权重是一组非常出色且被低估的权重。我的 sbb
权重的高端模型在同等计算量下与 deit3
相当——这也是一个很好的方法。然而,我使用 sbb
方法的目标之一是使微调更容易。通过选择一种不那么奇特的增强方案,坚持使用 AdamW,并牺牲一些 top-1 准确率(更高的权重衰减),我觉得这个目标已经实现了。通过几次微调实验,我发现 sbb ViT 权重更容易适应其他,尤其是较小的数据集(Oxford Pets、RESISC 等),并且运行时间较短。
注意:所有吞吐量测量均在 RTX 4090 上进行,启用 AMP /w torch.compile(),PyTorch 2.4,Cuda 12.4。
粗体行:帕累托前沿模型