YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

简介: YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

一、本文介绍

本文记录的是利用部分卷积 Partial Conv优化YOLOv11的目标检测方法研究深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。==部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。==


专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:YOLOv11改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!

二、部分卷积原理介绍

Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks

2.1 出发点

  • 解决FLOPS问题:在追求快速神经网络的过程中,许多工作致力于减少浮点运算(FLOPs),但研究者发现FLOPs的减少并不一定能带来延迟的同等降低,主要原因是每秒浮点运算次数(FLOPS)过低。通过对典型神经网络在Intel CPU上FLOPS的比较,发现很多现有神经网络FLOPS较低,其FLOPS普遍低于流行的ResNet50,导致“快速”神经网络实际上不够快,FLOPs的减少无法转化为延迟的准确降低。
  • 深度可分离卷积的内存访问问题:深度可分离卷积(DWConv)是一种常用的减少FLOPs的方法,但它在实际应用中存在问题。当为了补偿精度下降而增加网络宽度(即DWConv的通道数c增加到c')时,会导致更高的内存访问,从而引起不可忽视的延迟并减慢整体计算,特别是对于I/O受限的设备。

2.2 原理

  • 利用特征图冗余:观察到特征图在不同通道之间存在高度相似性(冗余),通过部分卷积(PConv)来利用这种冗余。PConv不是对所有输入通道进行常规卷积,而是仅对一部分输入通道应用常规卷积进行空间特征提取,同时保持其余通道不变。
  • 减少计算冗余和内存访问:通过这种方式,同时减少了计算冗余和内存访问。从计算量(FLOPs)来看,PConv的FLOPs仅为常规卷积的一部分(例如,当典型的部分比例$r = \frac{c_{p}}{c}=\frac{1}{4}$时,PConv的FLOPs仅为常规Conv的$\frac{1}{16}$);从内存访问量来看,PConv的内存访问量也仅为常规卷积的一部分(同样在$r=\frac{1}{4}$时,仅为常规Conv的$\frac{1}{4}$)。

2.3 结构

  • 基本结构:对于输入$I\in\mathbb{R}^{c×h×w}$,PConv选取连续的$c_{p}$个通道(例如可以是第一个或最后一个连续的通道作为代表)应用常规卷积,输出的特征图维度与输入特征图维度相同(即输出$O\in\mathbb{R}^{c×h×w}$)。
  • 与PWConv结合:为了充分利用所有通道的信息,在PConv之后紧接着添加一个逐点卷积(PWConv)。它们在输入特征图上的有效感受野看起来像一个T形卷积,这种T形卷积更关注中心位置,与均匀处理一个区域的常规卷积不同。并且将T形卷积分解为PConvPWConv可以进一步利用滤波器间的冗余,节省FLOPs。

在这里插入图片描述

2.4 优势

  • 有效提取空间特征:实验证明PConv在提取空间特征方面是有效的。通过构建由PConvPWConv组成的简单网络,并在从预训练ResNet50提取的特征图数据集上进行训练,结果表明PConv + PWConv能达到最低的测试损失,更好地近似常规卷积进行特征变换,说明仅从部分特征图中捕获空间特征是足够且高效的。
  • 适用于构建快速神经网络PConv为设计快速有效的神经网络提供了一种新的选择,具有很大潜力替代现有的DWConv等操作,并且基于PConv构建的FasterNet在各种设备上实现了快速运行,在分类、检测和分割任务上取得了良好的性能,验证了PConv的有效性。

论文:https://arxiv.org/pdf/2303.03667
源码:https://github.com/JierunChen/FasterNet

三、实现代码及YOLOv11修改步骤

模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址:

https://blog.csdn.net/qq_42591591/article/details/142917942

目录
相关文章
|
13天前
|
缓存 监控 算法
JVM简介—2.垃圾回收器和内存分配策略
本文介绍了Java垃圾回收机制的多个方面,包括垃圾回收概述、对象存活判断、引用类型介绍、垃圾收集算法、垃圾收集器设计、具体垃圾回收器详情、Stop The World现象、内存分配与回收策略、新生代配置演示、内存泄漏和溢出问题以及JDK提供的相关工具。
JVM简介—2.垃圾回收器和内存分配策略
|
23天前
|
机器学习/深度学习 存储 PyTorch
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
在大规模深度学习模型训练中,GPU内存容量常成为瓶颈,特别是在训练大型语言模型和视觉Transformer时。本文系统介绍了多种内存优化策略,包括混合精度训练、低精度训练(如BF16)、梯度检查点、梯度累积、张量分片与分布式训练、
56 14
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
|
1月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
77 13
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
|
4月前
|
存储 算法 Java
Java内存管理深度剖析与优化策略####
本文深入探讨了Java虚拟机(JVM)的内存管理机制,重点分析了堆内存的分配策略、垃圾回收算法以及如何通过调优提升应用性能。通过案例驱动的方式,揭示了常见内存泄漏的根源与解决策略,旨在为开发者提供实用的内存管理技巧,确保应用程序既高效又稳定地运行。 ####
|
1月前
|
机器学习/深度学习 编解码 BI
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
94 3
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
|
1月前
|
机器学习/深度学习 编解码 BI
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
43 0
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
|
3月前
|
算法 Java
堆内存分配策略解密
本文深入探讨了Java虚拟机中堆内存的分配策略,包括新生代(Eden区和Survivor区)与老年代的分配机制。新生代对象优先分配在Eden区,当空间不足时执行Minor GC并将存活对象移至Survivor区;老年代则用于存放长期存活或大对象,避免频繁内存拷贝。通过动态对象年龄判定优化晋升策略,并介绍Full GC触发条件。理解这些策略有助于提高程序性能和稳定性。
|
3月前
|
NoSQL 算法 Redis
redis内存淘汰策略
Redis支持8种内存淘汰策略,包括noeviction、volatile-ttl、allkeys-random、volatile-random、allkeys-lru、volatile-lru、allkeys-lfu和volatile-lfu。这些策略分别针对所有键或仅设置TTL的键,采用随机、LRU(最近最久未使用)或LFU(最少频率使用)等算法进行淘汰。
113 5
|
3月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
342 7
|
4月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
111 1