前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >学界 | MnasNet论文解读:终端轻量化模型新思路

学界 | MnasNet论文解读:终端轻量化模型新思路

作者头像
AI科技评论
发布于 2018-09-21 09:12:12
发布于 2018-09-21 09:12:12
9380
举报
文章被收录于专栏:AI科技评论AI科技评论

AI 科技评论按,本文作者陈泰红(ahong007@yeah.net),他为 AI 科技评论撰写了关于 MnasNet 论文的独家解读文章。

1. Motivation

CNN 模型近年发展非常迅猛,在多项视觉任务中都展现出极佳的性能。但 CNN 模型体积巨大,计算性能低,这是比较明显的缺点,计算需求的增加使得在诸如终端(手机/AR/VR/无人机)上部署最先进的 CNN 模型变得困难。

终端轻量化神经网络模型需要同时考虑三个维度:参数少、速度快和精度高。目前 Mobile V1&V2,shuffle Net V1 等 CNN 模型在移动端取得一定进展,但是使用间接评价标准,如 FLOPS 等,手工设计模型卷积架构难以在三个维度取得平衡。Google 团队最新提出 MnasNet,使用强化学习的思路,提出一种资源约束的终端 CNN 模型的自动神经结构搜索方法。论文将实时性显式地结合到主要目标中,这样搜索空间就可以识别出一个在准确性和实时性实现良好平衡的模型,即实时性和准确率作为 reward,并且直接使用手机平台(Pixel phones 等)运行模型,直接测量实时性和准确率。为了进一步在灵活性和搜索空间大小之间取得适当的平衡,论文还提出一种新的分解层次搜索空间,该空间允许整个网络的分层多样性。

MnasNet 模型在 Pixel phones 上直接运行,在 ImageNet 分类和 COCO 目标检测等计算机视觉领域均取得 state-of-art 水平。ImageNet 分类任务中,在 pixel 1 上取得了 74.0% 的 top-1 精度,耗时 76 毫秒,比 MobileNetV2 快 1.5 倍,比 NASNet 快 2.4 倍。在 COCO 目标检测任务中,比 MobileNets 取得了更好的 mAP 和实时性。

2. Related Work

CNN 模型压缩有一些常用的方式:量化、减枝和手工设计神经网络架构(卷积方式)。比较著名的量化模型有 Deepcompression,Binary-Net,Tenary-Net,Dorefa-Net、SqueezeNet,Mobile V1&V2,shuffle Net V1&V2。

SongHan 提出的 DeepCompression 可以说是神经网络压缩领域开山之作,主要分为三个主要的部分:剪枝,量化,哈夫曼编码。量化将大量的数学运算变成了位操作(Binary-Net),这样就节省了大量的空间和前向传播的时间,使神经网络的应用门槛变得更低。但是这些压缩算法在准确率上有很大的局限性。论文使用的多是选择传统 CNN 架构(AlexNet,VGG)作为测试对象,而这些网络本身冗余度较高。

而设计神经网络架构的方式是目前在终端常用的方式,比如 MobileNet V2 等已经在小米手机的 AI 相机和指纹识别、人脸识别等应用场景落地。

SqueezeNet 为了降低模型参数,替换 3x3 的卷积 kernel 为 1x1 的卷积 kernel,减少输入 3x3 卷积的 input feature map 数量,减少 pooling 。

MobileNet V1 的主要工作是用 depthwise sparable convolutions 替代过去的 standard convolutions 来解决卷积网络的计算效率和参数量的问题。MobileNet V2 主要的改进有两点:

  • 1、Linear Bottlenecks。也就是去掉了小维度输出层后面的非线性激活层,目的是为了保证模型的表达能力。
  • 2、Inverted Residual block。该结构和传统 residual block 中维度先缩减再扩增正好相反,因此 shotcut 也就变成了连接的是维度缩减后的 feature map。

Shuffle Net 引入 pointwise group convolution 和 channel shuffle 解决效率问题,比如小米 MIX2,它自带的 0.5 秒人脸识别自动解锁使用的就是 Shuffle Net。Shuffle Net V2 是最新发表在 ECCV2018 的论文,提出了四点准则,并对网络进行了四点改进:(1)使用相同的通道宽度的卷积;(2)考虑使用组卷积;(3)降低碎片化程度;(4)减少元素级运算。

