PP-LCNet: A Lightweight CPU Convolutional Neural Network

  • 提出了一个基于MKLDNN加速策略的轻量级CPU网络,命名为PP-LCNet, 它提高了轻量级模型在多任务上的性能
  • 本文列出了 可以在延迟几乎不变的情况下提高网络准确性的技术 。通过这些改进,PP-LCNet在相同的分类推理时间下,准确率可以大大超过以前的网络结构。如下图所示,它优于最先进的模型。并且对于计算机视觉的下游任务,也表现非常出色,比如物体检测、语义分割等。
  • 所有的实验都是基于PaddlePaddle实现的。PaddleClas提供代码和预训练模型。
    • 在这里插入图片描述
    • 比较不同移动系列模型的准确性-延迟。在批量大小为1且启用了MKLDNN的Intelr Xeonr Gold 6148处理器上测试的延迟,线程数量为10。
    • PP-LCNet 在同样精度的情况下,速度远超当前所有的骨架网络,最多可以有 2 倍的性能优势!它应用在比如目标检测、语义分割等任务算法上,也可以使原本的网络有大幅度的性能提升。

Introduction

  • 卷积神经网络(CNN)代表了大多数当前计算机视觉应用的主力,包括图像分类,对象检测,注意力预测,目标跟踪,动作识别,语义分割,显著对象检测和边缘检测。

  • 随着模型特征提取能力的增加以及模型参数和触发器的数量变得更大,在基于ARM架构的移动设备或基于x86架构的CPU设备上实现快速推理变得困难。在这种情况下,许多优秀的移动网络被提出,但由于MKLDNN的限制,这些网络的速度在启用MKLDNN的英特尔CPU上并不理想。

  • 在本文中,重新思考了基于Intel-CPU设计的轻量级网络模型元素。特别是,我考虑以下三个基本问题。

    • (一)如何促进网络 在不增加延迟的情况下学习更强的特征呈现
    • (二)轻量级模型在CPU上提高精度的要素有哪些。
    • (三)如何在CPU上有效组合设计轻量级模型的不同策略。
  • 本文的主要贡献是总结了一系列 在不增加推理时间的情况下提高准确率的方法 ,以及如何将这些方法结合起来以 获得更好的准确率和速度的平衡

  • 基于此,提出了几种 设计轻量级CNN的通用规则 ,并为其他研究人员在CPU设备上构建CNN提供了新的思路。此外,它可以为神经架构搜索研究人员在构建搜索空间时提供新的思路,从而更快地获得更好的模型。

  • 在这里插入图片描述

    • PP-LCNet的详细视图。虚线框代表可选模块。茎部分使用标准的3×3卷积。DepthSepConv表示深度方向可分离卷积,DW表示深度方向卷积,PW表示点方向卷积,GAP表示全局平均池。

