PP-LCNet论文全文解析

article/2025/9/24 12:37:26

PP-LCNet: A Lightweight CPU Convolutional Neural Network

🔗 PDF Link 🍺 Github Code

Section 1 介绍

随着模型参数和FLOPs的加大,模型越来越难以在基于ARM架构的移动端设备或者x86架构的CPU上取得较快的推理速度。虽然有许多优秀的移动端网络被设计出来,但是由于MKLDNN的限制,网络的推理加速效果并不理想。本文重新考虑了轻量级模型的构成,尤其是我们考虑了三个基础问题:

  1. 在不增加网络延时的前提下,如何增强特征的表征能力。
  2. 在CPU上提升模型精度的关键因素是什么。
  3. 如何有效地整合不同地策略来在CPU上设计轻量级模型。

我们的主要贡献在于总结了一系列在不提升预测耗时的前提下提升精度的方法从而在速度和精度上取得一个平衡。基于此,我们总结出了了一些设计轻量化CNN的思路并提供了一些想法帮助其他相关研究者来设计CPU模型。

Section 2 相关工作

当前的方向主要有两个,一个是基于手工设计CNN结构另一个是NAS。

2.1 Manually-designed Architecture.

VGG展示了简单但是有效的方法来构建神网络。GooLeNet设计了Inception模块,能使得模型更轻量化。MobileNetV1使用了depthwise以及pointwaise卷积代替了标准的卷积,这显著减少了FLOPs并提升了性能。ShuffleNetV1/V2通过通道随机打乱来增加信息交换,从而减少了无意义的网络结构开销(❓)。GhostNet作者提出了Ghost模块,利用该模块可以利用更少的参数生成更丰富的特征图。

2.2 Manually-designed Architecture.

随着GPU结构、算力的升级,主攻方向逐渐开始向NAS发展,大量的NAS生成的网络尝试使用和MobileNetV2一样的结构空间,生成了例如EfficientNetMobileNetV3FBNetDNANetOFANet等网络结构。MixNet提出在一层中混合不同卷积核大小的深度卷积。NAS生成的模型也极大程度上依赖着手工结构,例如BottleNeck block,Inverted-block等。我们的工作可以减少搜索空间,从而生成更好更快的模型。

Section 3 方法

尽管有许多轻量化模型在基于ARM结构的CPU上有着很快的推理速度,但是很少有模型考虑到在Intel CPU上能获得较快速度模型结构设计,尤其是当使用了MKLDNN等加速库的前提。文章在这里总结了而一些方法,将会在后文进行展示。我们使用了MobileNetV1提出的DepthSepConv作为我们的基础block。这个模块没有跳跃连接,因此不需要一些类似concatelementwise-add之类的操作,上面这类操作会显著性的降低模型的推理速度。更进一步,这个模块已经在Intel CPU上的加速库深度优化过了,因此该模块对比其他类似inverted-blockshuffle-block有着显著的优势。文章通过堆积这个基础模块来搭建了一个类似MobileNetV1BaseNet。然后而文章通过整合一些其他现有的策略来构建了PP-LCNet

3.1 Better activation function.

众所周知,激活函数的质量决定了网路的性能。自从激活函数从Sigmoid变换到如今的ReLU,网络的性能得到了显著的提升。近些年来,越来越多的优越的激活激活函数开始超越ReLU。EfficientNet的Swish激活函数展示了更好的更好的性能,MobileNetV3的作者更新到了H-Swish从而避免了指数操作(减少计算量)。因此文章尝试替换了ReLUH-Swish,从而获得了极大的性能提升,尽管推理速度并没有太大的改变

3.2 SE modules at appropriate positions

SE模块自从提出就被许多网络模型采纳使用。这个模块能很好的为特征通道进行加权,从而获得更丰富的特征,同时SE模块的加速版本也被很多轻量化模型采纳,例如MobileNetV3。但是,在Intel CPU上使用SE模块会减慢推理时间。因此,我们不能在整个网络上使用该模块。事实上,文章做了许多实验发现SE模块在网络结构的末尾能取得最好的效果。因此,只在最后一层加SE模块能取得更好的性能-速度平衡。于MobileNetV3一样,最后两层的SE模块的激活函数分别使用ReLuH-Swish

3.3 Larger convolution kernels

