当前位置:   article > 正文

《ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices》论文笔记

shufflenet: an extremely efficient convolutional neural network for mobile d

1. Introduction

       ~~~~~~       建立更深更大的卷积神经网络是解决主要视觉识别任务的主要趋势。最精确的神经网络通常有数百层和数千个频道,因此需要数十亿次浮点运算。这份报告D掉查了相反的情况:在非常有限的计算机预算中以数十或数百个微处理器追求最佳精度,重点放在普通的移动平台上,如无人机、机器人和智能手机。请注意,许多现有著作都侧重于修剪、压缩或低位表示“基本”网络体系结构。在这里,我们的目标是探索一种高效的基础架构,专门为您所需的计算范围而设计。
       ~~~~~~       我们注意到,除Xception和ResNeXt之外,最先进的基础架构在极小的网络中效率更低,因为密度 1 × 1 1×1 1×1的转换成本很高。我们提出使用逐点群卷积以降低 1 × 1 1×1 1×1卷积的计算复杂度。为了克服群卷积带来的副作用,我们提出了一种新颖的通道随机操作,以帮助信息流过特征通道。基于这两种技术,我们构建了一种高效的体系结构,称为ShuffleNet。与流行结构相比,对于给定的计算复杂性预算,我们的ShuffleNet允许更多的特征映射通道,这有助于编码更多的信息,并且对于超小型网络的性能尤为关键。
       ~~~~~~       我们根据具有挑战性的ImageNet分类和MS COCO对象检测任务评估模型。一系列受控实验显示了我们设计原则的有效性,优于其他结构的性能。与最先进的MobileNet 相比,ShuffleNet可以以相当大的幅度实现卓越的性能,例如在40个MFLOP级别上,ImageNet top-1错误绝对降低了7.8%。
       ~~~~~~       我们还研究了实际硬件(即基于ARM的现成计算核心)上的加速。 与AlexNet 相比,ShuffleNet模型可实现约13倍实际加速(理论上的18倍加速),同时保持相当的精度。

2. Related Work

Efficient Model Designs

       ~~~~~~       最近几年,深层神经网络在计算机视觉任务中取得了成功,其中模型设计起着至关重要的作用。在嵌入式设备上运行高质量深度神经网络的需求不断增长,这鼓励了对有效模型设计的研究。例如,与简单堆叠卷积层相比,GoogLeNet以较低的复杂性增加了网络的深度。SqueezeNet在保持准确性的同时,显着减少了参数和计算量。ResNet利用了有效的瓶颈结构可实现出色的性能。SENet引入了一种架构单元,可以在不增加计算成本的情况下提高性能。与我们同时,最近的一项工作运用强化学习和模型搜索来探索有效的模型设计。

Group Convolution

       ~~~~~~       群卷积的概念最早出现在AlexNet中,用于将模型分布到两个gpu上,在ResNeXt中得到了很好的证明。Xception中提出的深度可分离卷积概括了Inception系列中可分离卷积的思想。最近,MobileNet利用深度可分卷积和获得最先进的结果,获得轻量级模型。我们的工作将群卷积和深度可分卷积以一种新的形式进行了推广。

Channel Shuffle Operation

       ~~~~~~       据我们所知,在之前的高效模型设计工作中,虽然CNN library cuda-convnet支持随机稀疏卷积层,但很少提及信道随机化操作的思想,这相当于随机信道随机化之后是组卷积层。这种“随机洗牌”操作具有不同的目的,以后很少被利用。 最近,另一项并行的工作也采用了这种思想进行两阶段卷积。然而,没有专门研究信道随机化本身的有效性及其在微型模型设计中的使用。

Model Acceleration

       ~~~~~~       这个方向旨在在保持预训练模型准确性的同时加快推理速度。修剪网络连接或通道可以减少预训练模型中的冗余连接,同时保持性能。在文献中提出了量化和因式分解,以减少计算中的冗余以加速推理。在不修改参数的情况下,由FFT等方法实现的优化卷积算法在实践中降低了时间消耗。将知识从大型模型转化为小型模型,这使得小型模型的培训更加容易。

3. Approach

3.1. Channel Shuffle for Group Convolutions

