为什么需要轻量网络?
经典backbone网络存在的问题
- 尽管随着近年来backbone网络的快速发展,由AlexNet到VGG,由VGG到GoogleNet,由GoogleNet到ResNet等等。模型的精度越来越高,
- 但是通常模型占用内存很大,模型参数很多,这样的话在边缘设备上运行就会很慢。
- 所以我们需要设计一些参数量更少的网络结构,这样的模型占用内存小,在边缘设备上跑的更快。
怎么解决这个问题
1. 网络压缩
2. 轻量网络的设计
本Review只是讨论轻量网络的设计
- 轻量网络设计的发展历程,我们按照提出的时间可以分为3个版本
(1)Version 1, 【2016-2017】,SqueezeNet–> MobileNet –> ShuffleNet –> Xception
(2)Version 2, 【2017-2018】,SqueezeNext–> MobileNetV2 –> ShuffleNetV2
(3)Version 3, 【2018-2019】,AutoShuffleNet–> MobileNetV3 - 这里我们总结一下5个轻量网络,SqueezeNet,MobileNet,ShuffleNet,MobileNetV2,ShuffleNetV2
SqueezeNet
- 核心思想
a. 用更多的1*1卷积核替代3*3卷积核的使用,因为1*1卷积核可以在保output=input的同时减少了通道数
b. 在3*3卷积核中用更少的通道数,这样直接减少了模型的参数
c. 延迟下采样 - 模块化卷积fire module
- fire module包含2个部分:Squeeze Layer和Expend Layer。
- Squeeze Layer直接用1*1降低了通道数并保持output=input
- Expend Layer是1*1卷积和3*3卷积的混合使用
- 实验结果
- SqueezeNet的参数比AlexNet少50x,但是模型性能(accuracy)与AlexNet结晶。
MobileNet
- 核心思想,深度可分离卷积结构 depthwise separable convolution
- 深度可分离卷积是把一个传统卷积层分解成了2个卷积层,depthwise -wise和point-wise convolutiion.
- depthwise -wise卷积是单独在通道上做的卷积,是分组卷积中groups=channels的极端情况。
- point-wise卷积是用1*1卷积核连接通道之间的特征信息。
- 可以计算参数如下
- 结构图如下
- 实验结果
- 深度可分离卷积实现了和传统卷积相同的输入和输出操作,在保证准确率的条件下,但是计算参数量减少约为原来的1/7,计算时间减少约为原来的1/9。
MobileNetV2
- 核心思想,Inverted Residuals & Linear Bottlenecks
首先说一下ResNet中的Residual block的思想,就是在进行3*3卷积之前,插入1*1卷积进行通道数的“压缩”,在3*3卷积之后又插入1*1卷积进行通道数的“扩张”(input~=output)。
而Inverted Residuals则是反了过来,先用1*1卷积进行通道数的“扩张”,然后经过3*3的depthwise separable convolution,最后插入1*1卷积进行通道数的“压缩”(input~=output).
Linear Bottlenecks,original bottlenecks是在卷积层之后做elwise + Relu,而linear bottlenecks则是elwise + withou relu。原因是本来参数量不多的情况下,如果用relu让负半轴为0,那么模型的学习能力就更有限了,所以直接删除relu。
利用stride=2的卷积层做下采样。结构图如下
ShuffleNet
- 核心思想,用1*1Group Conv做channel shuffle。
- shuffle unit
ShuffleNetV2
- 核心思想,Time = T(FLOPS) + T(I/O)。
- 提出了4个指导原则,
a, 当input channel=output channel,卷积计算所需的MAC(memory access cost)最为节省。
b, 过多的group convolution操作会加大MAC开销。
c, 网络结构整体的碎片化会减少其可并行优化的程序。
d, Else-wise操作小号的时间较多。
Summary
- 实践中,首选是ShuffleNet-V2/MobileNet-V2,第二选择是MoblileNet
References
SqueezeNet https://arxiv.org/abs/1602.07360
MobileNet https://arxiv.org/abs/1704.04861
ShuffleNet https://arxiv.org/abs/1707.01083
MobileNetV2 https://arxiv.org/abs/1801.04381
ShuffleNetV2 https://arxiv.org/abs/1807.11164
Resnet https://arxiv.org/abs/1512.03385
SqueezeNet
https://zhuanlan.zhihu.com/p/31558773
https://blog.csdn.net/csdnldp/article/details/78648543
MobileNet
https://www.cnblogs.com/adong7639/p/7918527.html
MobileNetV2
https://blog.csdn.net/u011995719/article/details/79135818
ShuffleNetV2
https://www.jianshu.com/p/71e32918ea0a
- 本文标题:Review on 轻量级卷积神经网络的设计
- 创建时间:2019-11-17 12:54:30
- 本文链接:2019/11/17/ML/light-framework-for-CNN/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!