深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现

本文主要是介绍深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现
MobileNetV4 - Universal Models for the Mobile Ecosystem
PDF: https://arxiv.org/pdf/2404.10518.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

专为移动设备设计的高效架构MobileNetV4(MNv4)核心在于引入了通用倒置瓶颈(UIB)搜索块和Mobile MQA注意力块,前者融合了多种技术,后者针对移动加速器优化,可大幅提升速度。同时采用了优化的神经架构搜索(NAS)方案。这一系列创新使得MNv4模型在多种设备上实现帕累托最优。此外,还引入了一种新的知识蒸馏技术,提高了模型的准确性。最终,MNv4-Hybrid-Large模型在ImageNet-1K上达到87%的准确率,同时在Pixel 8 EdgeTPU上的运行时间极短。

在这里插入图片描述

2 Universal Inverted Bottlenecks

通用倒瓶颈(UIB)块,其设计简洁而高效,如图所展示,它在传统的倒瓶颈块中巧妙地融入了两个可选的深度卷积(DW)操作。这两个DW分别置于扩展层之前以及扩展层和投影层之间,它们的存在与否是通过神经网络架构搜索(NAS)优化过程精心确定的,从而生成出性能卓越的全新架构。
在这里插入图片描述
尽管这种改动看似简单,但UIB块却成功地将多个现有的关键组件融为一体,包括经典的IB块、前沿的ConvNext块以及ViT中的FFN块。这种融合不仅保留了各组件的优势,还通过互补效应进一步提升了整体性能。

更值得一提的是,UIB还引入了一种革新的变体——额外的深度卷积IB(ExtraDW)块。这一创新举措为UIB块注入了新的活力,使其在保持高效的同时,进一步提升了模型的表达能力。

在网络的每个阶段,UIB都展现了出色的灵活性,以达成以下三个关键目标:

  • 即时实现空间和通道混合的权衡,优化模型的表达能力;
  • 按需扩大感受野,提升模型对上下文信息的捕获能力;
  • 最大化计算利用率,确保资源的高效利用。

3 Mobile MQA

专门为加速器优化的Mobile MQA注意力块,该块能够显著提升推理速度,达到超过39%的效率提升。

MQA
MQA通过共享键和值简化了多查询注意力机制。与MHSA相比,MQA在保持高质量的同时,实现了显著加速和参数减少。
在这里插入图片描述
Spatial Reduction Attention (SRA)
受到MQA非对称计算的启发,进一步将空间缩减注意力(SRA)融入优化后的MQA模块中,以降低键和值的分辨率,同时保持高分辨率的查询。此外使用步长为2的3x3深度卷积替代了AvgPooling,为模型容量的提升提供了一种高效且经济的方案。
在这里插入图片描述
通过引入非对称空间下采样,我们可以在保持极小精度损失(-0.06%)的同时,实现超过20%的效率提升。

Mobile MQA
在这里插入图片描述
其中 SR代表空间减少,即步长为2的深度卷积(DW),或者在未使用空间减少的情况下表示恒等函数。

4 Design of MNv4 Models

为了有效地实例化UIB块,作者采用了定制的TuNAS方法,该方法针对性能改进进行了优化。为克服TuNAS因参数共享而产生的偏见,作者实施了一个两阶段搜索策略。这一策略旨在解决UIB深度层与其他搜索选项之间参数数量差异的问题,确保搜索结果的公正性和有效性。

在搜索过程中,作者首先进行了粗粒度搜索,集中于确定最佳的滤波器大小,同时保持其他参数如扩展因子(设为默认值4)和深度可分核(使用3x3)不变。这一阶段的目的是快速筛选出可能的滤波器大小范围。

随后,基于粗粒度搜索的结果,作者进行了细粒度搜索。在这一阶段,作者进一步探索UIB的两个深度可分层的配置,包括它们的存在与否以及核大小(3x3或5x5)的选择。同时,扩展因子仍然保持为4,以控制变量并更精确地评估不同配置的性能。

通过这种两阶段的搜索策略,作者成功地确定了UIB块的最优配置,既考虑了性能又平衡了参数数量,为UIB的有效实例化提供了有力支持。

在这里插入图片描述
MNv4模型的架构细节:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 Results

ImageNet classification
在这里插入图片描述
COCO Object Detection
在这里插入图片描述

这篇关于深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/931881

相关文章

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合