现代的卷积神经网络通常由结构相同的重复构建块组成。其中,诸如Xception和ResNeXt等最先进的网络引入了有效的深度可分离卷积或将卷积分组加到构造块中,以在表示能力和计算成本之间取得出色的折衷。但是,我们注意到,两种设计都没有完全考虑1×1卷积(也称为点卷积),这需要相当大的复杂性。例如,在ResNeXt中,只有3×3层配备了组卷积。 结果,对于ResNeXt中的每个残差单元,逐点卷积占据93.4%的乘法加法。在小型网络中,昂贵的逐点卷积导致通道数量有限,以满足复杂性约束,这可能会严重影响精度。为了解决这个问题,一个直接的解决方案是在1×1层上应用通道稀疏连接,例如组卷积。通过确保每个卷积仅在相应的输入通道组上运行,组卷积显着降低了计算成本。但是,如果多个组卷积叠加在一起,就会产生一个副作用:某个通道的输出只来自一小部分输入通道。图1 (a)为两个堆叠的群卷积层的情况。显然,某个组的输出只与组内的输入相关。此属性会阻塞通道组之间的信息流并削弱表示。在这里插入图片描述
如果我们允许组卷积得到来自不同组的输入数据(如图1 (b)所示),那么输入和输出通道将是完全相关的。具体来说,对于从上一个组层生成的特征图,我们可以先将每个组中的通道划分为几个子组,然后在下一层中的每个组中使用不同的子组。 这可以通过通道随机洗牌操作有效而优雅地实现(图1(c)):假设一个具有g组的卷积层,其输出具有g×n个通道;我们首先将输出通道的尺寸调整为(g,n),进行转置,然后再变平,作为下一层的输入。 请注意,即使两个卷积具有不同数量的组,该操作仍然会生效。 而且,信道混洗也是可区分的,这意味着可以将其嵌入到网络结构中以进行端到端培训。通道混洗操作使通过多个组卷积层构建更强大的结构成为可能。 在下一个小节中,我们将介绍一个具有信道混洗和群卷积的高效网络单元。

3.2. ShuffleNet Unit

在这里插入图片描述
利用信道混洗操作的优势,我们提出了一种专门为小型网络设计的新颖的ShuffleNet unit。 我们从图2(a)中的瓶颈单元的设计原理开始,这是一个残留块。在其剩余分支中,对于3×3层,我们在瓶颈特征图上应用了计算经济的3×3深度卷积。然后,我们将第一个1×1层替换为逐点分组卷积,然后进行通道随机操作,以形成ShuffleNet unit,如图2(b)所示。第二次逐点分组卷积的目的是恢复通道尺寸以匹配捷径 。为简单起见,我们在第二个逐点层之后不应用额外的通道随机洗牌操作,因为它会产生可比的得分。 批处理归一化(BN)和非线性的用法相似,不同之处在于,在深度卷积后我们不使用ReLU。对于ShuffleNet跨步(stride)应用的情况,我们只需作两个修改(见图2(c)):(i)在快捷路径上添加3×3平均池; (ii)用通道级联替换逐元素加法,这使得在不增加额外计算成本的情况下轻松扩展通道尺寸成为可能。
利用点态群卷积和信道变换,可以有效地计算出变换单元的所有分量。与ResNet和ResNeXt相比,我们的结构在相同的设置下复杂度更低。例如,假设输入大小 c × h × w c×h×w c×h×w 需要瓶颈通道 m m m,ResNet unit要求 h w ( 2 c m + 9 m 2 ) hw(2cm+9m^{2}) hw(2cm+9m2) FLOPs 和 ResNeXt 需要 h w ( 2 c m + 9 m 2 / g ) hw(2cm+9m^{2}/g) hw(2cm+9m2/g) FLOPs,我们的ShuffleNet unit 只需要 h w ( 2 c m / g + 9 m ) hw(2cm/g+9m) hw(2cm/g+9m) FLOPs,这里的 g g g表示组卷积的个数。换句话说,给定计算预算,ShuffleNet可以使用更广泛的功能图。我们发现这对于小型网络至关重要,因为微型网络通常没有足够数量的通道来处理信息。
另外,在ShuffleNet中,深度卷积仅在瓶颈特征图上执行。 尽管深度卷积通常具有非常低的理论复杂度,但我们发现很难在低功率移动设备上有效实现,这可能是由于与其他密集操作相比计算/内存访问比更差。在ShuffleNet units中,我们故意仅在瓶颈上使用深度卷积,以尽可能避免开销。

3.3. Network Architecture

构建在ShuffleNet单元上,我们在表1中展示了整个ShuffleNet架构。该网络主要由一组打乱序列的单元组成,分为三个阶段。每个阶段的第一个构建块使用 s t r i d e = 2 stride = 2 stride=2 进行分配。一个阶段中的其他超参数保持不变,并且对于下一个阶段,输出通道将加倍。我们将每个ShuffleNet单元的瓶颈通道数设置为输出通道的1/4。我们的目的是提供尽可能简单的参考设计,尽管我们发现进一步的超参数运行可能会产生更好的结果。
在这里插入图片描述
在ShuffleNet单元中,组号 g g g 控制逐点卷积的连接稀疏性。 表1探索了不同的组号,我们调整了输出通道以确保总体计算成本大致不变(〜140 MFLOPs)。显然,对于给定的复杂度约束,较大的组数会产生更多的输出通道(因此会产生更多的卷积滤波器),这有助于对更多的信息进行编码,但由于相应的输入通道有限,这也可能导致单个卷积滤波器性能下降。在第4.1.1节中,我们将研究这个数字在不同计算条件下的影响。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/346306
推荐阅读
相关标签
  

闽ICP备14008679号