美文网首页
CPU端超快backbone---PP-LCNetV1/PP-L

CPU端超快backbone---PP-LCNetV1/PP-L

作者: 教训小磊 | 来源:发表于2025-01-19 16:51 被阅读0次

最近在看ppocrv4相关的代码,看到里面运用了一种高效的backbone---PP-LCNet,目前这个模型有3个版本,V3网上没有相关解析也没有论文,我粗略查看了一下源码,运用的方法大致跟V2差不多,所以我在这里只解析V1和V2

PP-LCNetV1

PP-LCNetV1 的结构非常简单,以至于我们模型设计常用的跳跃连接都不使用,其结构主要由深度可分离卷积组成(深度卷积+逐点卷积),并结合SE通道注意力机制进行特征提取,不过SE模块做了一些加速处理,以提高在CPU端的计算效率,具体来说就是减少了全连接的层数,使用h-swish来近似代替复杂度更高的-sigmoid。V1的整体结构如下图所示。


PP-LCNetV1.png

可以看到V1 基本不用我们模型设计里的一些技巧操作,如拼接concat或逐元素elementwise-add相加,这些操作不仅会降低模型的推理速度,而且在小型模型上也不会提高准确度。由于整体结构相当简单,作者估计也担心精度太差,所以标配hard-switch激活函数。

PP-LCNetV2

V2在V1的基础上增加了当下较为流行的技巧---重参数化,整体结构如下图所示。


PP-LCNetV2.png
可以看到V2并不是所有block都用重参数,只用在最后2个Block,同时在最后一个block增加了残差连接,以及全系激活函数换回了relu,理由是有很大一部分硬件设施对于h-swish的加速不理想,虽然精度有提高,但速度下降很大,有点得不偿失。其中重参数模块中使用了多尺度卷积核,用于提取不同感受野的特征信息。 重参数.png

整体 PP-LCNet系列结构上的创新不大,主要是小修小改,瞄准点是速度快然后精度也不差,适用于CPU端模型的设计,如果是GPU端的话我比较推荐百度的HGNet系列模型。

相关文章

  • 2019-07-10 关于cpu缓存

    一般来说,缓存是一个非常小但超快的内存块,它位于 CPU 芯片上,因此每次读取或写入值时,CPU 都不必到达主 R...

  • IO编程-文件读写

    Input/Output(输入/输出) 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及...

  • 日记随笔32/64位cpu 2019-11-30

    CPU CPU可分为精简指令集CPU(如移动端的ARM系列)和复杂指令集CPU(如Intel core和AMD系列...

  • Android性能优化——布局优化篇

    写在开头 Android设备作为一种移动设备,在内存和CPU的性能让都受到了一定的限制,无法做到像PC端那样具有超...

  • CPU大小端问题

    大小端 CPU有大小端之分,大端是指数据的高位数据保存在低位地址,而低位数据保存在高位地址;小端是指数据的低位数据...

  • 超分辨的论文集合

    从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 深度学习端到端超分辨率方法发展历程(二) 超分辨率...

  • python--IO编程

    IO在计算机中指Input/Output,输入与输出。由于程序和运行时的数据是在内存中驻留,由CPU这个超快的计算...

  • Python学习9IO编程1

    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的...

  • Python IO编程【Python必学知识点】

    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的...

  • Python3-IO编程

    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的...

网友评论

      本文标题:CPU端超快backbone---PP-LCNetV1/PP-L

      本文链接:https://www.haomeiwen.com/subject/seltujtx.html