轻量级神经网络总结(1)- SqueezeNet - Xception- MobileNet v1/v2 - ShuffleNet V1/V2 - MixNet

现阶段神经网络在GPU上运行速度已经可以达到实时性要求,但是移植到手机端或者在CPU上运行还存在运行速度的问题。网络优化加速主要包含:1.设计轻量级的网络;2.网络模型压缩剪枝;3.其他的一些量化加速。这里主要是记录轻量级的神经网络(与模型压缩有着本质性的区别):

1.SqueezeNet:

发表于ICLR-2017,它在ImageNet上实现了和AlexNet相同的正确率,但是只使用了1/50的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到0.5MB,这是AlexNet的1/510。
思想比较简单,主要包含squeeze层和expand层:squeeze层通过1×1的卷积核减少输入通道的数量;expand层中,把1×1 和3×3 得到的feature map进行concat,以得到不同尺寸的卷积特征,如图
在这里插入图片描述

2.Xception:

Xception是Extreme Inception的意思,主要是对 inception的改进,提出了depthwise separable convolution来代替常规卷积操作。

(1)inception v3:

在这里插入图片描述

(2)depthwise separable convolution:

在这里插入图片描述
这里的depthwise separable convolution与Mobinenet中的深度分离卷积的区别就是:顺序不同,这里是先进行1*1卷积,再进行channel wise的分离卷积操作,最后进行concat

3.Mobilenet V1:

最大的创新点是将常规卷积层换成了深度分离卷积,大大的减少了计算量,具体深度分离卷积如图:
在这里插入图片描述
常规卷积:H×W×M—>N个K×K×M—>H×W×N,计算量为H×W×K×K×M×N

深度分离卷积为:H×W×M—>M个K×K×1(相当于每个卷积核只负责一个通道,然后M个通道卷积后concat)—>H×W×M—>N个1×1×K—>H×W×N,计算量为H×W×M×K×K+H×W×K×N

网络结构如图:
在这里插入图片描述
主要由DW3×3+1×1conv组合,用DW3×3/S=2代替max pooling下采样。

4.MobileNet v2:

文章作者称v1版本训练的时候会出现退化的情况,这点我不是很理解,主要创新点如下:

1.使用relu6代替relu:
ReLU6 定义为:f(x) = min(max(x, 0), 6),文章解释为动态控制输出范围,可以增加模型的稳定性

2.反瓶颈的结构:
在这里插入图片描述
resnet结构是先用1×1的卷积进行降维到原通道数的0.25,再接一个3×3的标准卷积,最后再用1×1的卷积升维到原通道数,形成两端粗,中间细的结构;
Mobilenet V2先用1×1的卷积进行升维到原通道数的6倍,再接一个3×3的深度分离卷积,最后再用1×1的卷积降维到原通道数,形成两端细,中间粗的结构
原因作者解释为在通道数较少的情况下,深度分离卷积效果较差。

3.linear替代relu:
作者在上面结构最后一个1×1卷积后采用的linear线性激活函数,原因是作者做实验分析在通道数较少的情况下,relu函数会破坏特征。linear函数作者并未给出,我查看了一下代码,显示是直接输出特征。

4.使用残差结构,特征复用
ResNet结构的特征复用,可以很大程度上缓解这种特征退化问题,在float16精度上效果更好
所以结构如图:
在这里插入图片描述

5.shufflenet V1:

在这里插入图片描述
作者首先分析了分组卷积的优缺点,其优点就是可以有效降低卷积层的计算量和参数量。缺点是分组卷积的各个分支之间是相对封闭的,存在互相之间通信不畅的问题。

在这里插入图片描述
ShuffleNet的核心是采用了两种操作:pointwise group convolution和channel shuffle,这在保持精度的同时大大降低了模型的计算量。具体残差结构如上图(b)所示:
1).先使用1 * 1分组卷积代替1 * 1常规卷积
2).channel shuffle对分组卷积分支之间进行通信
3).3 * 3 DWConv + 1 * 1分组卷积
4).残差相加

6.shuffleNetV2:

作者通过大量实验,分析出来四个构建轻量级网络的指导原则:
1).同等通道大小最小化内存访问
2).分组卷积数目过多会增加MAC
3).网络碎片化会降低并行度
4).不能忽略元素级操作
在这里插入图片描述
作者设计结构如c图所示,其中具体操作:

  1. 对输入进行channel split,保证了卷积输入输出通道数一致,这点对应了原则1);
  2. 1 * 1常规卷积替换V1中的1 * 1分组卷积,对应了原则2);
  3. 最后对分离的通道进行Concat操作,对应了原则4)

7.MixNet:
在这里插入图片描述
作者首先在MobileNet上做了卷积核大小的实验,发现了大尺寸的卷积核效果比3 * 3更好
在这里插入图片描述
因此本文设计了一个混合不同大小卷积操作,具体来说,对输入通道进行分组,分别使用不同组合的卷积进行特征提取,降低了参数量的同时,提升了性能。

  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值