当前位置:网站首页>CV-Model [4]: MobileNet v3
CV-Model [4]: MobileNet v3
2022-08-02 03:15:00 【zzzyzh】
系列文章目录
MobileNet系列网络v1:
CV-Model【2】:MobileNet v1
MobileNet系列网络v2:
CV-Model【3】:MobileNet v2
MobileNet系列网络v3:
CV-Model【4】:MobileNet v3
前言
本文主要对论文进行解读,并解释有关MobileNetV3网络的框架部分
原论文链接:
Searching for MobileNetV3
1. Abstract & Introduction
1.1. Abstract
This paper proposes a next-generation mobile Internet based on a combination of complementary search techniques and a novel architectural design.MobileNetV3通过硬件网络架构搜索(NAS)的组合,辅以NetAdapt算法,并随后通过新颖的架构进步进行改进,从而适应移动电话CPU.
本文开始探索自动搜索算法和网络设计如何协同工作,以利用互补方法改善整体技术水平.通过这一过程,本文创建了两个新的MobileNet模型以供发布:MobileNetV3-Large和MobileNetV3-Small,They target high and low resource usage, respectively.这些模型然后被修改并应用于对象检测和语义分割的任务.
对于语义分割(或任何密集像素预测)的任务,本文提出了一种新的高效分割解码器Lite Reduced Atrous Spatial Pyramid Pooling (LR-ASPP).
MobileNetV3 参数是由NAS(network architecture search)搜索获取的,又继承的V1和V2的一些实用成果,并引人SE通道注意力机制.
1.2. Introduction
本文的目标是开发尽可能好的移动计算机视觉架构,优化移动设备上的精度和速度.为了实现这一点,本文引入了:
- 互补搜索技术,
- 适用于移动环境的新的高效非线性版本激活函数,
- 新的高效网络设计,
- 新的高效分段解码器.
MobileNetV3 首先使用 MnasNet 进行粗略结构的搜索,然后使用强化学习从一组离散的选择中选择最优配置.之后,MobileNetV3 再使用 NetAdapt 对体系结构进行微调,这体现了 NetAdapt 的补充功能,它能够以较小的降幅对未充分利用的激活通道进行调整.
MobileNetV3 的另一个新颖想法是在核心架构中加入一种名为 Squeeze-and-Excitation 的神经网络( SE-Net ).该神经网络的核心思想是通过显式地建模网络卷积特征通道之间的相互依赖关系,来提高网络所产生表示的质量.具体而言,就是通过学习来自动获取到每个特征通道的重要程度,然后依照这一结果去提升有用的特征并抑制对当前任务用处不大的特征.
需要注意的地方:
- 更新Block(bneck)
- 是有NAS搜索参数(Neural Architecture Search)
- 重新设计耗时层结构
2. Related Work
轻量化网络主要有两种方法,分别为结构优化以及人工量化,但是以上两种方法都不能保证网络能够在不同的设备上都有较优的表现,而且目前的方法大都以非直接指标(计算量/参数量)作为指导,往往与实际结果有出入.
2.1. SqueezeNet
SqueezeNet 广泛使用1 x 1卷积和挤压和扩展模块,主要关注减少参数的数量.最近的工作将重点从减少参数转移到减少操作次数(MAdds)和实际测量的等待时间.MobileNetV1 采用深度方向可分离卷积来显著提高计算效率.MobileNetV2 对此进行了扩展,引入了具有反向残差和线性瓶颈的资源高效模块.
2.2. ShuffleNet
ShuffleNet 利用组卷积和信道混洗操作来进一步减少MAdds.
2.3. CondenseNet
CondenseNet 在训练阶段学习组卷积,以保持各层之间有用的密集连接,供特征重用.
2.4. ShiftNet
ShiftNet 提出了与逐点卷积交织的移位操作,以取代昂贵的空间卷积.
2.5. NetAdapt
NetAdapt Allows users to automatically reduce a pretrained network to reach hardware resource limits,同时最大化精确度.NetAdapt 的网络优化以自动的方式进行,逐渐降低预训练网络的资源消耗,同时最大化精度.NetAdapt 不仅可以生成一个满足预算的网络,And a series of simplified networks with different degrees of compromise can be generated,从而实现动态的网络选择和进一步的研究.
NetAdapt的思想巧妙且有效,将优化目标分为多个小目标,并且将实际指标引入到优化过程中,能够自动化产生一系列平台相关的简化网络,不仅搜索速度快,而且得到简化网络在准确率和时延上都于较好的表现.
将 direct metrics(延时,能量,内存占用等等, 等等,或者是这些指标的结合)并入自适应算法,direct metrics 用 empirical measurements (实证测量)分析,这样就不用对特殊平台的细节进行了解了.在每次迭代中,NetAdapt会差生很多 network proposal 并将他们在目标平台上测量,以测量结果指导 NetAdapt 产生下一批 network proposal.
实现细节:
- 当前层选择的核数量基于经验估计来决定,逐步减少核数量并计算每个简化网络的资源消耗,选择能满足当前资源消耗约束的最大核数量.当减少当前层的核数量时,后一层的相关维度要对应修改,这个也要考虑到资源消耗计算中.
- 有很多方法来决定选择保留的核,论文采用简单 magnitude-based 方法,即选择 N 个 L2-norm 最大的核,N由上面的步骤决定.
- 在 NetAdapt 的每次迭代中,都使用相对较小的次数 (short-term) fine-tune 搜索到的简化网络来恢复准确率,这一步对于小网络而言相当重要.由于大量减少资源量,如果不这样做,网络的准确率可能会降为零,导致算法选择了错误的网络.随着算法的进行,虽然网络会持续训练,但还没到收敛的地步,所以当得到最后的一系列自适应网络后,使用较多的次数 (long-term) fine-tune 直到收敛作为最后一步.
3. Architecture
3.1. Efficient Mobile Building Blocks
- MobileNetV1 引入了深度方向可分离卷积,作为传统卷积层的有效替代.深度方向可分离卷积通过将空间滤波与特征生成机制分离来有效地分解传统卷积.深度方向可分离卷积由两个单独的层定义:用于空间滤波的轻量深度方向卷积和用于特征生成的更重的1 × 1点方向卷积.
- MobileNetV2 引入了 linear bottleneck 和 inverted residual 结构,以便通过利用问题的低秩性质来创建更高效的层结构.该结构如下图所示,由1 × 1扩展卷积、随后的深度卷积和1 × 1投影层定义.当且仅当输入和输出具有相同数量的通道时,它们用残差连接来连接.这种结构在输入和输出处保持紧凑的表示,同时在内部扩展到更高维的特征空间,以增加非线性管道变换的表达能力.
- MnasNet 通过在MobileNetV2结构的基础上,Introduce a lightweight attention module based on squeezing and excitation into the bottleneck structure,构建了MobileNetV3结构.
- 更新block
- 加入SE模块
- 更新了激活函数(ReLu6 -> NL, Hard-sigmod)
- SE模块(通道注意力机制)
- for each of the resulting feature matriceschannelDo pooling,特征矩阵channelThe number of is the number of one-dimensional vector elements obtained(Pooling is to convert the original onechannelAll elements of compress into a single point,作为通道的权重)
- The output vector is obtained through two fully connected layers
- The number of nodes in the first fully connected layer is the feature matrixchannel个数的 1/4 ,
- The number of nodes and feature matrix of the second fully connected layerchannel个数一致
- The output one-dimensional vector can be understood as,for each of the feature matriceschannel,分析出了一个权重关系
- for the more important dimensions,give greater weight
- for unimportant dimensions,assign a smaller weight
- Multiply the resulting one-dimensional weight vector with each element of the original channel,Get every element of the new channel
- 更新block
3.2. Network Search
网络搜索已经被证明是发现和优化网络架构的一个非常强大的工具.对于MobileNetV3,本文使用平台感知NAS通过优化每个网络块来搜索全局网络结构.然后,本文使用 NetAdapt 算法来搜索每层的过滤器数量.这些技术是互补的,can be combined to efficiently find an optimized model for a given hardware platform.
3.2.1. Platform-Aware NAS for Block-wise Search
类似于 Mnasnet,本文采用了一种平台感知的神经架构方法来寻找全局网络结构.由于本文使用相同的基于RNN的控制器和相同的分解式分层搜索空间,发现对于目标延迟约为80毫秒的大型移动模型,结果与 Mnasnet 相似.因此,本文简单地重用相同的 MnasNet-A1 作为本文最初的大型移动模型,然后在其上应用 NetAdapt 和其他优化.
然而,实验观察到最初的激励设计并没有针对小型移动模型进行优化.具体地,它使用多目标回报 A C C ( m ) × [ L A T ( m ) / T A R ] w ACC(m) \times [LAT (m) / TAR]^w ACC(m)×[LAT(m)/TAR]w 来近似 Pareto-optimal solutions,通过基于目标延迟TAR平衡每个模型m的模型精度 ACC(m) 和延迟 LAT(m).
- Pareto-optimal solutions
- 从定义上讲,帕累托最优描述的是一种资源最优化配置的状态.在帕累托最优的条件下,是没有办法在不让某一参与资源分配的一方利益受损的情况下,令另一方获得更大利益的.不可能再改善某些人的境况,而不使任何其他人受损.一个人得益,必然伴随着另一个人受损失.
- Pareto optimal is,Pareto improvement is no longer possible,任何能做大蛋糕的措施,在做大蛋糕之前,先会造成某一群体的蛋糕变小.
对于小模型来说,随着延迟的增加,精确度的变化更加显著;因此,需要一个更小的权重因子w = 0.15(相对于 Mnasnet 中的原始权重因子w = 0.07),In order to compensate for the greater accuracy variation under different delays化.利用这个新的权重因子w,从头开始新的架构搜索,以找到初始种子模型,然后应用 NetAdapt 和其他优化来获得最终的 MobileNetV3-Small 模型.
3.3. Network Improvements
3.3.1. Redesigning Expensive Layers
重新设计耗时层结构
- Reduce the number of convolution kernels in the first convolutional layer (32 -> 16)
- 精简 Last Stage
3.3.2. Nonlinearities
引入了一种称为swish的非线性,当用作ReLU的替代时,它显著提高了神经网络的精度.非线性定义为:
s w i s h ( x ) = x ⋅ σ ( x ) swish(x) = x \cdot \sigma(x) swish(x)=x⋅σ(x)
σ ( x ) \sigma(x) σ(x) 即sigmoid激活函数:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
但是, s w i s h ( x ) swish(x) swish(x) 具有以下缺点:
- 计算、complex
- 对量化过程不友好
- Quantization is the representation of data in lesser data bit widths,can save resources,提升性能的作用
虽然这种非线性提高了精度,但在嵌入式环境中也带来了并不是零成本,因为在移动设备上计算sigmoid函数的成本要高得多.
本文用分段线性硬模拟代替 s i g m o i d sigmoid sigmoid 函数:
R e L u 6 ( x ) = m i n ( m a x ( 0 , 6 ) , 6 ) ReLu6(x) = min(max(0, 6), 6) ReLu6(x)=min(max(0,6),6)
微小的区别是我们使用ReLU6而不是一个定制的裁剪常数
h − s i g m o i d = R e L u 6 ( x + 3 ) 6 h-sigmoid = \frac{ReLu6(x+3)}{6} h−sigmoid=6ReLu6(x+3)
The two images are compared:
使用 h − s i g m o i d h-sigmoid h−sigmoid 替换 s i g m o i d sigmoid sigmoid 函数,对应的可以得到 h − s w i s h h-swish h−swish:
h − s w i s h [ x ] = x R e L u 6 ( x + 3 ) 6 h-swish[x] = x\frac{ReLu6(x+3)}{6} h−swish[x]=x6ReLu6(x+3)
本文选择常数的动机是简单,并且与最初的平滑版本很好地匹配.在本文的实验中,发现所有这些函数的硬版本在准确性上没有明显的差异,但是从部署的角度来看有多种优势:
- ReLU6的优化实现可以在几乎所有的软件和硬件框架上使用.
- 在量化模式下,它消除了由近似sigmoid的不同实现引起的潜在数值精度损失.
- 在实践中,h-swish可以实现为分段函数,以减少存储器访问次数,从而大幅降低延迟成本.
3.4. MobileNetV3 Definition
3.4.1. MobileNetV3 - Large
当 stride = 1 且 input_c = output_c 才有shortcur连接
- 参数:
- Input:Enter the feature matrix of the current layershape
- The first layer can be thought of as having a height and width of 224的RGB图片
- Operator:Choice of convolutional layers
- 3 x 3 表示的是DwiseThe size of the convolution kernel for the convolution
- 通过Dwise卷积,channel不变
- NBN:不实用BN结构
- exp size:第一个升维的1 x 1 The target dimension of the convolution
- out:输出的特征矩阵的channel(The number of convolution kernels used by the current layer)
- SE:是否使用注意力机制
- NL:The use of nonlinear activation functions
- HS: h − s w i s h h-swish h−swish 激活函数
- RE: R e L u 6 ReLu6 ReLu6 激活函数
- s:步长
- Input:Enter the feature matrix of the current layershape
需要注意的是,第一个Bneck结构的 exp size with the input feature matrixchannel数一样,So there is no dimensional upgrade,即第一个Bneck结构中不存在1 x 1的卷积层.directly on the feature matrixDwise处理,And not in this layer eitherSE结构.
3.4.2. MobileNetV3 - Small
与 MobileNetV3 - Large The analysis of the network is consistent
总结
在本文中,介绍了MobileNetV3大型和小型模型,展示了移动分类、检测和分割的最新技术.本文已经描述了利用多种网络架构搜索算法的努力,以及网络设计的进步,以提供下一代移动模型.本文还展示了如何适应非线性,如swish,并以量化友好和有效的方式应用squeeze和excite,将它们作为有效的工具引入移动模型领域.
边栏推荐
猜你喜欢
WebShell连接工具(中国菜刀、WeBaCoo、Weevely)使用
"Paid paddling" stealthily brushes Brother Ali's face scriptures, challenges bytes three times, and finally achieves positive results
Go语学习笔记 - gorm使用 - 原生sql、命名参数、Rows、ToSQL Web框架Gin(九)
第七周复习
MySQL8 - use under Windows package installation method
MySQL8 -- use msi (graphical user interface) under Windows installation method
Redis主从、哨兵、 Cluster集群一锅端!
PHP WebShell 免杀
CentOS7安装Oracle数据库的全流程
MySQL8.0.28 installation tutorial
随机推荐
蓝鲸DevOps荣获平台类工具企业选择率第一
Double Strings (别总忘记substr)
消息队列经典十连问
两对象数组比较拿出不同值方法
Redis主从、哨兵、 Cluster集群一锅端!
一种基于行为空间的回声状态网络参数优化方法
Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
Day34 LeetCode
WebShell连接工具(中国菜刀、WeBaCoo、Weevely)使用
Tree Chain Segmentation-
MySQL8--Windows下使用压缩包安装的方法
什么是轮式里程计
7-35 城市间紧急救援 (25 分)c语言(测试点二未通过)
深度自编码网络的集成学习ICPS入侵检测模型
OperatingSystemMXBean to get system performance metrics
MySQL中根据日期进行范围查询
“带薪划水”偷刷阿里老哥的面经宝典,三次挑战字节,终成正果
知识体系树
MySQL八股文背诵版