轻量化网络:SqueezeNext

《SqueezeNext: Hardware-Aware Neural Network Design》
于2018年3月公开在arXiv(美[ˈɑ:rkaɪv]) :https://arxiv.org/abs/1803.10615

SqueezeNext是基于SqueezeNet进行改进的一种轻量化网络。

该论文是一篇“软硬兼并”的轻量化网络论文,以往的论文大多都只讲了网络如何设计,并没有设计硬件,而SqueezeNext还从硬件角度分析如何提速。论文的八名作者均来自Berkeley 的EECS,难怪了,CS(软)+EE(硬)

创新点:
1. block设计中,采用 two-stage bottleneck modules来减少权值参数,即采用两个1*1 的convolutions, channel_out = channel_in / 2

2. block设计中,采用Low Rank Filters ,来减少以往卷积核存在冗余现象,并且一步到位的减少权值参数(以往是训练好之后,通过低秩分解进行来减少权值参数)

3. block设计中,相对于SqueezeNet增加了 shortcut connection(PS:MobileNet-V2相较于MobileNet-V1也是多了shortcut connection)

4.通过在硬件上实验的结果发现 前面层的block的计算效率低,因而减少前面层的block数量,增加后面层的block数量。(具体往后看)

————————————————-分割线—————————————–
正文:

squeezenext 以 squeezenet为baseline,主要做了四点变化:

扫描二维码关注公众号,回复: 2557755 查看本文章

1. 通过two-stage squeeze module来减少channel,这使得参数显著减少

2.采用 separabale 3*3 convolutions来减少模型大小,并在squeeze module之后取消了1*1 convolutions

3.采用shortcut connection——ResNet经典结构

4.在multi-processor embedded system上进行实验,并通过实验结果指导网络的设计,使网络inference时速度更快

看一看 SqueezeNext 的 block
这里写图片描述

看看ResNet block 、SqueezeNet block和 SqueezeNext block对比图:
这里写图片描述
(SqueezeNet 的 是否标错了? 应该是16的?)

SqueezeNext 的设计就是不断的堆叠上述 block, 1.0 -SqueezeNext-23网络结构如下:
这里写图片描述

共计23个block,按feature map数量或通道数的变化来划分,则23个block为:Depth=[6,6,8,1]

在硬件上运行的实验之后,发现:
This increases hardware performance as early layers have poor compute efficiency
于是进行调整,得到更好的网络: 1.0-SqueezeNext-23v5 如下图:
这里写图片描述

这里解释一下 1.0-SqueezeNext-23v5 里面的数字。
1.0 用来衡量模型的 width,1.0用来作为baseline,实验中有设计1.5 ,2.0的网络进行实验;
23表示block数量;
v5表示第五个Depth版本,这里的Depth指的是block的分布,如1.0-SqueezeNext-23v5的Depth=[2,4,14,1]

至于SqueezeNext的性能请看原文吧

这里Depth的设计指导来源于硬件上实现,因此设计模型的朋友需要和硬件实现的朋友多沟通,“软硬兼施”才行。

最后抛出一个问题,请熟悉这方面知识的朋友讲解一下,谢谢!

1.文中三次提到 depth-wise convolutions在部分硬件运行效果不好,
第一次是在摘要
“ but avoids using depthwise-separable convolutions
that are inefficient on some mobile processor platforms.”

第二次是在第二小节中:
“ depth-wise separable convolution to reduce this multiplicative factor, but
this approach does not good performance on some embedded systems due to its low arithmetic intensity (ratio of compute to bandwidth).”

第三次是在第四小节中:
“ Depth-wise convolutions reduce the parameter count, but also have poor arithmetic intensity.”

请问low arithmetic intensity (ratio of compute to bandwidth) 是什么意思?如何理解?

猜你喜欢

转载自blog.csdn.net/u011995719/article/details/80588156
今日推荐