当前位置: 首页 > article >正文

MobileNet家族:从v1到v4的架构演进与发展历程

MobileNet 是一个专为移动设备和嵌入式系统设计的轻量化卷积神经网络(CNN)家族,旨在在资源受限的环境中实现高效的图像分类、对象检测和语义分割等任务。自 2017 年首次推出以来,MobileNet 经历了从 v1 到 v4 的多次迭代,每一代都在计算效率、模型大小和准确性上取得了显著进步。本文将详细探讨 MobileNet v1、v2、v3 和 v4 的原理、架构设计及其发展历程,并分析其关键创新和性能表现。


MobileNet v1:奠定轻量化基础

发布时间:2017 年
MobileNet v1 是该系列的起点,由 Google 提出,目标是设计一种高效的 CNN,适合在移动设备上运行。其核心创新是引入了深度可分离卷积(depthwise separable convolution),大幅降低了计算复杂度和模型参数量。

  • 原理与创新
    深度可分离卷积将标准卷积分解为两个步骤:

    1. 深度卷积(depthwise convolution):对每个输入通道单独应用一个滤波器,减少计算量。
    2. 逐点卷积(pointwise convolution):使用 1x1 卷积融合深度卷积的输出,生成新的特征图。
      相比标准卷积,这种方法将计算成本降低了约 8-9 倍(取决于滤波器数量)。
      此外,v1 引入了宽度乘数(α)分辨率乘数(ρ),允许用户通过调整滤波器数量和输入分辨率,在效率和准确性之间灵活权衡。
  • 架构设计
    网络以一个标准的 3x3 卷积层开头,随后是 13 个深度可分离卷积模块,通过步幅实现降采样,最后以平均池化和全连接层完成分类。输入分辨率默认设为 224x224。

  • 性能表现
    在 ImageNet 数据集上,MobileNet v1(α=1,ρ=1)实现了 70.6% 的 top-1 准确率,拥有 4.2 百万参数和 569 百万乘加运算(MAdds)。相比之下,VGG-16 的参数量(138 百万)和计算量(15,300 MAdds)远超 v1,而准确率仅略高(71.5%)。

  • 意义
    MobileNet v1 奠定了轻量化网络的基础,证明了深度可分离卷积在移动视觉任务中的潜力。

参考文献MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications


MobileNet v2:倒置残差与线性瓶颈的突破

发布时间:2018 年
MobileNet v2 在 v1 的基础上引入了倒置残差(inverted residuals)线性瓶颈(linear bottlenecks),进一步提升了效率和性能。

  • 原理与创新

    1. 倒置残差
      与传统残差网络(如 ResNet)不同,v2 的残差连接发生在低维瓶颈层之间,而非高维层。每个模块首先通过 1x1 卷积扩展通道(扩展因子通常为 6),然后应用深度卷积,最后通过 1x1 卷积压缩回低维。这种“扩展-卷积-压缩”的结构被称为倒置残差。
    2. 线性瓶颈
      在压缩层后,v2 移除非线性激活(如 ReLU),以避免低维特征的信息损失,保留更多表示能力。
  • 架构设计
    网络以一个 32 通道的 3x3 卷积层开始,随后是 19 个瓶颈残差块。这些块分为扩展层(expansion layer)、深度卷积层和投影层(projection layer),通过残差连接优化梯度流动。

  • 性能表现
    在 ImageNet 上,MobileNet v2(α=1)达到 72.0% 的 top-1 准确率,参数量为 3.4 百万,MAdds 为 300 百万,Google Pixel 1 上的 CPU 延迟为 75ms。相比 v1(70.6% 准确率,575 MAdds,113ms),v2 在更低的计算成本下提高了准确性。

  • 意义
    倒置残差和线性瓶颈的引入使 MobileNet v2 成为更高效的模型,广泛应用于实时任务。

参考文献MobileNetV2: Inverted Residuals and Linear Bottlenecks


MobileNet v3:神经架构搜索与硬件优化

