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.rhkb.cn/news/34410.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛

在钉钉在线表格中,虽然功能相对Excel有所简化,但仍然可以通过条件格式实现对特定内容的高亮显示。以下是具体步骤: 一、在钉钉在线表格中设置条件格式 1. 打开钉钉在线表格 登录钉钉,进入“钉钉在线表格”应用。 打开你需要操作…

王者荣耀道具页面爬虫(json格式数据)

首先这个和英雄页面是不一样的,英雄页面的图片链接是直接放在源代码里面的,直接就可以请求到,但是这个源代码里面是没有的 虽然在检查页面能够搜索到,但是应该是动态加载的,源码中搜不到该链接 然后就去看看是不是某…

基于Python+SQLite实现(Web)验室设备管理系统

实验室设备管理系统 应用背景 为方便实验室进行设备管理,某大学拟开发实验室设备管理系统 来管理所有实验室里的各种设备。系统可实现管理员登录,查看现有的所有设备, 增加设备等功能。 开发环境 Mac OSPyCharm IDEPython3Flask&#xff…

让双向链表不在云里雾里

又来博客留下我的足迹了,哈哈哈,这次是对于双向链表的理解 目录 创建双向链表: 申请结点: 双向链表初始化: 双向链表插入结点: 双向链表删除结点: 双向链表的打印: 双向链表…

基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别

【由于之前学习MyBatis的时候是跟着视频敲的纯MyBatis项目,以至于在突然看到别人在SpringBoot项目里搭建MyBatis方式的时候很懵比…特此文字形式记录一下区别(应该还有好多种其他方式是我不知道的,主要应该就是要知道关键的流程步骤&#xff…

UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法

有些差异 这么牛逼的引擎,居然有这种入门级别的问题,一触发清理,大概率(80%)会崩溃 无论虚幻5还是UE4都有这个问题,挺烦人的 实在忍不了了,这次,今天 就想问问有什么好的处理方法么?&#x…

学习 springboot -Bean 管理(注册条件)

前言 上一篇 博客 :学习springboot-Bean管理(Bean 注册,Bean 扫描)-CSDN博客我们了解了 bean 注册需要使用到 Bean 和Import 将第三方jar 包的对象 注入到ioc 容器 如下图所示 通过图片,可以看到Country 对象和Province 对象已…

【云原生技术】编排与容器的技术演进之路

一、编排与容器的技术演进之路 1.1 DockerClient 此时 K8s 只是编排领域的一个选择,而 Docker 此时一家独大,所以 K8s 的客户端只 是作为 Docker 的客户端来调用 Docker 引擎来完成服务。 1.2 RUNC&Shim OCI催生 runcrunc,剥离 Docke…

安卓投屏到mac操作

1. 安装 brew install scrcpy2. 打开手机usb调试 3. 安装 brew install android-platform-tools 4. 重启终端,运行命令 adb devices scrcpy 参考:https://zhuanlan.zhihu.com/p/682491037https://zhuanlan.zhihu.com/p/682491037

c#知识点补充

1.静态类无法被继承 2.线程join方法的使用 作用就是让多个线程,按顺序执行 3.线程里lock的作用 保证每次只执行一次 4.线程池的使用

3分钟复现 Manus 超强开源项目 OpenManus

文章目录 前言什么是 OpenManus构建方式环境准备克隆代码仓库安装依赖配置 LLM API运行 OpenManus 效果演示总结个人简介 前言 近期人工智能领域迎来了一位备受瞩目的新星——Manus。Manus 能够独立执行复杂的现实任务,无需人工干预。由于限制原因大部分人无法体验…

电路原理(电容 集成电路NE555)

电容 1.特性:充放电,隔直流,通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加,但是多电容串联就不会,只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…

【redis】hash基本命令和内部编码

文章目录 表示形式命令HSET 和 HGET HEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSETNXHINCRBYHINCRBYFLOAT命令小结内部编码 表示形式 Redis 自身已经是键值对结构了 Redis 自身的键值对就是通过哈希的方式来组织的 把 key 这一层组织完成之后,到了 value 这一层&…

学习路之TP6 --重写vendor目录下的文件(新建命令)

[TOC](学习路之TP6 --重写vendor目录下的文件(新建命令)) 一、新建命令文件 php think make:command CustomWorker二、修改 复制vendor\topthink\think-worker\src\command\Server.php 内容到app\command\CustomWorker.php 修改继承类:class CustomWorker exten…

Python----数据可视化(Pyecharts三:绘图二:涟漪散点图,K线图,漏斗图,雷达图,词云图,地图,柱状图折线图组合,时间线轮廓图)

1、涟漪特效散点图 from pyecharts.globals import SymbolType from pyecharts.charts import EffectScatter from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.globals import ThemeType # 绘制图表 es (EffectScatter(init_optsop…

Linux内核网络层分析

网络访问层仍受到传输介质的性质以及相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎完全分离。为什么说几乎?因为该层不仅负责发送和接收数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设…

OpenHarmony子系统开发 - Rust编译构建指导

OpenHarmony子系统开发 - Rust编译构建指导 一、Rust模块配置规则和指导 概述 Rust是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust官方也使用Cargo工具来专门为Rust代码创建工程和构建编译。 OpenHarmony为了集成C…

分享一个免费的CKA认证学习资料

关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kubernetes管理员认证计划,用于证明持有人有履行Kubernetes管理的知识,技能等相关的能力…

MySQL的一些八股文

1.什么是BufferPool? Buffer Pool基本概念 Buffer Pool:缓冲池,简称BP。其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。 Buffer Pool由缓存数据页(Page) 和 对缓存数据页进行描述的控制块 组成, 控制…

卷积神经网络(笔记02)

一、简述在卷积神经网络中池化层的作用,并解释其为何能帮助提高模型性能 。 池化层的作用 1. 降低数据维度 池化操作通过对输入特征图进行下采样,减少特征图的空间尺寸。常见的池化方式有最大池化(Max Pooling)和平均池化&…