AI学习者 · 2022年03月21日

ShuffleNetV2参数和FLOPs降低,性能却提升,简单暴力有效!

image.png

本文基于ShuffleNetV2构建了一个更强大、更高效的模型族,称为Aug-ShuffleNets,通过引入更高频率的跨层信息通信来获得更好的模型性能。在CIFAR-10和CIFAR-100数据集上进行评估,CIFAR在准确性方面始终优于CIFAR2,计算成本更少,参数计数更少。

1简介

随着AlexNet的成功,卷积神经网络在各种视觉任务和语义分割等图像分类、目标检测中占主导地位。典型的模型包括VGG、GoogleNet、ResNet都取得了显著的性能。然而,精度的提高通常需要将网络扩展到每一层以上或更多的通道,导致计算成本和参数的增加。

近年来,许多基于CNN的实时应用程序被部署在资源有限的平台上,如传感器和智能手机,这要求CNN模型的计算效率和快速响应。如何设计高效的模型已成为一个重要的研究课题。

许多努力都致力于提高 ConvNets的效率。目前,主要有2种具有代表性的方案:模型压缩和紧凑型模型设计。

  • 模型压缩:目的是通过剪枝、量化、低秩等方法来减少模型的冗余,而不导致性能的显著退化。然而,模型性能的上限往往是由预训练好的网络决定。
  • 紧凑型模型设计:建立从零开始训练的紧凑模型。典型的实例,如MobileNetV1-V3和ShuffleNetV1-V2,利用高效的操作符、构建块或网络架构搜索算法,为紧凑的模型设计提供了重要的方案。

在本文中,作者回顾了ShuffleNetV2中构建块的设计,并设计了一个更高效、更强大的CNN模型,AugShuffleNet。

2相关方法

2.1 紧凑型设计

有学者提出了低秩(1×3,3×1)滤波器或稀疏滤波器来近似密集卷积滤波器。这些工作表明,较少的冗余滤波器可以在保持模型性能的同时大幅减少FLOPs和参数。Group卷积已被视为现代紧凑模型中的一个标准算子。深度卷积是Group卷积的一种极端形式,其中每个通道呈现一个Group。

ShuffleNet使用Group卷积代替1×1卷积,并进一步介绍了“Channel Shuffle”的操作,以改善跨Group信息通信。

MobilenetV1利用深度卷积和点卷积为移动平台构建了一个轻量级的模型。

ResNet和MobileNetV2采用了bottleneck结构,以减轻通道扩展的繁重计算负担。MobileNetV3等工作将神经体系结构搜索算法引入到紧凑的模型设计中,显著降低了人工设计的成本。

2.2 模型压缩

基于紧凑的模型设计,模型压缩是另一种进一步缩小预训练模型的方法。网络修剪删除了冗余的和非信息性的连接或通道。模型量化的目标是以低成本的权重表示模型压缩和计算加速。知识蒸馏将精炼的知识从“教师网络”转移到“学生网络”,简化了抑制冗余信息的过程。此外,作者还探索了FFT和winograd等高效的卷积算法,以在不修改网络设计的情况下加快卷积层的实现。

2.3 Short Connection

ResNets和Highway Networks引入了Short Connection,以允许训练更深层次的神经网络。

具有随机深度的深度网络通过随机skip layers来降低ResNets的训练深度。SkipNet进一步利用门控机制机制来学习如何训练和推理过程的skip layers。

ResNet提出的残差连接一直是构建视觉和自然语言处理领域深度神经网络的一种流行技术。有研究将ResNet视为多个不同长度路径的集合,发现在训练过程中,深度ResNet主要通过ShortCut更新权值。

DenseNet通过将每一层连接到网络中的每一层来引入密集的连接,以增加更短的路径。

Shufflenet v2结合了“Channel Split”和“Channel Shuffle”操作来实现跨层信息通信,从而产生了与DenseNet类似的效果。所有这些工作都受益于通过短路径来缓解训练过程中的“梯度消失”问题。

