天天看点

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

作者:机器之心Pro

机器心发布

机器编辑部门的核心

PP-LCNet可以比当前所有骨架网络快2倍,精度相同!

算法速度优化遇到瓶颈,不能满足要求?没有高性能硬件的应用程序环境只有CPU?

你有没有直接戳破开发者的痛点!莫恐慌,今天小编为成千上万的开发者打破了游戏。

突破点是:PP-LCNet,一个为CPU设备和加速库MKLDNN量身定制的骨干网络!

空的,如上图所示!

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

从上图可以看出,PP-LCNet可以比当前所有骨架网络快2倍,精度相同!它应用于目标检测和语义分割等任务算法,也可以使原始网络有实质性的性能提升。

而这种PP-LCNet纸的发布和代码开源,也吸引了众多行业开发者的目光,从各行各业到PP-LCNet在YOLO系列算法中的应用也带来了可观的性能提升。

这时不是小伙伴已经不耐烦也想直接试试了?!

小编辑很快被派去打开源代码门户。大家要星光收藏,以免丢失,也要给开源社区一些认可和鼓励。

地址: https://github.com/PaddlePaddle/PaddleClas

这款PP-LCNet究竟是如何设计来提供如此良好的性能的?这里有一些编辑,可以带你完成:

PP-LCNet核心技术解读

近年来,涌现出许多轻量级骨干网,各种 NAS 搜索的网络尤为抢眼。但这些算法的优化脱离了业界最常用的Intel CPU设备环境,加速往往出乎意料。基于这一行业形势,百度的桨图像分类套件PaddleClas为英特尔CPU及其加速库MKLDNN定制了独特的高性能骨干网PP-LCNet。与其他轻量级SOTA模型相比,该骨干网可以在不增加推理时间的情况下进一步提高模型的性能,最终显著超越现有的SOTA模型。

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

PP-LCNet的整体网络结构如上图所示。我们发现,在基于英特尔 CPU 的设备上,尤其是在启用 MKLDNN 加速库时,许多看似耗时较少的操作(如逐元素添加操作、拆分连接结构等)会增加延迟。因此,最终我们选择了尽可能薄和快速的块网来形成我们的BaseNet(类似于MobileNetV1)。基于 BaseNet,我们进行了实验,总结了四种几乎增加了延迟但提高了模型准确性的方法,下面有四种策略进行了更详细的描述:

更好的激活功能

由于卷积神经网络使用 ReLU 激活函数,因此网络性能显著提高。近年来,ReLU激活函数的变化也出现了,例如Leaky-ReLU,P-ReLU,ELU等。2017年,谷歌的大脑团队通过搜索获得了swish激活功能,该功能在轻量级网络上表现良好。2019年,MobileNetV3的作者进一步优化了H-Swish的激活功能,该功能消除了指数操作,速度更快,几乎不受影响的网络准确性。我们还发现激活函数在轻量级网络上表现良好。因此,在PP-LCNet中,我们选择了这个激活函数。

在适当的位置添加 SE 模块

SE模块是SENet提出的一种通道注意机制,用于有效提高模型的准确性。但在Intel CPU方面,模块也带来了很大的延迟,如何平衡精度和速度是我们必须解决的问题。尽管在基于 NAS 的网络(如 MobileNetV3)中搜索了 SE 模块的位置,但尚未得出一般结论。我们发现,SE模块越靠近网络尾部,模型精度的提高就越大。下表还显示了我们的一些实验结果:

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

最后,SE 模块在 PP-LCNet 中的位置为表中的第三行选择方案。

更大的卷积内核

在MixNet的论文中,作者分析了卷积磁芯大小对模型性能的影响,并得出结论,大卷积磁芯可以在一定范围内提高模型的性能,但超过这个范围会损害模型的性能,因此作者结合了split-concat范式的mixconv,可以提高模型的性能, 但不利于推理。我们总结了一些较大的卷积核心在不同位置的作用,类似于SE模块的位置,较大的卷积核心在网络的中央和后部功能更为明显,下表显示了5x5卷积核心位置对精度的影响:

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

实验表明,较大的卷积核心可以放置在网络的中间和后部,以达到所有位置的精度,同时获得更快的推理速度。PP-LCNet最终选择了表格的第三行。

间隙跟随使用更大的1x1卷积层

在GoogLeNet之后,GAP倾向于直接连接到分类层,但在轻量级网络中,这导致GAP之后提取的特征没有被进一步集成和加工。如果此后使用较大的 1x1 卷积层(相当于 FC 层),则 GAP 之后的特征不会直接分类,而是首先进行融合和分类。这大大提高了准确性,而不会影响模型推理的速度。

BaseNet在四个方面进行了改进,以获得PP-LCNet。下表进一步说明了每个方案对结果的影响:

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

为下游任务提供惊人的性能改进

图像分类

图像网络 我们选择了 ImageNet 数据集,PP-LCNet 获得了比当今主流轻量级网络更快的推理速度和相同的精度。借助百度自主研发的SSLD精馏策略,准确度进一步提升,ImageNet的Top-1 Acc在英特尔CPU端以约5ms的推理速度超过80%,惊人!!!

速度提升2倍,超强CPU级骨干网PP-LCNet诞生
速度提升2倍,超强CPU级骨干网PP-LCNet诞生

目标检测

目标检测方法 我们选择了百度自研的PicoDet,该方法主要是轻量级的目标检测场景。下表显示了如何在COCO数据集上比较PP-LCNet和MobileNetV3的结果。PP-LCNet的优势在准确性和速度方面是显而易见的。

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

语义分割

DeeplabV3 plus使用语义分割的方法。下表显示了如何在 Cityscapes 数据集上将 PP-LCNet 与 MobileNetV3 进行比较。PP-LCNet的优势在准确性和速度方面同样明显。

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

实际扩展应用结果说明

PP-LCNet在计算机视觉下游任务方面做得很好,那么实际使用场景呢?本节简要介绍其在 PP-OCR v2、PP-ShiTu 上的性能。

在PP-OCR v2上,当只有已识别模型的骨干被具有PP-LCNet的mobileNetV3取代时,精度可以进一步提高,同时速度更快。

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

在PP-ShiTu中,用PP-LCNet-2.5x取代骨干网的ResNet50_vd在Intel-CPU端的速度提高了3倍,recall@1与ResNet50_vd基本相同。

速度提升2倍,超强CPU级骨干网PP-LCNet诞生

PP-LCNet并不是在寻找终极的FLOP和Params,而是在深入研究技术细节,耐心分析如何添加Intel CPU友好的模块,以提高模型性能,更好地平衡准确性和推理时间,实验结论也适合其他网络结构设计研究人员,同时也为NAS搜索研究人员提供了更少的搜索空间和一般结论。

自论文发表以来,PP-LCNet引起了国内外学术界和业界的广泛关注,无论是各种版本的重新出现,还是各种具有重大探索意义和实用价值的视觉任务应用和技术分析文章,简单模型的实用优化方案都将带回大家的视野, 并真正践行技术,让"生活"更美好,期待PP-LCNet在实际落地和应用上有更多的性能。

对于上一篇论文,链接如下:https://arxiv.org/pdf/2109.15099.pdf

本文工作的总体研究思路由百度的PaddleClas团队提出并实施。PaddleClas提供全球首个开源通用图像识别系统,努力为业界和学术界提供更高效便捷的开发工具,使开发者能够更流畅、更高地使用体验,训练更好的桨视觉模型,实现行业场景的落地应用。

有关 PaddleClas 简介和教程文档的更多信息,请访问:GitHub:https://github.com/PaddlePaddle/PaddleClas

继续阅读