Searching for MobileNetV3(2019)


文章目录

  • Abstract
    • 主要内容
    • 实验结果
  • Introduction
  • Related Work
  • Efficient Mobile Building Blocks
  • Network Search
    • Platform-Aware NAS for Block-wise Search
    • NetAdapt for Layer-wise Search
  • Network Improvements
    • Redesigning Expensive Layers
    • Nonlinearities
    • Large squeeze-and-excite
  • Experiments
    • Classification
    • Results
    • Ablation study
      • Impact of non-linearities
    • Detection
    • Semantic Segmentation
  • Conclusions and future work

原文链接

Abstract

主要内容

我们提出了基于互补搜索技术和新颖架构设计相结合的下一代MobileNetsMobileNetV3通过硬件感知网络架构搜索(NAS)和NetAdapt的结合来调整到移动电话cpu,然后通过新颖的先进架构进行改进本文开始探索自动搜索算法和网络设计如何协同工作,以利用互补的方法提高整体技术水平。通过这个过程,我们创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对的是高资源和低资源的用例,然后将这些模型应用于目标检测和语义分割任务。针对语义分割(或任何密集像素预测)任务,我们提出了一种新的高效分割解码器:精简空间金字塔池(LR-ASPP)。

实验结果

我们在移动分类、检测和分割方面取得了最先进的成果。与MobileNetV2相比,MobileNetV3-Large在ImageNet分类上的准确率提高了3.2%,同时延迟减少了20%。与具有类似延迟的MobileNetV2模型相比,MobileNetV3-Small的准确率提高了6.6%。MobileNetV3-Large检测速度超过25%,与Mo- bileNetV2在COCO检测上的精度大致相同。在相似的城市景观分割精度下,MobileNetV3-Large LR- ASPP比MobileNetV2 R-ASPP快34%。

Introduction

高效的神经网络在移动应用中变得无处不在,从而实现全新的设备体验。它们也是个人隐私的关键推动者——允许用户在不需要将数据发送到服务器进行评估的情况下获得神经网络的好处神经网络效率的进步不仅通过更高的准确性和更低的延迟改善用户体验,而且通过降低功耗有助于延长电池寿命。

本文描述了我们开发MobileNetV3大型和小型模型的方法,以提供下一代高精度高效神经网络模型,为设备上的计算机视觉提供动力。新的网络推动了技术的发展,并展示了如何将自动搜索与新架构的进步相结合,以建立有效的模型。
本文的目标是开发最好的移动计算机视觉架构,优化移动设备上的精度和延迟权衡。(和mnas一样嘛)

为了实现这一目标,我们引入了(1)互补搜索技术,(2)适用于移动设置的新型高效非线性算法,(3)新型高效网络设计,(4)新型高效分割解码器。并进行了深入的实验,证明了在广泛的用例和移动电话上评估的每种技术的功效和价值

Related Work

在深度神经网络结构设计中实现精度与效率的最佳平衡是近年来研究的热点。新颖的手工结构和算法神经结构搜索在这一领域的发展中发挥了重要作用
先介绍了SqueezeNet、MobileNet等手工搜索,接着又介绍了MnasNet等引入强化学习来进行自动化搜索的架构
最后介绍了下量化和知识蒸馏

Efficient Mobile Building Blocks

先引入了下以前的高效模块设计,MobileNetV1引入了深度可分离卷积,将传统卷积分解为:用于空间滤波的轻量级深度卷积和用于特征生成的较重的1x1点卷积。MobileNetV2引入了线性瓶颈和反向残余结构,以便通过利用问题的低秩性来构建更有效的层结构
MnasNet在MobileNetV2结构的基础上,将基于挤压和激励的轻量级注意力模块引入瓶颈结构
MobileNetV3使用这些层的组合作为构建块,以构建最有效的模型

Network Search

MobileNetV3使用平台感知NAS通过优化每个网络块来搜索全局网络结构。然后,我们使用NetAdapt算法搜索每层过滤器的数量。这些技术是互补的,可以结合起来有效地找到针对给定硬件平台的优化模型。

Platform-Aware NAS for Block-wise Search

和MnasNet相同,在MnasNet-A1基线模型上应用NetAdapt[48]和其他优化
一不小心观察到最初的奖励设计并没有针对小型移动模型进行优化,对于小模型,准确率随着延迟的变化更大
因此,作者采用了一个较小的权重因子w = -0.15替换原始的w = -0.07来补偿不同延迟带来的较大精度变化。