3本文方法

为此,作者引入了2个全局超参数:communication frequencysplit ratio更高的communication frequency可以利用更多来自神经层的中间信息增加更多的short connections。利用split ratio来调整推理网络的计算代价。

3.1 重新思考ShuffleNetV2中的Shuffle Block

image.png

Shuffle Block

与普通的网络不同,ShufflenetV2不使用残余连接,并采用split-transform-fuse策略,在模型设计中权衡效率和性能。如图1a所示,ShuffleNetV2中Shuffle Block的整个流程可以分为3个阶段:

1、Split

特征映射的通道被分为2部分。一部分保存为原始状态不进行操作(conserved),另一部分是输入到High-level信息的转换阶段。请注意,本文将conserved部分命名为 "Feature Bank"。

“Feature Bank”中的特征映射的数量由参数分割率决定。可以看出,在ShuffleNetV2中,split ratio是一个固定的参数0.5。

2、Transform

Transform阶段由3层组成:1×1卷积,3×3深度卷积和1×1卷积,作为一个可学习的“特征提取器”。

3、Fuse

Transform完成后,特征映射来自于"Feature Bank",Transform阶段将通过沿着通道级维度的连接来进行合并。然后,这些合并后的通道将以一种交错的方式重新排列,这称为“Channel Shuffle”。“Channel Shuffle”可以实现2个分支之间的信息通信。

ShuffleNetV2的成功可能在于它使用了“Feature Bank”来控制不同层之间的信息通信。本质上,“Feature Bank”可以被视为存储特征映射的辅助存储组件。

“Channel Split”和“Channel Shuffle”是“Feature Bank”和“特征提取器”之间的2种主要交互操作,以实现跨层信息通信。浅层的部分通道可以在“Feature Bank”中conserved,并周期性地融合到网络的深层,在DenseNet中实现类似的特征重用效果。

3.2 改进ShuffleNet操作

受益于“Channel Split”和“Channel Shuffle”操作的“Feature Bank”,ShuffleNetV2显示了性能和效率之间的表现平衡。但是,作者注意到,还有更好的空间是可以取得平衡的:

  • 对于ShuffleNetV2,信息通信仅限于通过“Channel Shuffle”操作的Shuffle Block输出。来自第1层和第2层Shuffle Block的中间信息没有得到很好的利用。
  • 在ShuffleNetV2中,在Transform阶段保持每一层相同的通道数量并不是最低内存访问成本的绝对原则。当网络的宽度增加时,ShuffleNetv2中的Shuffle Block仍然会产生更多的通道冗余。

image.png

Shuffle block of this paper

因此作者提出了另一个更强大和更高效的Shuffle Block,如图1b所示。与1a中所示的原始Shuffle Block相比,本文进行了以下修改:

  • 将分割比r作为变量,可以灵活调整输入“特征提取器”的通道数,从计算成本、参数消耗和推理速度等方面进一步控制整个构建块的效率。为简单起见,第1层和第2层(1×1卷积和3×3深度卷积)保持了输入和输出的相同数量的通道数。
  • 引入了另一个被称为“Channel Crossover”的操作,以在深度卷积层之后交换信息。Channel Crossover将部分新特征映射存入“特征库”,提取更多的旧特征映射,在没有计算成本的情况下实现通道级扩展。通过添加中间层与“特征库”之间的交互机制,充分利用了信息。

通过以上的改进,模型的效率得到了提高率,使模型获得了更好的表征能力。当r<0.5时,Shuffle Block中的第一层和第二层将比原来的Shuffle Block更有效。

4模型设计

image.png

5实验

image.png

image.png

6参考

[1].AUGSHUFFLENET: IMPROVE SHUFFLENETV2 WITH MORE INFORMATION COMMUNICATION

原文:集智书童

推荐阅读

推荐阅读
关注数
16730
内容数
1233
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息