MobileNet-V4 (现已加入 timm)

社区文章 发布于 2024年6月17日

历史

五年前,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 结束。

image/png 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

论文:image/png

社区

已删除

出色的工作。就一个建议,你能不能将 SSD 与 mobilenetv4 结合起来,就像 SSD mobilenetv3 一样。看看 SSD 在这种方法下会不会有改进会很有趣。

注册登录 发表评论