【论文解读】EffNet: AN EFFICIENT STRUCTURE FOR CONVOLUTIONAL NEURAL NETWORKS

题目:EffNet: AN EFFICIENT STRUCTURE FOR CONVOLUTIONAL NEURAL NETWORKS

日期:2018.6.5

链接:https://arxiv.org/abs/1801.06434v1

 

【摘要】

随着CNN在用户产品应用上不断增加,对模型能够高效运行在嵌入式,移动硬件设备上的需求也逐渐热化。模型轻量化因此变为一个热门研究话题,也涌现出如网络二值化binary networks,改进卷积层设计revised convolution layers等方向的研究。本文研究的方式是后者,即提出一种新颖的卷积块设计,能够显著减轻计算负担,且性能远胜当前的最好的模型(对比MobileNet,ShuffleNet)。我们的模型被称为:EffNet

关键词:CNN、计算高效、实时inference

【介绍】

近些年出现许多用于在小的硬件平台上做实时推断的方法研究。例如,对训练后的网络进行修剪【1】【2】【3】;

还有一种是将32bit的网络值转为二值化模型;【4】

最新的一种方式则是关注于神经元的互联性和普通卷积层vanilla convolution layers的自然特性。

普通卷积层构成核心是它的四维张量,它会在输入信号上以[h,w,Cin,Cout]的格式做扫描,因此产生四个分量上的乘法操作,导致计算基本扩了4倍。

3x3的卷积核尺寸设计目前作为一个标准卷积结构,称为很多优化方案的选择。MobileNetShuffleNet的做法是在4维tensor的不同的维度上对计算进行分离,从而来解决计算量大的问题,但这两个网络仍存在两个未解决的问题。第一个问题是,两个模型在大型网络模型上表现突出,能使模型减小以及更加高效,然而在小的网络结构中结果却不是这般。第二个问题,两个模型结构对流入网络的数据会产生较大的瓶颈,这种瓶颈在高度冗余的网络中可能被认为是无关紧要的,但如我们实验显示,它可能会对小的模型产生较大影响。而我们设计的网络能够部署大的网络结构到低容量的硬件,也能增强现有模型的效率。

【相关工作】

超参数优化,【8】提出一种CNN和SVM的贝叶斯优化框架,通过最大化增加模型精度的概率。这种方法需要初始化合适,且受限于搜索空间【10】。基于增强学习【11】的LSTM【12】来优化超参数来改进速度和精度,这类方法不受搜索空间限制,但需要额外步骤。

另一类方法是对模型进行后处理,即模型剪枝。【1】【2】【3】提出基于精度损失代价最小化的修剪算法。这类方法的问题是:开发的pipeline需要额外的阶段用于特定超参数的优化。此外,当网络结构发生变化,模型需要额外的fine-tuning.

另外一种模型后处理压缩的方式是固定点模型参数量化,即数值精度小于常规的32bit float型【14】【15】【16】,或者是直接二值化网络【4】。这类方法的问题是:尽管模型推断快了,但对比它的baseline,精度下降了较多,因此这类方法的诉求性不高。

最近与本文相似的工作,文献参考【17】【5】【6】都探寻了常规卷积操作的本质。其中包含维度级的卷积操作分离【18】。相比原始操作,FLOPs显著减少。【7】将3x3卷积分离成3x1和1x3,.【5】MobileNet做了进一步延伸,将分离用在了通道级,显著减少了FLOPs,主要计算量转到了pointwise层。最后ShuffleNet【6】通过同【9】类似的方法将pointwise层进行分组来处理pointwise层的FLOPs装载,是的精度损失相当小。

【构建块来增加模型效率】

提出的结果有助于改进之前技术的识别不足问题,且构造了一种通用的EffNet block这种合适的解决方案形式。对于有竞争力的成本要求和严格的模型大小约束需求,常常采用传统计算机视觉算法来解决特定任务的工业应用问题【20】。

Bottleneck 结构

对输入通道缩减系数8倍(即baseline中最原始输入是32通道,最后输出的256通道)。一个ShuffleNet块使用的缩减系数是4。而窄的模型没有足够的通道做大幅减少。我们实验证明精度的损失与较适度的缩减成比例。因此,我们提出瓶颈系数用2. 此外我们发现使用空间卷积是有效的(看下图),其深度乘法器为2,第一个depthwise卷积层数量也翻了一番。

Strides 和 Pooling

MobileNet和ShuffleNet的模块中depthwise空间卷积层采用的步长为2.我们实验表明这种操作有两个问题。第一个问题:我们多次实验证明与最大池化相比,stride=2有精度下降。

此外,给空间卷积层添加最大池化不允许在它缩减到输入尺寸4分之1前给数据进行编码。然而,越早的最大池化意味后续计算开销更小。为了维持早些最大池化的优势,且避免数据压缩过严重,我们提出采用可分离的池化(separable pooling)。同可分离卷积类似,首先在第一次dw 1x3的卷积后用2x1的池化核(相应的stride,我的理解是2x1,其中的1d mp指的是一维的mp操作,即1x2或2x1,而非2x2),然后是3x1的depthwise卷积,接下来是2x1xch的卷积来替代1x1xch的pointwise卷积,stride是1d的,这么做的好处是应用了池化可以减少计算量,且由避免数据压缩严重,精度下降更少。

Separable Convolutions

这个idea是文章【7】提出的,本文采取它的用连续的3x1和1x3替代3x3卷积的思想,并结合我们的可分离池化卷积核的思想。

Residual Connnections

最初由【22】提出,后被其他网络广泛应用,尤其在较深的网络中很有用。本文分析了使用这个连接对小网络中高压缩率精度损失的影响。

Group Convolutions

本文未使用,考虑精度损失的问题,尽管它在减少计算量上有很大优势。

Addressing the First Layer

MobileNet和ShuffleNet都未对第一个层做替换更改,他们认为第一个层产生的计算代价不高。我们认为每个地方的优化都有意义,在优化完其他层后,发现第一层显得有点大,我们将第一层替换成EffNet block,结果减少了约30%的计算量。

 

【EffNet 模型】

4.1 数据压缩

我们构建了个对数据压缩比较明显的网络结构来做实验。实验发现大的bottleneck对精度影响比较大,Table 1列出了在Cifar10上网络的数据维度信息。

4.2 EffNet Block

我们设计的efficient 卷积block作为基本模块来替代之前的普通卷积层,且不再局限于slim网络。将3x3的depthwise卷积分割成两个线性层,1x3和3x1. 在对第一个空间层后进行池化,为第二层减少了计算量。见Table1和图1,在第一个depthwise卷积后应用1x2最大池化核,在第二次下采样时,我们使用2x1的卷积核来替代常规的pointwise,该步操作的FLOPs可能相当,但得到的精确度更好些。

【实验】

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值