卷积核的尺寸通常来说会影响最终的模型性能。MixNet的作者分析了不同尺寸的卷积核对网络模型的性能的影响,最终决定在同一层中使用混合尺寸的卷积核。但是这种混合会减慢推理速度,因此依旧尝试在一层中使用单一尺寸的卷积核,并确保卷积核的尺寸稍大从而满足延时和精度需要。文章通过实验发现类似于SE模块的放置位置,在模型的尾部利用5x5卷积来替代原来的3x3卷积能获得几乎一致的模型性能。Larger dimensional 1 × 1 conv layer after GAP

3.4 Larger dimensional 1 × 1 conv layer after GAP

PP-LCNet中,GAP输出的维度通常来说是很小,直接将这个数据送到分类层,将会非常多的特征组合。为了给模型提供一个更强的你和能力,文章在GAP的输出后面增加了一个1280维的1x1卷积(类似于全连接层)。

有了以上四个改进,文章提出的模型能够在ImageNet-1k数据集上取得很好的性能,如表3所示。

表3. 与其他SOTA的轻量化模型在分类任务上精度对比,延迟测试使用的是Intel Xeon Gold 6148 处理器(batch size 1)并开启了 MKLDNN,使用10线程.

ModelParams (M)FLOPs (M)Top-1 Acc.(%)Top-5 Acc.(%)Latency (ms)
MobileNetV2-0.25x1.53453.2176.522.47
MobileNetV3-small-0.35x1.71553.0376.373.02
ShuffleNetV2-0.33x0.62453.7377.054.30
PP-LCNet-0.25x1.51851.8675.651.74
MobileNetV2-0.5x29965.0385.722.85
MobileNetV3-large-0.35x2.14164.3285.463.68
ShuffleNetV2-0.5x1.44360.3282.264.65
PP-LCNet-0.5x1.94763.1484.662.05
MobileNetV1-1x4.357870.9989.683.38
MobileNetV2-1x3.532772.1590.654.26
MobileNetV3-small-1.25x3.610070.6789.513.95
ShuffleNetV2-1.5x3.530171.6390.15-
PP-LCNet-1x316171.3290.032.46

Section 4 实验

4.1 Implementation Details

为了公平对比,我们用PaddlePaddle重新实现了MobileNetV1-V3ShuffleNetV2PicoDet以及DeeplabV3+。使用4块V100 GPUs上训练并在 Intel Xeon Glod 6148开启MKLDNN使用10线程进行单batchsize的情况下进行测试。

4.2 Image Classification

对于图像分类任务,我们在ImageNet-1k上进行训练,包含了128万图像的训练数据和5万张验证数据,包含了1000个类别。使用了SGD,权重衰减3e-5,对于大模型设置了4e-5,动量设置为0.9,batchsize2048,学习率根据cosine策略调整,一共训练了360个epochs并使用了5个epochs的线性预热,初始学习率为0.8。在训练阶段,每一张图像数据都被随即裁剪到了224x224,并设置了随机的水平翻转,在验证阶段,对所有的图像依照短边自适应resize到256,然后使用了中心裁剪。表2给出了PP-LCNet的不同变体的准确率和推理时间。特别注意的是,当使用SSLD进行知识蒸馏后,模型的精度有着显著的提升,上面的表3给出了详细的结果。

表2. 不同的PP-LCNet的尺度,*表示使用了SSLD蒸馏进行训练,延迟测试使用的是Intel Xeon Gold 6148 处理器(batch size 1)并开启了 MKLDNN,使用10线程.

ModelParams (M)FLOPs (M)Top-1 Acc.(%)Top-5 Acc.(%)Latency (ms)
PP-LCNet0.25x1.51851.8675.651.74
PP-LCNet-0.35x1.62958.0980.831.92
PP-LCNet-0.5x1.94763.1484.662.05
PP-LCNet-0.75x2.49968.1888.32.29
PP-LCNet-1x316171.3290.032.46
PP-LCNet-1.5x4.534273.7191.533.19
PP-LCNet-2x6.559075.1892.274.27
PP-LCNet-2.5x990676.6935.39
PP-LCNet-0.5x*1.94766.186.462.05
PP-LCNet-1x*316174.3992.092.46
PP-LCNet-2.5x*990680.8295.335.39

4.3 Object Detection

对于目标检测任务,所有的模型都在COCO-2017数据集上进行训练。一共80类,11.8万张图像数据,验证集有5000张数据。评估方式在单尺度上使用COCO AP策略。文章使用了轻量化的PicoDet作为基线模型。表4给出了使用PP-LCNetMobileNetV3作为骨架的检测模型的检测效果。模型使用了SGD训练了14.6万次迭代,在4卡上分布式训练的batchsize为224,学习率的衰减使用了cosine从0.3开始,一共训练了280个epochs。权重衰减为1e-4,动量为0.9。让人形象深刻的是PP-LCNet对比MobileNetV3在COCO上显著提升了mAP性能以及推理速度。