在终端设备手工设计神经网络难以在准确率和实时性间取得平衡,更为复杂的是,每种设备类型都有自己的软件和硬件特性,并且可能需要不同的体系结构才能达到最佳的精度-效率权衡。目前芯片设计公司如高通、小米、华为、苹果都有针对自家芯片做的底层优化,以提高 CNN 的实时性。

3. Architecture

3.1 搜索算法

本文提出了一种用于设计移动 CNN 模型的自动神经结构搜索方法。图 1 显示论文总体视图,与以前方法的主要区别是多目标奖励和新的搜索空间。论文考虑两个因素:首先,将设计问题描述为一个考虑 CNN 模型精度和推理实时性的多目标优化问题。使用架构搜索和强化学习以找到模型,在准确率和实时性取得平衡。其次,之前很多自动化搜索方法主要是搜索几种类型的单元,然后通过 CNN 网络重复叠加相同的单元,而未能考虑卷积操作造成的运算效率差异。

帕雷托最优(called Pareto optimal)是经济学的一个概念,是指资源分配的一种理想状态。给定固有的一群人和可分配的资源,如果从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好,这就是帕雷托改善。帕雷托最优的状态就是不可能再有更多的帕雷托改善的状态。

m 表示模型,ACC(m) 表示目标模型的准确率,LAT(m) 表示耗时,T 表示目标耗时。而论文提出一种策略,基于梯度的强化学习方法寻找帕雷托最优,同时对 ACC(m) 和 LAT(m) 帕雷托改善。

如图 1 所示,模型包括三个部分:基于 RNN 的控制器,用于实现模型准确率的训练器,基于推断引擎测量耗时。论文采用评估-更新循环训练控制器,直到模型收敛。

3.2 层级搜索空间

论文使用层级搜索空间,即划分 CNN layers 成多个 groups,对每个 group 搜索卷积和连接,相比其他算法只搜索几个复杂的单元,然后重复叠加相同的单元,论文简化了每个单元格的搜索空间,但允许各个单元不同。

如图 3 所示,论文划分 CNN 模型为一系列预定义的 Block 序列,逐渐降低输入分辨率和增加滤波器尺寸。每一个 Block 内含有一系列 identical layers,其卷积操作和连接由每一个 Block 搜索空间确定。对第 i 个 Block,由以下参数决定:

卷积类型(Convolutional ops ConvOp): regular conv (conv), depthwise conv (dconv), and mobile inverted bottleneck conv with various expansion ratios

卷积内核 Convolutional kernel size KernelSize: 3x3, 5x5.

跳跃层连接方式 Skip operations SkipOp: max or average pooling, identity residual skip, or no skip path.

输出滤波器尺寸 Output filter size Fi

每个 block 卷积层个数 Number of layers per block Ni.

ConvOp, KernelSize, SkipOp, Fi 决定每一卷积层架构,而 Ni 决定每一个 block 重复卷积层的次数。

4. Experiment

论文直接在 ImageNet 训练集搜索最优解,之后进行少量的训练,从训练集选择 50K 图像作为验证集。控制器在搜索架构中采样约 8k 个模型,但只有很少的模型(<15)转移到 ImageNet 和 COCO。

在 ImageNet 的训练过程:模型试验 RMSProp 优化,decay=0.9,momentum =0.9。每一层卷积后均有 Batch norm,momentum 0.9997,weight decay = to 0.00001,模型的训练过程可参考 MnasNet 论文。

从论文的实验效果看到,MnasNet 模型在 MnasNet 分类任务和 COCO 目标检测任务中均优于自家公司之前提出的 MobileNet V1&V2,群雄逐鹿、百舸争流、青出于蓝。好的团队有实际业务需求,有服务器集群支持,有内涵底蕴精心打磨。

5. Discussion