NetAdapt for Layer-wise Search

我们在架构搜索中使用的第二种技术是NetAdapt[48],这种方法是对平台感知的NAS的补充:它允许以顺序的方式对各个层进行微调,而不是试图推断粗糙的全局架构。简而言之,技术流程如下:
1.从平台感知NAS找到的子网络架构开始
2. For each step:
(a):生成一组新建议,每个提议都代表了一个架构的修改,与前一步相比,至少减少δ的延迟。
(b):对于每个建议,我们使用前一步预训练的模型并填充新提出的体系结构,截断并随机初始化适当的缺失权重。对每个建议进行T步微调,以获得精度的粗略估计
©:根据某种度量选择最佳方案
3.迭代前一步,直到达到目标延迟
我们使延时变化与精度变化之比最小化。也就是说,对于在每个NetAdapt步骤中生成的所有提案,我们选择一个最大的提案:∆Acc/ |∆latency|,∆latency满足2(a)中的约束。直觉是,因为我们的建议是离散的,我们更喜欢那些最大化权衡曲线斜率的建议。

重复这个过程,直到延迟达到目标,然后我们从头开始重新训练新的架构。我们使用与MobilenetV2相同的提案生成器。具体来说,我们允许以下两类提案:
1.减少任何扩展层的尺寸
2.减少共享相同瓶颈大小的所有块中的瓶颈-以保持剩余连接

Network Improvements

我们在网络的开始和结束处重新设计计算开销大的层。我们还引入了一种新的非线性,h-swish,它是最近swish非线性的改进版本,计算速度更快,更易于量化。

Redesigning Expensive Layers

基于MobileNetV2的倒瓶颈结构和变体的模型使用1x1卷积作为最后一层,以便扩展到更高维度的特征空间。为了减少延迟并保留高维特征,我们将这一层移动到最终的平均池化之后。最后一组特征现在以1x1的空间分辨率计算,而不是7x7的空间分辨率。这种设计选择的结果是,在计算和延迟方面,特征的计算几乎是自由的。
我们在之前的瓶颈层中删除投影层和过滤层,进一步降低计算复杂度。原始和优化后的最后一级如图5所示。高效的最后阶段将延迟减少了7毫秒,占运行时间的11%,并在几乎没有准确性损失的情况下将操作数量减少了3000万MAdds。
目前的移动模型倾向于在一个完整的3x3卷积中使用32个滤波器来构建用于边缘检测的初始滤波器组。我们在这一层使用hard swish非线性,因为它表现得和其他非线性测试一样好。我们能够将过滤器的数量减少到16个,同时使用ReLU或swish保持与32个过滤器相同的精度。这节省了额外的2毫秒和1000万MAdds。

Nonlinearities

引入了一种称为swish的非线性,当用作ReLU的替代时,它显着提高了神经网络的准确性。非线性定义为
虽然这种非线性提高了精度,但它在嵌入式环境中带来了非零成本,因为在移动设备上计算sigmoid函数要昂贵得多。我们用两种方法处理这个问题
1.我们将sigmoid函数替换为它的分段线性硬模拟ReLU6(x+3)/6,则swish为:

最后,在实践中,h-swish可以作为逐个函数实现,以减少内存访问次数,从而大大降低延迟成本。

2.随着我们深入网络,应用非线性的成本会降低,因为每次分辨率下降时,每层激活存储器通常都会减半。顺便说一句,我们发现swish的大多数好处都是通过在更深的层中使用它们来实现的。因此,在我们的架构中,我们只在模型的后半部分使用h-swish。我们参考表1和表2了解精确的布局

Large squeeze-and-excite

在MnasNet中,挤压-激发瓶颈的大小与卷积瓶颈的大小是相对的。相反,我们将它们全部替换为固定为扩展层通道数的1/4。我们发现这样做可以在参数数量适度增加的情况下提高精度,并且没有明显的延迟成本

Experiments

Classification

Results




Ablation study

Impact of non-linearities

在h-swish@N中,N表示启用了h-swish的第一层中的通道数。第三列显示了没有经过优化的h-swish的运行时间。前1的精度在ImageNet上,延迟以毫秒为单位

显然h-swish优于Relu,且在整个网络中添加h-swish比扩大网络的插值边界稍微好一些

Detection

对于这两个MobileNetV3模型,通道减少技巧在没有mAP损失的情况下减少了大约15%的延迟,这表明Imagenet分类和COCO对象检测可能更喜欢不同的特征提取器形状。

