当前位置:   article > 正文

yolov8 模型架构轻量化 | 极致提速度_yolov8轻量化

yolov8轻量化

前言        

        当想要提升模型在通用计算平台上的FPS(每秒帧数或帧率)时,可以从模型架构的三个关键角度出发进行优化:模型的参数数量、浮点数运算的复杂度以及模型架构的简洁性。以下是对这三个方面的详细展开叙述:

1. 模型的参数是否足够少

参数数量是影响模型推理速度的重要因素之一。参数越少的模型,其计算量和内存占用通常也越小,因此推理速度更快。

优化策略

  1. 模型剪枝:通过移除模型中不重要的参数(如权重较小的连接)来减少参数数量。
  2. 知识蒸馏:使用一个更大的教师模型来指导一个小模型的训练,使得小模型能够学习到教师模型的性能,同时保持较小的参数规模。
  3. 选择轻量级模型:在设计或选择模型时,优先考虑那些专门为快速推理设计的轻量级模型架构,如MobileNet、ShuffleNet等。

2. 浮点数运算少

浮点数运算的复杂度直接影响模型的推理速度。减少浮点数运算的数量可以降低计算负担,从而提高FPS。

优化策略

  1. 量化:将模型的权重和激活值从浮点数转换为定点数(如8位或16位整数),从而大大减少运算的复杂度。
  2. 使用低秩分解:通过矩阵分解技术将大的权重矩阵分解为多个小的矩阵,以减少浮点运算的数量。
  3. 深度可分离卷积:在卷积神经网络中,使用深度可分离卷积替代标准卷积层,以减少参数数量和浮点运算量。

3.模型架构是否简洁,不涉及太多中间缓存

模型架构的简洁性对于减少内存占用和读写次数至关重要。复杂的模型架构往往涉及更多的中间结果缓存,这可能导致内存占用增大和读写次数增加,从而降低FPS。

优化策略

  1. 设计紧凑的模型结构:在模型设计时,避免使用过多的层和复杂的连接,以减少中间结果的产生和缓存需求。
  2. 优化内存访问:合理安排数据的读取和写入顺序,减少不必要的内存访问和拷贝操作。
  3. 批处理:通过批处理将多个输入数据组合在一起进行推理,以利用并行计算和减少整体推理时间。
  4. 计算图优化:利用计算图优化技术(如TensorFlow的XLA或PyTorch的JIT)来自动优化模型的执行计划,减少不必要的计算步骤和内存占用。

总之,通过减少模型的参数数量、降低浮点数运算的复杂度以及优化模型架构的简洁性,可以有效地提升模型的FPS。在实际应用中,可以根据具体需求和场景选择合适的优化策略或组合使用多种策略来达到最佳效果。

本文YOLOV8为例子,通过模型结构的轻量化设计,在保证模型性能稳定不变的前提下通过以上3点原则,极致完成模型在通用平台上的速度提升

yolov8轻量化改进

1. CSPPC 模块的应用

如上图,其中利用了PConv模块大量降低参数量

其中

PConv(部分卷积)的基本原理是利用特征图的冗余,从而减少计算和内存访问。具体来说,PConv 只在输入通道的一部分上应用常规卷积进行空间特征提取,而保留剩余通道不变。这种设计的优势在于:
1.减少计算复杂度:PConv 通过在较少的通道上进行计算,降低了浮点操作(FLOPs)的数量。例如,如果部分率设置为 1/4,则PConv的计算量只有常规卷积的 1/16.
2.降低内存访问:与常规卷积相比,PConv减少了内存访问量,这对于输入输出(/0)受限的设备尤其有益
3.保持特征信息流:尽管只对输入通道的一部分进行计算,但保留的通道在后续的逐点卷积(PWConv)层中仍然有用,允许特征信息在所有通道中流动

2.Detete_SA 模块的应用

图中所示的模块是为了在高分辨率特征提取中寻找高效的结构,自注意力模块旨在捕获更广泛的上下文信息,而卷积模块则专注于保留局部信息和减少计算复杂度。这两种模块的结合旨在通过架构搜索找到一个既能高效提取特征又能保持较低计算成本的最佳网络结构。

yolov8轻量化前后对比

1.轻量化前

2.轻量化后

前后对比发现参数量与运算量均大幅度下降,且精度保持不变,这是通过剪枝、蒸馏都没办到的

注:全部源码可联系博主获取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/615078
推荐阅读
相关标签
  

闽ICP备14008679号