表4. 检测模型结果

MethodBackbonemIoU (%)Latency (ms)
PicoDetMobileNetV3-large-0.5x55.42135
PP-LCNet-0.5x58.3682
PicoDetMobileNetV3-large-0.75x[20]64.53151
PP-LCNet-1x66.0396

4.4 Semantic Segmentation

在CityCaps数据上进行验证,一共包含了5000张高质量的标签数据,使用的基准模型为DeepLabV3+,并设置了输出的尺度为32。数据增强策略使用了随机水平翻转,随机缩放(缩放系数为{0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0})和随机裁剪(裁剪分辨率为1024x512)。使用SGD优化器,初始学习率为0.01,动量为0.9,权重衰减为4e-5。使用了多项式学习率衰减策略,衰减系数为0.9。一共训练了8万次迭代,batchsize在4卡上分布式batchsize为32。

文章同样对比了MobileNetV3作为骨架时候的情况,详见表5。

表5. 语义分割模型结果

MethodBackbonemIoU (%)Latency (ms)
Deeplabv3+MobileNetV3-large-0.5x55.42135
PP-LCNet-0.5x58.3682
MobileNetV3-large-0.75x64.53151
PP-LCNet-1x66.0396

4.5 Ablation Study

The impact of SE module[26] in different positions

不同位置的SE模块对模型性能的影响,详见表6。

表6

NetworkSELocationTop-1Acc(%)Latency(ms)
PP-LCNet-0.5x110000000000061.732.06
000000110000062.172.03
000000000001163.142.05
111111111111164.273.8
The impact of large-kernel in different locations.

大卷积核在不同位置对性能的影响,详见表7。

表7

Network大卷积核位置Top-1Acc (%)Latency (ms)
PP-LCNet-0.5x111111111111163.222.08
111111100000062.72.07
000000111111163.142.05
The impact of different techniques.

丢掉一些策略对模型性能的延迟造成的影响,见表8。

表8

ActivationSEblocklarge-kernellast-1x1convTop-1Acc(%)Latency(ms)
61.931.94
62.511.87
62.442.01
59.911.85
63.142.05

不同策略对模型性能和延迟造成的影响,见表9。

表9

StrategyTop-1Acc.(%)Latency(ms)
BaseNet55.581.61
+h-swish58.181.66
+large-kernel59.091.7
+SE59.911.85
+last-1x1convw/odropout62.52.05
+last-1x1convw/dropout63.142.05

Section 5 总结和未来的工作

模型很好,后面会用这个经验去做一些NAS。


http://chatgpt.dhexx.cn/article/gMxjc2BU.shtml

相关文章

PP-YOLO论文阅读笔记

PP-YOLO: An effective and efficient implementation of object detector 期刊: arXiv preprint年份:2020 主要内容列举: ① :实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景; ② ②:添加了一系列几乎不会增加推断时间的技巧,以…

【paddle】PP飞桨

PP飞桨AI Studio 项目:https://aistudio.baidu.com/aistudio/projectoverview/public 数据集:https://aistudio.baidu.com/aistudio/datasetoverview 课程:https://aistudio.baidu.com/aistudio/course 比赛:https://aistudio.ba…

PP-ShiTu: A Practical Lightweight Image Recognition System

最近看了一个新的分享,关于图像识别的,对于大规模图像搜索以及新物品频繁情况下表现良好。 论文: https://arxiv.org/abs/2111.00775项目: https://github.com/PaddlePaddle/PaddleClas Abstract 近年来,图像识别的…

SAP_PP模块流程

1、SAP_PP模块介绍 PP模块涉及到工程部、财务部、PC、MC、生产部这些业务部门;主要大块在于PMC和生产;是整个SAP的源头所在; 2、整体业务逻辑 工程部:维护物料主数据、收集业务视图、维护BOM、工艺路线、生产版本,这些数据维护…

PP模块学习总结

PP模块总览 生产业务主要包含三部分: 主数据管理(有效 、准确,用来确保查询速度)生产计划安排(满足销售、降低库存)生产制造执行 PP模块数据 定义:是企业运行基本数据,描述业务流…

PP-OCR

论文: PP-OCR: A Practical Ultra Lightweight OCR System Github:https://github.com/PaddlePaddle/PaddleOCR 百度开源的ocr检测识别系统,称为PP-OCR。PP-OCR的中文字符识别模型仅3.5M,支持识别6622个中文字符。英文字符识别模…

