yolov8 模子架构轻量化 | 极致提速率

打印 上一主题 下一主题

主题 1078|帖子 1078|积分 3234

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言        

        当想要提升模子在通用计算平台上的FPS(每秒帧数或帧率)时,可以从模子架构的三个关键角度出发举行优化:模子的参数数量、浮点数运算的复杂度以及模子架构的简便性。以下是对这三个方面的具体睁开叙述:
1. 模子的参数是否足够少

参数数量是影响模子推理速率的告急因素之一。参数越少的模子,其计算量和内存占用通常也越小,因此推理速率更快。
优化策略

  • 模子剪枝:通过移除模子中不告急的参数(如权重较小的连接)来淘汰参数数量。
  • 知识蒸馏:使用一个更大的西席模子来引导一个小模子的训练,使得小模子能够学习到西席模子的性能,同时保持较小的参数规模。
  • 选择轻量级模子:在设计或选择模子时,优先考虑那些专门为快速推理设计的轻量级模子架构,如MobileNet、ShuffleNet等。
2. 浮点数运算少

浮点数运算的复杂度直接影响模子的推理速率。淘汰浮点数运算的数量可以降低计算负担,从而提高FPS。
优化策略

  • 量化:将模子的权重和激活值从浮点数转换为定点数(如8位或16位整数),从而大大淘汰运算的复杂度。
  • 使用低秩分解:通过矩阵分解技能将大的权重矩阵分解为多个小的矩阵,以淘汰浮点运算的数量。
  • 深度可分离卷积:在卷积神经网络中,使用深度可分离卷积替换标准卷积层,以淘汰参数数量和浮点运算量。
3.模子架构是否简便,不涉及太多中间缓存

模子架构的简便性对于淘汰内存占用和读写次数至关告急。复杂的模子架构每每涉及更多的中间结果缓存,这大概导致内存占用增大和读写次数增长,从而降低FPS。
优化策略

  • 设计紧凑的模子结构:在模子设计时,避免使用过多的层和复杂的连接,以淘汰中间结果的产生和缓存需求。
  • 优化内存访问:合理安排数据的读取和写入序次,淘汰不须要的内存访问和拷贝利用。
  • 批处理:通过批处理将多个输入数据组合在一起举行推理,以利用并行计算和淘汰整体推理时间。
  • 计算图优化:利用计算图优化技能(如TensorFlow的XLA或PyTorch的JIT)来主动优化模子的实行计划,淘汰不须要的计算步骤和内存占用。
总之,通过淘汰模子的参数数量、降低浮点数运算的复杂度以及优化模子架构的简便性,可以有用地提升模子的FPS。在实际应用中,可以根据具体需求和场景选择符合的优化策略或组合使用多种策略来达到最佳效果。

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

yolov8轻量化改进


1. CSPPC 模块的应用


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

2.Detete_SA 模块的应用


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

yolov8轻量化前后对比


1.轻量化前


2.轻量化后


前后对比发现参数量与运算量均大幅度下降,且精度保持不变,这是通过剪枝、蒸馏都没办到的
注:全部源码可接洽博主获取


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表