论文的图 7 显示了 MnasNet 算法的神经网络架构,包含一系列线性连接 blocks,每个 block 虽然包含不同类别的卷积层,每一卷积层都包含 depthwise convolution 卷积操作,最大化模型的计算效率。但是和 MobileNet V1&V2 等算法有明显不同:

1、模型使用更多 5x5 depthwise convolutions。对于 depthwise separable convolution, 一个 5x5 卷积核比两个 3x3 卷积核更高效:

假如输入分辨率为(H,W,M),输出分辨率为(H,W,N),C5x5 和 C3x3 分别代表 5x5 卷积核和 3x3 卷积核计算量,通过计算可以看到,N>7 时,C5x5 计算效率大于 C3x3 计算效率:

2、层分级的重要性。很多轻量化模型重复 block 架构,只改变滤波器尺寸和空间维度。论文提出的层级搜索空间允许模型的各个 block 包括不同的卷积层。轮的ablation study比较了 MnasNet 的各种变体(即单独重复使用各个 block),在准确率和实时性方面难以达到平衡,验证了层分级的重要性。

个人观点:论文使用强化学习的思路,首先确定了 block 的连接方式,在每个 block 使用层级搜索空间,确定每个卷积层的卷积类型,卷积核、跳跃层连接方式,滤波器的尺寸等。如果让强化学习自己选择模型的架构,比如 Encoder-Decoder,U-Net,FPN 等,是否在目标检测语义分割方面有更好的表现。

以上仅为个人阅读 MnasNet 论文后的理解,总结和一些思考,观点难免偏差,望读者以怀疑的态度阅读,欢迎交流指正。

参考文献:

1. MnasNet: Platform-Aware Neural Architecture Search for Mobile.

https://arxiv.org/pdf/1807.11626.pdf

2. Mobilenets:Efficient convolutional neural networks for mobile vision applications.

https://arxiv.org/pdf/1704.04861.pdf

3. Mobilenetv2: Inverted residuals and linear bottlenecks. CVPR2018 .

4. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices .

https://arxiv.org/pdf/1707.01083.pdf

5. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design.ECCV2018

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技评论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
生产环境 Nginx 在线平滑升级
生产环境 Nginx 需要增加支持 TCP 反向代理功能,需要再添加--with-stream参数重新编译后,在线升级 Nginx。
叨叨软件测试
2020/12/02
2.1K0
Nginx 基本使用
前面在提到 Nginx 的高性能,其实也和它的架构模式有关。Nginx 默认采用的是多进程的方式来工作的,当将 Nginx 启动后,我们通过 ps -ef | grep nginx 命令可以查看到如下内容:
用户9615083
2022/12/25
4290
Nginx 基本使用
Nginx平滑升级
按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install
Cyylog
2020/08/19
1.3K0
Nginx平滑升级源码分析
一、平滑升级步骤 1、重命名之前的sbin/nginx文件,将新的nginx文件放到sbin/目录下 #mv ./sbin/nginx ./sbin/nginx.old #cp ~/nginx ./sbin/ 2、向正在运行的nginx发送USR2信号启动新的nginx,这个时候新老nginx都会接收请求,看那一个进程能抢到锁,抢到锁的worker进程可以accpet新请求 #kill -USR2  `cat nginx.pid` 3、观察新的nginx运行无误后,向旧nginx发信号 停止旧nginx的运
magicsoar
2018/02/06
1.3K0
Nginx平滑升级源码分析
Nginx-3.控制nginx
master进程id在默认写入到/nginx/logs/nginx.pid文件中。文件也可以在nginx.conf文件中指定。master进程支持以下信号:
_淡定_
2020/02/26
7800
Nginx在线服务状态下平滑升级或新增模块的详细操作记录
今天,产品那边发来需求,说有个 APP 的 IOS 版本下载包需要新增 https 协议,在景安购买了免费的 SSL 证书。当我往 nginx 上新增 ssl 时,发现服务器上的 nginx 居然没编译 SSL 模块! 看了下旧版本 nginx 的 configure 选项: linux-gz215:# /usr/local/sbin/nginx -V nginx version: nginx/1.0.11 built by gcc 4.1.2 20070115 (prerelease) (SUSE Lin
张戈
2018/03/23
1.9K1
又拍云tokers-谈谈 nginx 信号集
昨天下午的时候,一台引流测试机器的一个 ngx_lua 服务突然出现了一些 HTTP/500 响应,从错误日志打印的堆栈来看,是不久前新发布的版本里添加的一个 Lua table 不存在,而有代码向其进行索引导致的。这令人百思不得其解,如果是版本回退导致的,那么为什么使用这个 Lua table 的代码没有被回退,偏偏定义这个 table 的代码被回退了呢?
用户2825413
2019/07/15
6680
nginx平滑升级编译headers-more模块
不想暴露某些服务器信息的时候,需要自定义response头信息,可以去修改nginx的源码,或者编译的时候,加上headers-more这个模块.
用户1168904
2021/07/20
9820
初识Nginx
Nginx提供的基本功能服务从大体上归纳为”基本HTTP服务”、“高级 HTTP服务”和”邮件服务”等三大类。
用户11097514
2024/05/31
930
初识Nginx
如何关闭nginx服务_如何启动nginx
Nginx安装完成后,接下来我们要学习的是如何启动、重启和停止Nginx的服务。对于Nginx的启停在linux系统中也有很多种方式,我们本次课程介绍两种方式:
全栈程序员站长
2022/09/22
2.8K0
如何关闭nginx服务_如何启动nginx
Nginx架构基础
Nginx其实有两种进程结构,一种是单进程结构,一种是多进程结构。单进程结构只适合我们做开发调试,在生产环境下,为了保持 Nginx 足够健壮,以及可以利用到 CPU 的多核特性,我们用到的是多进程架构的Nginx。
mazhen
2023/11/24
2320
Nginx架构基础
【Nginx】初识与环境准备
单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。
十八岁讨厌编程
2022/12/10
5310
Nginx 平滑升级
随着 Nginx 越来越流行,Nginx 的版本迭代也越来越频繁,当我们需要使用某些新版本的特性或者修复某个旧版本的 BUG 时,就要对 Nginx 进行升级。然而线上业务大多是 7*24 小时不间断运行的,我们需要在升级的时候保证不影响在线用户的访问。Nginx 的热升级功能可以解决上述问题,它允许新老版本灰度地平滑过渡,这受益于 Nginx 的多进程架构。
Se7en258
2021/07/01
1.5K0
nginx+lua学习
1. nginx+lua学习 1.1. 网关架构 1.2. nginx命令和信号控制 nginx -s stop 快速关闭,不管有没有正在处理的请求 nginx -s quit 优雅关闭方式,推出前完
老梁
2019/09/10
1.3K0
nginx+lua学习
基于centos7安装部署nginx
WEB服务器主要功能是提供网上信息浏览服务。目前我们上网浏览信息,都是由不同的web服务器提供的,企业通常都会有自己的门户网站,所以对于web服务器的掌握也是至关重用。下面我们可以熟悉下常见的web服务器有哪些。
运维朱工
2021/11/28
1.3K2
基于centos7安装部署nginx
nginx基础19
原文地址http://soft.dog/2015/10/09/nginx-basic/
franket
2022/05/12
8870
nginx基础17
使用新版本Nginx测试配置 [root@h102 sbin]# ./nginx -t -c /usr/local/nginx/conf/nginx.conf nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@h102 sbin]# 平滑替
franket
2022/05/12
2080
Nginx----安装和配置文件参数详解
Nginx(“engine x”)一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是 2004年10月4号发布的0.1.0版本。
大忽悠爱学习
2021/12/08
2.5K0
Nginx----安装和配置文件参数详解
Nginx 热部署和日志切割,你学会了吗?
上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署、切割日志文件场景来熟悉 Nginx 命令行操作。
武培轩
2019/11/04
4270
Nginx 热部署和日志切割,你学会了吗?
重识Nginx - 05 热部署_不停机更换新版本的nginx
说明: linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因
小小工匠
2022/10/04
8560
重识Nginx - 05 热部署_不停机更换新版本的nginx
相关推荐
生产环境 Nginx 在线平滑升级
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档