Semantic Segmentation


我们提出了一种轻量级分段头,称为Lite R-ASPP(或LR-ASPP),如图10所示。Lite R-ASPP在R-ASPP的基础上进行了改进,以类似于挤压和激励模块[20]的方式部署了全局平均池化,其中我们使用了一个具有大跨距的大型池化内核(以节省一些计算),并且模块中只有一个1 × 1卷积。我们对MobileNetV3的最后一个块应用属性卷积[18,40,33,6]来提取更密集的特征,并进一步从低级特征中添加askip连接[30]来捕获更详细的信息。

(1)减少渠道的最后一块网络骨干2倍显著提高速度的同时保持类似的表演(第一行和第二行,行5与行6),(2)提出分割头LR-ASPP略高于R-ASPP[39]虽然性能改善(第二行和第三行,行6vs行7),(3)减少分割的过滤器头从256年到128年提高了速度稍差的成本性能(第3行与行4(4)当使用相同的设置时,MobileNetV3模型变量获得类似的性能,同时比MobileNetV2对应版本略快(第1行vs.第5行,第2行vs.第6行,第3行vs.第7行,第4行vs.第8行),(5)MobileNetV3-small获得与MobileNetV2-0.5相似的性能,同时更快,(6)MobileNetV3-small显着优于MobileNetV2-0.35,同时产生相似的速度。

我们的模型(以MobileNetV3-Small作为网络骨干)的性能仍然优于所有这些模型,至少高出2.1%

Conclusions and future work

在本文中,我们介绍了MobileNetV3大型和小型模型,展示了移动分类,检测和分割的新状态。我们已经描述了我们在利用多种网络架构搜索算法以及网络设计的进步来提供下一代移动模型方面所做的努力。我们展示了如何以一种量化友好和有效的方式适应非线性,如swish和应用挤压和激发,将它们作为有效的工具引入到移动模型中。我们还引入了一种新的轻量级分割解码器,称为LR-ASPP。虽然如何最好地将自动搜索技术与人类直觉相结合仍然是一个悬而未决的问题,但我们很高兴地展示了这些初步的积极结果,并将在未来的工作中继续改进方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter Notebook修改默认工作目录

1、参考修改Jupyter Notebook的默认工作目录_jupyter文件路径-CSDN博客修改配置文件 2.在上述博客内容的基础上,这里不是删除【%USERPROFILE%】而是把这个地方替换为所要设置的工作目录路径, 3.【起始位置】也可以更改为所要设置的工作目录路径&#x…

3分钟部署自己独享的Gemini

3分钟部署自己独享的Gemini 在前面的几篇文章中,分别介绍了Gemini Pro的发布和Gemini Pro API的详细申请步骤,那么今天给大家分享的是如何快速搭建一个属于自己的Gemini 。 1️⃣ 准备工作 科学网络环境Github账号和Vercel账号Gemini Pro API Key&…

深度学习建模从零开始步骤流程

深度学习建模从零开始步骤流程 步骤如下: 环境准备三方库安装建模开发 环境准备 Anaconda安装: Anaconda下载网址,下载win10下的64位版本。 清华镜像站 下载完毕后点击安装,一直点确定或下一步 到上图点击 Just me&#xff…

Appium如何实现移动端UI自动化测试呢?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 为什么要使用Appium?如何搭建Appium工具环境?(超详细)通过demo演示Appium的使用Appium如何实现移动端UI自…

Appium安装及配置

一、前置说明 Appium 是一个用于自动化移动应用程序的开源测试框架,它支持 Android 和 iOS,同时支持使用多种编程语言(如 Java、Python、JavaScript 等)进行测试脚本的编写。 二、操作步骤 1. 安装Node.js Appium Server 由 n…

【玩转TableAgent数据智能分析】借助全球高校数据多维度分析案例,体验TableAgent如何助力用户轻松洞察数据,赋能企业高效数智化转型

目录 前言 一、TableAgent介绍及其优势? 1、会话式数据分析,所需即所得 2、私有化部署,数据安全 3、支持企业级数据分析,大规模,高性能 4、支持领域微调,专业化 5、透明化过程,审计部署 二、使用Ta…

【设计模式-2.5】创建型——建造者模式

说明:本文介绍设计模式中,创建型设计模式中的最后一个,建造者模式; 入学报道 创建型模式,关注于对象的创建,建造者模式也不例外。假设现在有一个场景,高校开学,学生、教师、职工都…

在Windows上使用 Python

本文档旨在概述在 Microsoft Windows 上使用 Python 时应了解的特定于 Windows 的行为。 与大多数UNIX系统和服务不同,Windows系统没有预安装Python。多年来CPython 团队已经编译了每一个 发行版 的Windows安装程序(MSI 包),已便…

世微 AP5101C高压线性LED恒流驱动芯片 6-100V 2A LED灯电源驱动

产品描述 AP5101C 是一款高压线性 LED 恒流 芯片 , 简单 、 内置功率管 , 适用于 6- 100V 输入的高精度降压 LED 恒流驱动 芯片。电流2.0A。 AP5101C 可实现内置MOS 做 2.0A, 外置MOS 可做 3.0A 的。 AP5101C 内置温度保护功能 ,温度保 护点…

CSS 网页制作-学成在线

1、 准备工作 1.1 项目目录 网站根目录是指存放网站的第一层文件夹,内部包含当前网站的所有素材,包含HTML、CSS、图片、JavaScript等等。 1.2 版心效果 可以发现都是呈现版心居中的效果,但是每次都写一次太麻烦了,可以把版心居中…

java设计模式学习之【责任链模式】

文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用日志示例代码地址 引言 在现实生活中,常常会遇到这样的场景:一个请求或命令需要经过多个层级的处理。例如,一个行政审批流程可能需要通过多个部门的审…

【视觉实践】使用Mediapipe进行目标检测:杯子检测和椅子检测实践

目录 1 Mediapipe 2 Solutions 3 安装mediapipe 4 实践 1 Mediapipe Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning,ML)方案。MediaPipe是一个用于构建机器学习管道</