Related Works

  • 为提高模型的能力,目前的工作通常遵循两种类型的方法。一种基于人工设计的CNN结构,另一种基于神经结构搜索(NAS)。

  • Manually-designed Architecture

    • VGG展示了一种构建非常深的网络的简单而有效的策略: 堆叠具有相同维度的块

    • GoogLeNet构造了一个Inception块,它包括4个并行操作:1×1卷积、3×3卷积、5×5卷积和max pooling。GoogLeNet让卷积神经网络足够轻便,然后越来越多更轻便的网络出现。

    • MobileNetV1用深度方向和点方向卷积代替了标准卷积,大大减少了模型的参数和FLOPs的数量。MobileNetV2的作者提出了Inverted block,进一步减少了模型的FLOPs,同时提高了模型的性能。

    • ShuffleNetV1/V2通过channel shuffle来交换信息,减少了网络结构不必要的开销。

    • GhostNet的作者提出了一种新颖的Ghost模块,可以用更少的参数生成更多的特征图,提高模型的整体性能。

      • Ghost Module是一种模型压缩的方法, 即在保证网络精度的同时减少网络参数和计算量 ,从而提升计算速度(speed),降低延时(latency)。Ghost 模块可以代替现有卷积网络中的每一个卷积层。

      • 通过对比分析ResNet-50网络第一个残差组(Residual group)输出的特征图可视化结果,发现一些特征图高度相似(如Ghost一般,下图中的三组box内的图像对)。

        • 在这里插入图片描述
        • 原论文的操作是推测CNN的强大特征提取能力和这些相似的特征图(Ghost对)正相关, 不去刻意的避免产生这种Ghost对,而是尝试利用简单的线性操作来获得更多的Ghost对。
      • Ghost Module :*分为 常规卷积、Ghost生成和特征图拼接三 *步(如下图所示):

        • 首先用常规卷积得到 本征特征图( intrinsic feature maps y i j = ϕ i , j ( y i ) , i = 1 , . . . , m ; j = 1 , . . . , s

      • 最后将第一步得到的本征特征图和第二步得到的Ghost特征图拼接(identity连接)得到最终结果OutPut。

    • 对线性操作 ϕ i , j ,以构建高效的深度神经网络。

    • 很明显,相比于直接用常规卷积,Ghost Module的计算量大幅度降低。

  • Neural Architecture Search

    • 随着GPU硬件的发展,重点已经从手动设计的架构转移到自适应地执行特定任务的系统搜索的架构。大多数NAS生成的网络使用与MobileNetV2相似的搜索空间,包括EfficientNet,MobileNetV3,FBNet,DNANet,OFANet等等。
    • MixNet提出 在一层中杂交不同内核大小的深度方向卷积 。NAS生成的网络依赖于手动生成块,如BottleNeck、Inverted-block等。本文的方法可以减少搜索空间,提高神经结构搜索的效率,并可能提高整体性能,这可以在未来的工作中进行研究。

    Approach

    • 虽然有许多轻量级网络在基于ARM的设备上推理速度很快,但很少有网络考虑到英特尔CPU上的速度,尤其是在启用MKLDNN等加速策略时。

    • 许多提高模型精度的方法在ARM设备上不会增加太多的推理时间,但是,当切换到Intel CPU设备时,情况会略有不同。这里总结了一些方法,可以在推理时间增加很少的情况下提高模型的性能。这些方法将在下面详细描述。

    • 使用MobileNetV1提到的DepthSepConv作为基本块 。这个块没有shortcuts之类的操作,所以没有concat或elementwise-add之类的额外操作,这些操作不仅会减慢模型的推理速度,而且在小模型上也不会提高精度。而且这个块经过了Intel CPU加速库的深度优化,推理速度可以超越invertedblock或者shufflenet-block等其他轻量级块。

    • 将这些块堆叠起来,形成一个类似于MobileNetV1的BaseNet。 将BaseNet和一些现有技术结合成一个更强大的网络,即PP-LCNet

    • Better activation function

      • 激活功能的好坏往往决定了网络的性能。由于网络的激活函数由Sigmoid改为ReLU,网络的性能有了很大的提高。
      • 近年来,出现了越来越多超越ReLU的激活函数。在EfficientNet使用Swish激活函数表现出更好的性能后,MobileNetV3的作者将其升级为HSwish,从而避免了大量的指数运算。此后,许多轻量级网络也使用这个激活功能。还 把BaseNet里的激活功能从ReLU换成了H-Swish 。性能有了很大的提升,而推理时间几乎没有变化。
    • SE modules at appropriate positions

      • 自提出以来,SE模块已经被大量网络使用。这个模块也帮助SENet赢得了2017 ImageNet分类比赛。它 在权衡网络通道以获得更好的功能方面做得很好 ,其速度提高版本也用于许多轻量级网络,如MobileNetV3。 然而,在Intel CPUs上,SE模块增加了推理时间,因此不能将其用于整个网络
      • 事实上,做了大量的实验, 观察到当SE模块位于网络的末端时,可以发挥更好的作用 。只需将SE模块添加到靠近网络尾部的模块中。导致了更好的精度-速度平衡。与MobileNetV3一样,SE模块的两层的激活函数分别是ReLU和HSigmoid。
    • Larger convolution kernels

      • 卷积核的大小通常会影响网络的最终性能。在MixNet中,作者分析了不同大小的卷积核对网络性能的影响,最终在网络的同一层中混合了不同大小的卷积核。
      • 但是这样的混合减缓了模型的推理速度,所以尽量在单层中只使用一种大小的卷积核,并保证在低延迟、高精度的情况下使用较大的卷积核。通过实验发现,类似于SE模块的放置,在网络的尾部只用5×5的卷积核替换3×3的卷积核,会达到替换网络几乎所有层的效果,所以只在网络的尾部做了这个替换操作。
    • Larger dimensional 1 × 1 conv layer after GAP

      • 在PP-LCNet中,GAP之后的网络输出维数很小。而直接追加最终分类层会丢失特征的组合。为了使网络具有更强的拟合能力, 在最终的GAP层之后附加了一个1280维大小的1 × 1 conv(相当于FC层),这将允许在几乎不增加推理时间的情况下存储更多的模型
    • 通过这四个变化,本文的模型在ImageNet-1k上表现良好,下表列出了与英特尔CPU上的其他轻量级模型相比的指标。

      • 在这里插入图片描述
      • 最先进的轻量级网络在分类准确性方面的比较。在批量大小为1且启用了MKLDNN的Intelr Xeonr Gold 6148处理器上测试的延迟,线程数量为10。

    Experiment

  •