相关文章推荐
谦逊的灌汤包  ·  yarn ...·  1 年前    · 

1    引言

在过去几年中,卷积神经网络(CNN)代表了最新计算机视觉应用的工作马,包括图像分类[1,2]、目标检测[3]、注意力预测[4]、目标跟踪[5]、动作识别[6]、语义分割[7,8]、显著目标检测[9]和边缘检测[10]。

随着模型特征提取能力的增加以及模型参数和浮点数的增加,在基于ARM架构的移动设备或基于CPU设备的x86架构上实现快速推理变得困难。在这种情况下,已经提出了许多优秀的移动网络,但由于MKLDNN的局限性,在启用了MKLDNM的Intel CPU上,这些网络的速度并不理想。在本文中,我们重新思考了在Intel CPU上设计的网络的轻量级模型元素。我们特别考虑以下三个基本问题。(i) 如何促进网络在不增加延迟的情况下学习更强的功能演示。(ii)在CPU上提高轻量级模型准确性的要素是什么。(iii)如何有效地结合不同的策略来设计CPU上的轻量级模型。

我们的主要贡献是总结了一系列在不增加推理时间的情况下提高精度的方法,以及如何将这些方法结合起来以更好地平衡精度和速度。在此基础上,我们提出了一些设计轻量级CNN的一般规则,并为其他研究人员在CPU设备上构建CNN提供了新的思路。此外,它可以为神经架构搜索研究人员在构建搜索空间时提供新思路,从而更快地获得更好的模型

2    相关工作

为了提高模型的性能,当前的工作通常遵循两种方法。一种基于手动设计的CNN架构,另一种基于神经架构搜索(NAS)[11]。

手动设计的架构。

VGG[12]展示了一种简单而有效的构建深度网络的策略:堆叠具有相同维度的块。GoogLeNet[13]构造了一个初始块,它包括四个并行操作:1×1卷积、3×3卷积、5×5卷积和最大池。GoogLeNet使卷积神经网络足够轻,然后出现了越来越轻的网络。MobileNetV1[14]用深度卷积和点卷积代替标准卷积,这大大减少了模型的参数和浮点数。MobileNetV2[15]的作者提出了反向块,这进一步减少了模型的浮点运算,同时提高了模型的性能。ShuffleNetV1/V2[16][17]通过通道shuffle交换信息,这减少了网络结构不必要的开销。GhostNet的作者[18]提出了一种新的GhostNet模块,该模块可以用更少的参数生成更多的特征地图,以提高模型的整体性能。

神经架构搜索。

随着GPU硬件的发展,重点已从手动设计的体系结构转移到自适应地对特定任务执行系统搜索的体系结构。大多数NAS生成的网络使用与MobileNet v2[15]相似的搜索空间,包括EfficientNet[19]、MobileNetV3[20]、FBNet[21]、DNANet[22]、OFANet[23]等。MixNet[24]提出在一层中混合不同内核大小的深度卷积。NAS生成的网络依赖于手动生成的块,如瓶颈[25]、反向块[15]等。我们的方法可以减少搜索空间,提高神经架构搜索的搜索效率,并可能提高整体性能,这可以在未来的工作中进行研究。

3    方法

虽然有许多轻量级网络在基于ARM的设备上推理速度很快,但很少有网络考虑Intel CPU上的速度,尤其是在启用MKLDNN等加速策略时。许多提高模型精度的方法不会在ARM设备上大大增加推理时间,但是,当切换到Intel CPU设备时,情况会有所不同。在这里,我们总结了一些可以在不增加推理时间的情况下提高模型性能的方法。下面将详细描述这些方法。我们使用MobileNetV1[14]提到的DepthSepConv作为我们的基本块。该块没有快捷方式等操作,因此没有concat或elementwise add等其他操作,这些操作不仅会减慢模型的推理速度,而且不会提高小模型的准确性。此外,该块已被Intel CPU加速库深度优化,推理速度可以超过其他轻量级块,如invertedblock或shufflenet块。我们将这些块堆叠起来,形成一个类似于MobileNetV1[14]的基网。我们将BaseNet和一些现有技术结合到一个更强大的网络中,即PP LCNet。

3.1    更好的激活功能

众所周知,激活函数的质量往往决定着网络的性能。由于网络的激活功能由Sigmoid变为ReLU,网络的性能有了很大的提高。近年来,越来越多的激活函数已经出现,超越了ReLU。在EfficientNet[19]使用Swish激活函数来显示更好的性能后,MobileNetV3[20]的作者将其升级为HSwish,从而避免了大量的指数运算。从那时起,许多轻量级网络也使用此激活功能。我们还将BaseNet中的激活函数从ReLU替换为H-Swish。性能大大提高,而推理时间几乎没有变化。

3.2    适当位置的SE模块

SE模块[26]自提出以来已被大量网络使用。该模块还帮助SENet[26]赢得了2017年ImageNet[27]分类比赛。它很好地加权了网络通道以获得更好的功能,而且它的速度提升版本也用于许多轻量级网络,如MobileNetV3[20]。然而,在Intel CPU上,SE模块[26]增加了推断时间,因此我们无法将其用于整个网络。事实上,我们做了很多实验,观察到当SE模块[26]位于网络末端时,它可以发挥更好的作用。因此,我们只需将SE模块[26]添加到网络尾部附近的块中。这会产生更高精度的速度平衡。与MobileNetV3[20]一样,SE模块[26]的两层的激活函数分别为ReLU和HSIGNOID。

3.3    较大卷积核

卷积核的大小通常会影响网络的最终性能。在MixNet[24]中,作者分析了不同大小卷积核对网络性能的影响,最终在网络的同一层中混合了不同大小的卷积核。然而,这种混合会减慢模型的推理速度,因此我们尝试在单层中仅使用一种大小的卷积核,并确保在低延迟和高精度的情况下使用大卷积核。我们通过实验发现,与SE模块[26]的放置类似,在网络尾部仅用5×5卷积核替换3×3卷积核将达到替换几乎所有网络层的效果,因此我们仅在网络尾部执行此替换操作。

3.4    GAP后的较大尺寸1×1 conv层

在我们的PP LCNet中,GAP后网络的输出维数很小。直接附加最终的分类层将丢失特征的组合。为了使网络具有更强的拟合能力,我们在最终间隙层之后添加了1280维大小为1×1的conv(相当于FC层),这将允许在不增加推理时间的情况下存储更多的模型。

有了这四个变化,我们的模型在ImageNet-1k上表现良好[27],表3列出了与Intel CPU上其他轻量级模型相比的指标。

4    实验

4.1    实施细节

为了公平比较,我们使用飞浆重新实现了MobileNet v1[14]、MobileNetV2[15]、MobleNet v3[20]、ShuffleNet v2[17]、PicoDet[29]和Deeplabv3+[8]的模型。我们在4个V100 GPU上训练模型,CPU测试环境基于Intelr Xeonr Gold 6148处理器,批处理大小为1,并启用了MKLDNN。

4.2    图像分类

对于图像分类任务,我们在ImageNet-1k[27]上训练PP LCNet,其中包含128万个训练图像和1000个类的50k个验证图像。我们使用SGD优化器,权重衰减设置为3e-5(大型模型为4e-5),动量设置为0.9,批量大小为2048。学习速率根据余弦计划进行调整,用于训练360个阶段,其中有5个线性预热阶段。初始学习速率设置为0.8。在训练阶段,每个图像随机裁剪为224×224,并随机水平翻转。在评估阶段,我们首先沿短边将图像大小调整为256,然后应用大小为224×224的中心裁剪。表2显示了PP LCNet的top-1和top-5验证精度以及不同尺度的推断时间。此外,当使用SSLD[28]蒸馏方法时,可以大大提高模型的精度。表3显示了PP LCNet和最先进模型的比较。与其他轻型模型相比,PP LCNet显示出强大的竞争力。

4.3    物体检测

对于目标检测任务,表4中的所有模型都在COCO-2017[30]训练集上进行训练,训练集有80个类和118k个图像,并使用单尺度的通用COCO AP度量在COCO-2017[30]5000个图像的验证集上进行评估。我们使用由PadleDection3开发的轻量级PicoDet作为基线方法。表4显示了PP LCNet和MobileNetV3[20]作为主干的目标检测结果。整个网络用随机梯度下降法(SGD)训练146K次迭代,其中224幅图像小批量分布在4个GPU上。学习速率计划是从0.3开始的余弦,作为280个epoch的基本学习速率。权重衰减设置为1e-4,动量设置为0.9。令人印象深刻的是,PP LCNet主干与MobileNetV3[20]相比,大大提高了COCO[30]上的映射和推理速度。

4.4    语义分割

对于语义分割任务,我们还评估了PP LCNet在Cityscapes数据集[31]上的能力,该数据集包含5000幅高质量的标记图像。我们使用PaileSeg4开发的DeeplabV3+[8]作为基线方法,并将输出步幅设置为32。通过随机水平翻转、随机缩放和随机裁剪来增加数据。随机尺度包含{0.5,0.75,1.0,1.25,1.5,1.75,2.0},裁剪分辨率为1024×512。我们使用SGD优化器,初始学习速率为0.01,动量为0.9,权重衰减为4e-5。我们使用幂为0.九的多学习速率调度。所有模型都在4个V100 GPU上训练80K迭代,批大小为32。我们使用MobileNetV3[20]作为主干进行比较。如表5所示,PP-LCNet-0.5x在mIoU上的性能比MobileNetV3-large-0.5 x[20]好2.94%,但推理时间减少了53ms。与较大型号相比,PP LCNet也具有较强的性能。当使用PPLCNet-1x作为主干时,模型的mIOU比MobileNetV3-large-0.75x高1.5%,但推理时间减少了55ms。

5    结论和未来工作

我们的工作总结了一些设计轻量级Intel CPU网络的方法,这些方法可以提高模型的准确性,同时避免增加推理时间。虽然这些方法是以前工作中的现有方法,但尚未通过实验总结精度和速度之间的平衡。通过大量实验和这些方法的支持,我们提出了PPLCNet,它在大量视觉任务中表现出更强的性能,并且具有更好的精度和速度平衡。此外,这项工作减少了NAS的搜索空间,还提供了更快地访问NAS轻量级模型的可能性。未来,我们还将使用NAS获得更快、更强的机型