您的位置:首页 > 理论基础 > 计算机网络

轻量级神经网络--持续更新

2019-06-10 22:11 1921 查看

现阶段神经网络在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.Mobinenet 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.MobineNet v2:
文章作者称v1版本训练的时候会出现退化的情况,这点我不是很理解,主要创新点如下:
1.使用relu6代替relu
ReLU6 定义为:f(x) = min(max(x, 0), 6),文章解释为动态控制输出范围,可以增加模型的稳定性
2.反瓶颈的结构

resnet结构是先用1×1的卷积进行降维到原通道数的0.25,再接一个3×3的标准卷积,最后再用1×1的卷积升维到原通道数,形成两端粗,中间细的结构
Mobinenet V2先用1×1的卷积进行升维到原通道数的6倍,再接一个3×3的深度分离卷积,最后再用1×1的卷积降维到原通道数,形成两端细,中间粗的结构
原因作者解释为在通道数较少的情况下,深度分离卷积效果较差。
3.linear替代relu
作者在上面结构最后一个1×1卷积后采用的linear线性激活函数,原因是作者做实验分析在通道数较少的情况下,relu函数会破坏特征。linear函数作者并未给出,我查看了一下代码,显示是直接输出特征。
4.使用残差结构,特征复用
ResNet结构的特征复用,可以很大程度上缓解这种特征退化问题,在float16精度上效果更好
所以结构如图:
5.shufflenet V1:
。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: