MobileNet 基线

社区文章 发布于 2024 年 7 月 26 日

关注我的人都知道,我无法抗拒更新旧基线的机会。

MobileNet-V4 论文发布时,我注意到他们重新运行了 MobileNet-V1 基线,获得了 74% 的 ImageNet 准确率。原始模型大约是 71%。这是一个相当大的飞跃。

好奇之下,我仔细研究了他们针对“小型”模型制定的方案,该模型使用了不寻常的优化器超参数,将 AdamW 的 beta1 从默认的 0.9 降低到 0.6,使其更接近 RMSProp。此外,对于较小的模型来说,其丢弃率和数据增强程度相当高,但训练周期非常长(在他们的情况下,ImageNet-1k 训练了 9600 个周期)。

我决定在 timm 中亲自尝试这些超参数,最初是为了重现 MobileNet-V4-Small 的训练,我在 2400 个周期(而非 9600 个)成功达到了 73.8% 的准确率,然后我尝试了 MobileNet-V1,因为我从未在 timm 中使用过该模型。

我的 MobileNet-V1 运行刚刚结束,ImageNet-1k 训练了 3600 个周期,在 224x224 训练分辨率下,ImageNet 的 top-1 准确率达到 75.4%(256x256 分辨率下为 76%)——没有蒸馏,没有额外数据。ImageNet-V2、Sketch 等 OOD 数据集的得分看起来相当不错,因此似乎没有出现严重的过拟合。权重在此:https://huggingface.co/timm/mobilenetv1_100.ra4_e3600_r224_in1k

与其他 MobileNets 比较

我决定用这些超参数尝试一下旧的 EfficientNet-B0。top-1 准确率达到 78.6%。为了便于理解,B0 训练的 top-1 准确率如下:

因此,一个纯粹的 ImageNet-1k 训练,没有蒸馏,也没有额外数据,仅仅比非常出色的 NoisyStudent 模型低一点点,而后者可以使用 JFT 中的未标注数据。此外,OOD 测试集的分数与 NoisyStudent 相比也保持良好,这同样令人印象深刻。我实际上认为这个方案可以调整,将 B0 的准确率推到 79%。这次运行的准确率提升很早就停止了,通过调整数据增强和正则化,仍有改进空间。

我的方案与 MobileNet-V4 的超参数有何不同?首先,我使用了 timm;如果你阅读 Resnet Strikes Back 论文的附录 A 部分,我详细介绍了一些相对于所有 Tensorflow 和大多数基于 JAX 的训练中默认使用的 RandAugment 的修复和改进。我认为原始版本中的一些问题对出色的训练有害。其他差异呢?

所以,我多次探讨的主题(Resnet Strikes Back, https://huggingface.co/collections/timm/searching-for-better-vit-baselines-663eb74f64f847d2f35a9c19, 以及许多 timm 权重)仍然成立,即通过更好的训练方案,改进旧结果仍有很大的操作空间。

我想知道,在 7-8 年后,通过更好的方案和训练技术,今天最先进的 100+B 密集型 Transformer 架构还能增加多少改进。

社区

注册登录 发表评论