轻量级网络

MobileNet v1(2017)

论文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
代码实现:
tensorflow:https://github.com/tensorflow/models/blob/master/slim/nets/mobilenet_v1.md
caffe: https://github.com/shicai/MobileNet-Caffe

摘要

这篇论文是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络,取名为MobileNet。MobileNet模型的核心就是将原本标准的卷积操作因式分解成一个depthwise convolution和一个1*1的pointwise convolution操作。简单讲就是将原来一个卷积层分成两个卷积层,其中前面一个卷积层的每个filter都分别只跟input的对应一个channel进行卷积,然后后面一个卷积层则负责combining,即将上一层卷积的结果进行信息合并糅合。

模型结构

MobileNets模型基于深度可分解的卷积,它可以将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核)。深度卷积将每个卷积核应用到每一个通道,而1 × 1卷积用来组合通道卷积的输出。后文证明,这种分解可以有效减少计算量,降低模型大小。在这里插入图片描述

depthwise convolution:

比如输入的图片是DkDkM(Dk是图片大小,M是输入的渠道数),那么有M个DwDw的卷积核,分别去跟M个渠道进行单独卷积,输出DfDf*M结果

pointwise convolution:

对DfDfM进行卷积合并,有11N的卷积核,进行常规卷积,输出DfDfN的结果。
上面经过这两个卷积操作,从一个DkDkM=>DfDfN,相当于用DwDwN的卷积核进行常规卷积的结果,但计算量从原来的DFDFDKDKMN减少为DFDFDKDKM+DFDFMN。

引入超参数

宽度乘数:为了构建更小和更少计算量的网络,作者引入了宽度乘数 ,作用是改变输入输出通道数,减少特征图数量,让网络变瘦。
分辨率乘数:分辨率乘数用来改变输入数据层的分辨率,同样也能减少参数。

模型训练

MobileNets结构建立在上述深度可分解卷积中(只有第一层是标准卷积)。该网络允许我们探索网络拓扑,找到一个适合的良好网络。除了最后的全连接层,所有层后面跟了batchnorm和ReLU,最终输入到softmax进行分类。按照作者的计算方法,MobileNets总共28层(1 + 2 × 13 + 1 = 28)。
在这里插入图片描述

MobileNet v2(2018)

论文:Inverted Residuals and Linear Bottlenecks Mobile Networks for Classification, Detection and Segmentation
代码实现:
https://github.com/bubbliiiing/classic-convolution-network/blob/master/mobilenetV2.py

MobileNetV2是MobileNet的升级版,它具有两个特征点:
(1) Inverted residuals,在ResNet50里我们认识到一个结构,bottleneck design结构,在3x3网络结构前利用1x1卷积降维,在3x3网络结构后,利用1x1卷积升维,相比直接使用3x3网络卷积效果更好,参数更少,先进行压缩,再进行扩张。而在MobileNetV2网络部分,其采用Inverted residuals结构,在3x3网络结构前利用1x1卷积升维,在3x3网络结构后,利用1x1卷积降维,先进行扩张,再进行压缩。

(2) Linear bottlenecks,为了避免Relu对特征的破坏,在在3x3网络结构前利用1x1卷积升维,在3x3网络结构后,再利用1x1卷积降维后,不再进行Relu6层,直接进行残差网络的加法。

ShuffleNet v1(2017)

论文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
开源代码增加自定义layer(caffe版本):https://github.com/farmingyard/ShuffleNet
开源代码(tensorflow版本):https://github.com/MG2033/ShuffleNet

现代卷积神经网络的绝大多数计算量集中在卷积操作上,因此高效的卷积层设计是减少网络复杂度的关键。其中,稀疏连接(sparse connection)是提高卷积运算效率的有效途径,当前不少优秀的卷积模型均沿用了这一思路。例如,谷歌的”Xception“网络引入了”深度可分离卷积”的概念,将普通的卷积运算拆分成逐通道卷积(depthwise convolution)和逐点卷积(pointwise convolution)两部进行,有效地减少了计算量和参数量;而Facebook的“ResNeXt”网络则首先使用逐点卷积减少输入特征的通道数,再利用计算量较小的分组卷积(group convolution)结构取代原有的卷积运算,同样可以减少整体的计算复杂度。

创新点

(1) pointwise group convolutions (逐点群卷积):现有模型中,1x1卷积浪费很多的资源,成为运算的瓶颈,group卷积用来解决这个问题。降低计算复杂度。

Group卷积的缺点:某个通道输出仅从一小部分输入通道中导出,降低了通道组之间的信息流通,降低了信息表示能力。并且,学习到的特征也比较局限。

(2) channel shuffle:通道混洗:消除group卷积带来的副作用。

示意图

在这里插入图片描述

网络结构

在这里插入图片描述
(a) 是ResNet中的bottleneck unit,不过将原来的3×3 Conv改成3×3 DWConv;
(b)首先用带group的1×1卷积代替原来的1×1卷积,同时跟一个channel shuffle操作,这个前面也介绍过了。然后是3×3 DWConv表示depthwise separable convolution;
(c)添加了一个Average pooling和设置了stride=2,另外采用concat的操作,也就是按channel合并。

ShuffleNet v2(2018)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值