发布时间:2019 年
MobileNet v3 通过**神经架构搜索(NAS)**和硬件感知优化,将移动网络设计推向新高度。它结合了 v2 的基础结构,并引入了新的激活函数和模块。

  • 原理与创新

    1. 神经架构搜索(NAS)
      使用 NAS 自动搜索网络结构,结合 NetAdapt 算法微调层级参数,优化延迟和准确性。
    2. h-swish 激活
      替换传统 ReLU 和 swish,h-swish(基于硬 sigmoid)在深层网络中减少计算开销,同时保持非线性表达能力。
    3. 挤压-激励(SE)模块
      在瓶颈块中加入 SE 模块,固定为扩展层的 1/4 大小,增强通道间的依赖性。
  • 架构设计
    MobileNet v3 基于 v2 的倒置残差块(称为 MBConv),提供两种变体:

    • MobileNetV3-Large:适用于高资源场景,目标延迟约 80ms。
    • MobileNetV3-Small:适用于低资源场景,结构更紧凑。
  • 性能表现

    • MobileNetV3-Large:75.2% top-1 准确率,5.4 百万参数,217 MAdds。
    • MobileNetV3-Small:67.5% top-1 准确率,2.5 百万参数,57 MAdds。
      与 v2 相比,Large 模型准确率提升 3.2%,延迟降低约 20%。
  • 意义
    MobileNet v3 通过自动化设计和硬件优化,成为移动设备上的标杆模型。

参考文献Searching for MobileNetV3


MobileNet v4:通用设计与多硬件支持

发布时间:2024 年
MobileNet v4 是最新一代,旨在为移动生态系统提供通用的高效架构,针对多种硬件(如 CPU、DSP、GPU 和专用加速器)进行了优化。

  • 原理与创新

    1. 通用倒置瓶颈(UIB)
      通过搜索融合多种块类型(倒置瓶颈、ConvNext、FFN 和 Extra Depthwise),生成灵活的计算单元,适应不同硬件需求。
    2. 移动优化多查询注意力(Mobile MQA)
      引入轻量化的注意力机制,加速约 39%,提升特征表达能力。
    3. 增强的 NAS
      使用更先进的搜索策略,优化延迟、内存和准确性的 Pareto 前沿。
  • 架构设计
    v4 的具体层级细节依赖于搜索结果,但其核心是 UIB 块和 MQA 模块的组合,支持多种硬件加速器(如 Apple Neural Engine 和 Google EdgeTPU)。

  • 性能表现
    具体数据需参考最新论文,但 v4 被设计为在多种移动场景下实现最优性能,尤其是在边缘计算中表现出色。

  • 意义
    MobileNet v4 的通用性和硬件适配能力使其成为未来移动视觉任务的理想选择。

参考文献MobileNetV4 – Universal Models for the Mobile Ecosystem


发展历程总结

版本发布年份核心创新Top-1 准确率(α=1)参数量 (M)MAdds (M)
MobileNet v12017深度可分离卷积70.6%4.2569
MobileNet v22018倒置残差,线性瓶颈72.0%3.4300
MobileNet v32019NAS,h-swish,SE 模块75.2% (Large)5.4217
MobileNet v42024UIB,Mobile MQA,增强 NAS未公开未公开未公开

未来展望

MobileNet 从 v1 的轻量化探索,到 v4 的通用硬件优化,展示了深度学习在移动设备上的演进路径。未来,随着边缘计算和专用硬件的发展,MobileNet 可能进一步通过自动化设计和跨平台优化,满足更复杂的实时视觉需求。


参考文献

  1. Howard, A. G., et al. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. arXiv:1704.04861
  2. Sandler, M., et al. (2018). MobileNetV2: Inverted Residuals and Linear Bottlenecks. arXiv:1801.04381
  3. Howard, A., et al. (2019). Searching for MobileNetV3. arXiv:1905.02244
  4. Yang, T., et al. (2024). MobileNetV4 – Universal Models for the Mobile Ecosystem. arXiv:2404.10518

http://www.kler.cn/a/588695.html

相关文章:

  • Vue源码深度解析:从2.x到3.x的架构演进与核心原理剖析
  • pycharm配置镜像源【pycharm最新版(23.2.5及以上)方法】
  • 记第一次跟踪seatunnel的任务运行过程三——解析配置的具体方法getLogicalDag
  • 【vue3学习笔记】(第147-149节)vue3响应式原理_Reflect;reactive对比ref;setup的两个注意点
  • Solana
  • 《Python深度学习》第二讲:深度学习的数学基础
  • C#—【在不同的场景该用哪种线程?】
  • Chrome 浏览器的很多扩展不能用了
  • mysql数据库中多张表导出成excel方式
  • Bash语言的集合
  • 【NLP】10. 机器学习模型性能评估指标(含多类别情况), ROC,PRC
  • 嵌入式Zephyr RTOS面试题及参考答案
  • Spring Boot Actuator 详解:让你的应用可监控、可管理、更健壮
  • Qt中的 #include “xxxx.moc“ 说明
  • vscode关闭仓库后如何打开
  • go数据结构笔记
  • Kotlin知识体系(一) : Kotlin的五大基础语法特性
  • SpiderX:专为前端JS加密绕过设计的自动化工具
  • Leetcode-2272. Substring With Largest Variance [C++][Java]
  • c++学习系列----002.写文件