成为一名FPGA工程师:面试题与经验分享

在现代科技领域&#xff0c;随着数字电子技术的迅猛发展&#xff0c;FPGA&#xff08;可编程逻辑器件&#xff09;工程师成为了备受瞩目的职业之一。FPGA工程师不仅需要掌握硬件设计的基本原理&#xff0c;还需要具备良好的编程能力和解决问题的实践经验。面对如此竞争激烈的行…

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结&#xff1a; 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

老师的责任和义务

作为一名老师&#xff0c;我们的责任和义务是重大的。在教育领域&#xff0c;我们扮演着至关重要的角色&#xff0c;肩负着培养下一代人才的重任。下面&#xff0c;我将以知乎的口吻&#xff0c;从几个方面谈谈老师的责任和义务。 确保学生获得高质量的教育。这包括制定合理的教…

【XR806开发板试用】通过http请求从心知天气网获取天气预报信息

1. 开发环境搭建 本次评测开发环境搭建在windows11的WSL2的Ubuntu20.04中&#xff0c;关于windows安装WSL2可以参考文章: Windows下安装Linux(Ubuntu20.04)子系统&#xff08;WSL&#xff09; (1) 在WSL的Ubuntu20.04下安装必要的工具的. 安装git: sudo apt-get install git …

在线客服系统推荐:优质选择助您提升客户服务体验

大部分企业依靠在线客服系统和客户达成联系&#xff0c;他为客户和企业之间建立了有效的沟通桥梁。市场上这么多的在线客服系统哪个好呢&#xff1f; 1、明确自己的需求。 这一点是最重要的&#xff0c;要先明确公司使用客服系统是想做售前咨询还是售后服务。不同的需求相对应…

[笔记]ByteBuffer垃圾回收

参考&#xff1a;https://blog.csdn.net/lom9357bye/article/details/133702169 public static void main(String[] args) throws Throwable {List<Object> list new ArrayList<>();Thread thread new Thread(() -> {ByteBuffer byteBuffer ByteBuffer.alloc…

自动评估作业,支持订正最终得分、查看关联代码|ModelWhale 版本更新

冬至时节&#xff0c;2023 已进入尾声&#xff0c;ModelWhale 于今日迎来新一轮的版本更新&#xff0c;与大家一起静候新年的到来。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 自动评估作业 新增 提交代码&#xff08;团队版✓ &#xff09;新增…

【Netty】编解码器

目录 Java的编解码Netty编解码器概念解码器(Decoder)编码器(Encoder)编码解码器Codec Java的编解码 编码&#xff08;Encode&#xff09;称为序列化&#xff0c; 它将对象序列化为字节数组&#xff0c;用于网络传输、数据持久化或者其它用途。 解码&#xff08;Decode&#x…