【网络加速】轻量化网络结构设计[一]

轻量化网络结构设计

前言:

网络加速作为算法的下游核心,那么为什么要网络加速?对应又有那么操作点?我们先来个概况性的框架。我建议学习新知识或总结归纳知识的时候,一定要有个总分总逻辑性的学习过程。

1、神经网络 Over-Parameterized

• 轻量化网络结构设计
• 蒸馏
• 低秩分解等

2、训练好的神经网络参数冗余

• 剪枝
• 蒸馏

3、推理运算需要加速

• 定点化

• TensorRT

轻量化网络结构设计[一]

1、MobileNet v1

《MobileNetv1: Efficient Convolutional Neural Networks for Mobile Vision Applications》

论文下载:
公众号回复:MobileNet v1

这是2017年由谷歌提出,至今引用量 7000+,这引用量,我没认真统计过哈,应该前十是排的上的吧,所以这篇17年的文章不要觉得过时,经典性的文章,或许有些技巧不怎么用了,但是核心思想!!核心思想一定是可以推敲学习的。

1.1 核心思想

  • 深度可分离卷积,降低网络参数量。

1.1.1 什么是深度可分离卷积?(Depthwise Separable Convolution,DSC)

DSC包含两部分:depthwise convolution(DWC)+ pointwise convolution(PWC)。DWC对输入的通道进行滤波,其不增加通道的数量,PWC用于将PWC不同的通道进行连接,其可以增加通道的数量。通过这种分解的方式,可以明显的减少计算量。

如下图所示,传统的卷积(a),卷积核参数为DK⋅DK⋅M⋅NDK⋅DK⋅M⋅N,其中DKDK为卷积核大小,M为输入的通道数,N为输出的通道数。DWC(b)中卷积核参数为DK⋅DK⋅1⋅MDK⋅DK⋅1⋅M,其中M个DK⋅DKDK⋅DK的核和输入特征的对应通道进行卷积,如下式所示。PWC(c)中卷积核参数为1⋅1⋅M⋅N1⋅1⋅M⋅N,每个卷积核在特征维度上分别对输入的M个特征进行加权,最终得到N个特征(M≠N时,完成了升维或者降维)。

Gk,l,m=∑i,jKk,l,m⋅Fk+i−1,l+j−1,mGk,l,m=∑i,jKk,l,m⋅Fk+i−1,l+j−1,m
在这里插入图片描述

  • 传统卷积的计算量为:

DK⋅DK⋅M⋅N⋅DF⋅DFDK⋅DK⋅M⋅N⋅DF⋅DF

  • DSC总共的计算量为:

DK⋅DK⋅M⋅DF⋅DF+M⋅N⋅DF⋅DFDK⋅DK⋅M⋅DF⋅DF+M⋅N⋅DF⋅DF

当使用3*3的卷积核时,DSC可将计算量降低为原来的1/8到1/9。

需要说明的是,DWC,PWC后面均有BN和ReLU。如下图所示,传统的卷积层为33conv+BN+ReLU,Depthwise Separable convolutions为33DWC+BN+ReLU+1*1conv+BN+ReLU。
在这里插入图片描述

1.1.2 特别的1x1

1x1的卷积,它的im2col非常特殊——其原始存储结构跟im2col的重排列矩阵是完全相同的!也就是说,1x1卷积甚至不需要im2col的过程,拿起来就能直接算,节省了数据重排列的时间和空间,所以哪怕是在相同FLOPs的前提下,1x1卷积也要比3x3卷积快速、高效得多。

当然,这是建立在局部性原理和冯诺依曼结构的基础之上,对于非冯结构的计算体系可能就不适用了。

这也是为什么MobileNet在论文最后要强调说他94.86%的运算量都集中1x1的卷积运算上,它的快速可不仅仅体现在“少参数,少运算量”上!

1.2 网络结构

mobileNetV1的网络结构如下图所示。其中第一个卷积层为传统的卷积;前面的卷积层均有bn和relu,最后一个全连接层只有BN,无ReLU。

在这里插入图片描述

1.3 宽度缩放因子(width multiplier)

文中引入了α作为宽度缩放因子,其作用是在整体上对网络的每一层维度(特征数量)进行瘦身。α影响模型的参数数量及前向计算时的乘加次数。此时网络每一层的输入为αMαM维,输出为αNαN维。此时DSC的计算量变为:

DK⋅DK⋅αM⋅DF⋅DF+αM⋅αN⋅DF⋅DFDK⋅DK⋅αM⋅DF⋅DF+αM⋅αN⋅DF⋅DF

α∈(0,1],典型值为1,0.75,0.5,0.25。

1.4 分辨率缩放因子(resolution multiplier)

该因子即为ρ,用于降低输入图像的分辨率(如将224224降低到192192,160160,128128)。

此时DSC的计算量变为:

DK⋅DK⋅αM⋅ρDF⋅ρDF+αM⋅αN⋅ρDF⋅ρDF

在这里插入图片描述

1.5 效果如何?

在一系列视觉任务如ImageNet分类、细粒度分类、目标检测等等上,显著降低模型大小的同时也取得了不错的效果。
在这里插入图片描述
在这里插入图片描述

1.6 还存在什么问题?

1.6.1 MobileNet v1的结构过于简单,是类似于VGG的直筒结构,导致这个网络的性价比其实不高。如果引入后续的一系列ResNet、DenseNet等结构(复用图像特征,添加shortcuts)可以大幅提升网络的性能。

1.6.2 Depthwise Convolution存在潜在问题,训练后部分kernel的权值为0。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值