PP-LCNet 一个轻量级的CPU卷积神经网络

论文地址:  百度飞桨https://arxiv.org/abs/2109.15099https://arxiv.org/abs/2109.15099

PP-LCNet 一个轻量级的CPU卷积神经网络_第1张图片

本文提出了一种基于MKLDNN加速策略的轻量级CPU网络,称为PP-LCNet。它提高了轻量级模型在多个任务上的性能。本文列出了在延迟几乎恒定的情况下提高网络精度的技术。通过这些改进,PP-LCNet的精度在相同的推理时间,可以大大超过以前的网络结构。 PP-LCNet 一个轻量级的CPU卷积神经网络_第2张图片

由图1可以看出,PP-LCNet 精度提升且比MobileNetV3快3倍!

现有问题:随着模型特征提取能力的增加以及模型参数和FLOPs数量的增加,在基于移动设备的ARM架构的基础上或基于CPU设备的架构上实现快速推理速度变得困难。在这种情况下,已经提出了许多优秀的移动网络,但由于MKLDNN的限制,这些网络的速度在启用了MKLDNN的IntelCPU上并不理想。

 在本文中,作者重新考虑了在intel-cpu上设计的网络的轻量级模型元素。特别是,考虑以下三个基本问题:

  1. 如何在不增加延迟的情况下促进网络学习更强的特征表示。
  2. 提高CPU上轻量级模型精度的要素是什么。
  3. 如何有效地结合不同的策略,在CPU上设计轻量级的模型。

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

网络整体结构:

PP-LCNet 一个轻量级的CPU卷积神经网络_第3张图片 具体细节: 

PP-LCNet 一个轻量级的CPU卷积神经网络_第4张图片

 如图2所示,使用MobileNetV1提到的DepthSepConv作为基本模块。这个块没有额外的连接和逐元素相加等额外的操作,这些操作不仅会降低模型的推理速度,而且不会提高小模型的精度。此外,这个块已经被英特尔CPU加速库深入优化,推理速度可以超过其他轻量级块

Better activation function
使用HSwish 激活函数。
众所周知,激活函数的质量往往决定着网络的性能。由于网络的激活函数由Sigmoid变为ReLU,网络的性能得到了很大的提高。近年来,出现了越来越多超越ReLU的激活函数。当EfficientNet使用Swish激活函数表现出更好的性能后,MobileNetV3的作者将其升级为HSwish,从而避免了大量的指数运算。从那时起,许多轻量级网络也使用这个激活函数。作者还将BaseNet中的激活函数从ReLU替换为HSwish,性能有了很大的提高,而推理时间几乎没有改变。
PP-LCNet 一个轻量级的CPU卷积神经网络_第5张图片


import torch
import torch.nn as nn
 
import torch.nn.functional as F
import math
 
class Hswish(nn.Module):
    def forward(self, x):
        out = x * F.relu6(x + 3, inplace=True) / 6
        return out

 SE modules at appropriate positions

SE模块自被提出以来已被大量的网络使用。该模块还帮助SENet赢得了2017年ImageNet级比赛。它可以很好地加权网络通道以获得更好的功能,它的速度改进版本也可以用于许多轻量级网络,如MobileNetV3。然而,在Intel cpu上,SE模块增加了推理时间,因此我们不能将其用于整个网络。事实上,我们已经做了很多实验,并观察到当SE模块位于网络的末端时,它可以发挥更好的作用。所以我们只将SE模块添加到网络末端的块中。这导致了一个更好的精度-速度平衡。

Larger convolution kernels
卷积核的大小往往会影响网络的最终性能。在MixNet中,作者分析了不同大小的卷积核对网络性能的影响,并最终在网络的同一层中混合了不同大小的卷积核。然而,这样的混合降低了模型的推理速度,所以我们尝试在单层中只使用一种大小的卷积核,并确保在低延迟和精度高的情况下使用一个大的卷积核。实验发现,类似于SE模块的位置,取代3x3卷积内核只有5x5卷积内核的末端网络将实现替换的影响几乎所有层的网络,所以只在网络的末端做了这个替换操作。
Larger dimensional 1 × 1 conv layer after GAP
在PP-LCNet中,GAP后的网络输出维数很小。直接附加最后的分类层将失去特性的组合。为了给网络一个更强的拟合能力,我们在最后的GAP层之后添加了一个1280维尺寸的1×1conv(相当于FC层),这将允许更多的模型存储,而很少增加推理时间。

 

消融实验:

PP-LCNet 一个轻量级的CPU卷积神经网络_第6张图片

 

图像分类对比:

PP-LCNet 一个轻量级的CPU卷积神经网络_第7张图片

 目标检测对比:

PP-LCNet 一个轻量级的CPU卷积神经网络_第8张图片

 语义分割对比:

PP-LCNet 一个轻量级的CPU卷积神经网络_第9张图片

 SE模块在不同位置效果:

PP-LCNet 一个轻量级的CPU卷积神经网络_第10张图片

 large-kernel 在不同位置的影响

PP-LCNet 一个轻量级的CPU卷积神经网络_第11张图片

 不同技术策略的对比:

PP-LCNet 一个轻量级的CPU卷积神经网络_第12张图片

 

你可能感兴趣的:(论文阅读,神经网络,深度学习)