pp助手可以刷机吗android,如何使用PP助手进行刷机?

PP助手官方版是当前最适合的苹果助手,iPhone/iTouch/iPad通通完美支持,个性铃声自制,一键越狱插件安装、资料备份、SHSH管理等通通都具备,PP助手官方版汇集了很多大型热门游戏软件,统统一键即可简单下载!今天在这里小编…

pp助手可以刷机吗android,pp助手刷机 pp助手怎么刷机

小编今天带来pp助手刷机,pp助手怎么刷机的教程。想用pp助手刷机?要知道刷机有风险,刷机需谨慎。想清楚了,那么就进来看教程刷机吧。包教包会! 注意:刷机前一定要备份好自己的东西。 1.首先下载更新新版本pp…

pp-vehicle简介

简介 飞桨目标检测端到端开发套件PaddleDetection正式开源车辆分析工具PP-Vehicle!该工具主要包含:提供车牌识别、车辆属性分析(颜色、车型)、车流量统计以及违章检测四大功能,兼容图片、在线视频流、视频输入&#x…

PP-YOLO

PP-YOLOv2 目录 PP-YOLOv2的改进点 数据增强 : MixUp Backbone :换R50 Better Pre-Train dcn Neck : SPP CoordConv DropBlock PAN MISH Loss : IoU Loss IoU Aware Loss 其他 : Large Batch Size Grid…

PP-LiteSeg

简介 整体还是采用跳层连接结构,引入了统一注意力融合模块(空间和通道注意力机制)、金字塔模块来聚合上下文。 使用统一注意力模块来提高分割精度,通过融合解码器中的低级和高级特征来实现的,与之前的BiSeNetV2中的通道…

SPSS PP图和QQ图

P-P图和Q-Q图都是用来观察变量是否服从正太分布的。 选择菜单中的分析-描述统计-P-P图,则如下图 1变量选项栏:选择绘制pp图的变量,可多选 2检验分布选项栏:用于检测待检验分布的类型,如beta,卡方&#xff0…

PP图和QQ图以及它们意义

先说结论1: P-P图和Q-Q图的用途完全相同,只是检验方法存在差异。 如果两个分布相似,则该Q-Q图趋近于落在y=x线上。如果两分布线性相关,则点在Q-Q图上趋近于落在一条直线上,但不一定在y=x线上。 再说结论2:Q-Q图可以用来在分布的位置-尺度范畴上可视化的评估参数。 从定义…

正态性检验之QQ图与PP图

正态性检验方法有很多种,主要可以分为以下几类: 图示法统计方法正态概率图、频率直方图、PP图、QQ图偏度峰度检验、皮尔逊卡方检验、K-S检验、W检验、EP检验、秩和检验、游程检验等非参检验 按理说图示法应该是最简单的方法,但大多本科统计…

PP图,QQ 图,及 python 画图

统计学中有时会用到 PP 图 或 QQ 图,用来看样本数据是否服从某一特定分布。 若 PP 或 QQ 图中的点基本落在一条 45度 的线上,则说明服从特定分布。 一般的步骤为: 将样本数据从小到大排序,假设排序后的样本数据为 x 1 x_1 x1​…

pptp服务搭建

1 检查系统是否支持pptp cat /dev/ppp 如果输出 cat: /dev/ppp: No such device or address 则说明可以正常架设pptp服务 2 设置内核转发,开启路由转发 vi /etc/sysctl.conf 添加 net.ipv4.ip_forward1 通过下面命令查看 sysctl -p 3更新yum相关源 wget http…

VPN服务搭建流程记录

之前,一直有想法搭建一套属于自己的VPN服务,但是,一直苦于"拖延症"的困扰,没有真正实际去实践。最近,终于打破了这个困扰,所以,也希望记录一下整体的搭建流程,操作系统Cen…

Guava常用方法

目录 简介 Maven依赖 字符串检查工具 NULL值检查 先决条件检查 判断对象是否为null 操作集合 简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库&…

【guava】基础用法

依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version></dependency> 不可变集合与对象 优点&#xff1a;1、线程安全 2、可用作常熟 ImmutableXXX 创建方式&…

guacamole 源码_Guacamole学习笔记

1: 介绍: Guacamole可以同HTML5来代理远程桌面协议(如: VNC, RDP, Telnet, SSH) 官网: http://guac-dev.org/ 2: 架构: 架构图: image.png 架构解释: 用户通过浏览器连接到Guacamole的服务端, Guacamole通过JS写的客户端是为用户提供服务, 服务端和客户端的通信是基于HTTP的私有…