MobileNet-V4 (现已加入 timm)
历史
五年前,Google 研究人员推出了 MobileNet-V3 (https://arxiv.org/abs/1905.02244) 和 EfficientNet (https://arxiv.org/abs/1905.11946) 视觉模型。在 timm
发展的早期阶段,我着手复现这些模型架构,并将最初发布的 Tensorflow 模型权重移植到 PyTorch 中。
这两个模型架构都基于早期 MobileNet-V2 模型中引入的倒置残差块(也称为倒置瓶颈)。IR 块包含一个 1x1 逐点(PW)扩展卷积,接着是一个深度可分离(DW)卷积(3x3 或 5x5),最后在残差路径中是一个 1x1 逐点线性(PWL,无激活)卷积。与当时大多数其他残差块不同,IR 块的宽部分位于块的中间,即深度可分离卷积处,而不是在开始/结束处,并且块的输出没有激活(线性输出),因此被称为“倒置”。
至今,timm
仍然是已知 EfficientNet 和 MobileNet-V3 架构最全面的集合。它涵盖了各种模型论文(EfficientNet、EfficientNet-EdgeTPU、EfficientNet-V2、MobileNet-V2、MobileNet-V3)、训练技术(RandAug/AutoAug、AdvProp、Noisy Student)以及其他许多密切相关架构和权重(如 MNasNet、FBNet v1/v2/v3、LCNet、TinyNet、MixNet)中所有官方发布的 Tensorflow 权重。此外,还有许多在 timm
中训练的纯 PyTorch 权重,它们具有 PyTorch 友好的卷积填充(TF 权重移植使用“SAME”填充仿真),这些在其他集合中是没有的。
新模型
现在,终于到了 MobileNet-V4 (https://arxiv.org/abs/2404.10518) 的时候了。通读这篇论文,很明显其目标是提出一套新的通过 NAS 搜索得到的模型,这些模型在当今的移动/边缘硬件上具有运行时最优性,涵盖从小型 DSP/CPU 设备到当前手机中适度的边缘加速器(例如 EdgeTPU)。
这个目标是通过在之前的组合中引入两种新的块类型来实现的
- 通用倒置瓶颈(UIB)
- 多查询注意力(MQA)
通用倒置瓶颈(Universal Inverted Bottleneck)
作为原始倒置残差/倒置瓶颈块的超集,UIB 在搜索空间中增加了更多灵活性,在块的开始和结束处增加了两个额外的深度可分离卷积位置,并使中间的深度可分离卷积成为可选。额外的最终卷积尚未使用,但现在使用的全新块包括:
- 'ExtraDW',在现有 1x1 PW + kxk DW + 1x1 PWL 模式之前,以 3x3 或 5x5 DW 卷积开始块。
- 'FFN',没有启用 DW 卷积,只有 1x1 PW 扩展 + 线性卷积。
- 'ConvNeXt',以 3x3 或 5x5 DW 卷积开始块,没有中间 DW 卷积,因此以 1x1 + 1x1 FFN 结束。
https://arxiv.org/abs/2404.10518
Mobile MQA
MobileNet-V4 的“混合”变体还增加了通过移动优化多查询注意力模块实现的注意力机制。键或值都没有任何头,只有 4 个或 8 个查询头。键值和/或查询可以选择进行 2D 空间下采样。
PyTorch 实现
我最近在 timm
中实现了这些模型,旨在使 timm
成为高效图像编码器的最佳去处。它建立在之前的 MobileNet-V3 实现之上。我已训练了一些初始权重,并正在努力涵盖论文中提到的所有模型:https://huggingface.co/collections/timm/mobilenetv4-pretrained-weights-6669c22cda4db4244def9637
如果你查看那个 PR 并好奇 EfficientNet-X / EfficientNet-H 是什么?它们是那些模型的鲜为人知的变体,带有 Space2Depth,针对 TPU 或 GPU 使用进行了调整。这些也都在那里,但不是重点。
在 Tensorflow Model Garden (https://github.com/tensorflow/models) 中有这些模型的官方 Tensorflow 实现,但目前还没有权重的迹象。
下面表格中是论文 ImageNet-1k 训练结果与 timm
的比较。请注意,论文中的参数假定将归一化参数折叠到卷积中,而 timm 值处于训练状态。
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 |