YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用

简介: YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用

一、本文介绍

本文记录的是利用BiFormer双级路由注意力机制优化YOLOv11的目标检测网络模型。传统的多头自注意力(MHSA)复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。==而本文所使用的BiFormer在获取全局信息的同时,通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。==


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

二、BiFormer介绍

BiFormer: Vision Transformer with Bi-Level Routing Attention

2.1 出发点

  • 解决MHSA的可扩展性问题:传统的多head自注意力(MHSA)复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。例如,在图像识别任务中,高分辨率图像会使MHSA的计算负担过重。
  • 实现动态、查询感知的稀疏注意力:现有的稀疏注意力机制要么使用手工制作的静态模式,要么在所有查询中共享采样的键值对子集。而实际中不同查询在不同语义区域应关注不同的键值对,所以需要一种能根据查询动态确定关注的键值对的机制。

    2.2 原理

    2.2.1 区域到区域路由(Region-to-Region Routing)

    • 粗粒度区域过滤:首先在粗粒度区域级别过滤掉最不相关的键值对。对于给定的二维输入特征图$X\in\mathbb{R}^{H\times W\times C}$,将其划分为$S\times S$个非重叠区域,通过计算区域级别的查询和键的邻接矩阵$A^{r}$,并保留每个区域的前$k$个连接,得到路由索引矩阵$I^{r}$。
    • 确定关注区域:通过上述步骤,每个区域只需要关注前$k$个路由区域,从而减少了需要计算的区域数量,实现了初步的稀疏化。

      2.2.2 令牌到令牌注意力(Token-to-Token Attention)

    • 收集键值对:在确定了关注区域后,由于这些区域可能在整个特征图中是分散的,直接进行稀疏矩阵乘法在现代GPU上效率低下。所以先收集这些区域对应的键和值张量$K^{g}=gather(K, I^{r})$,$V^{g}=gather(V, I^{r})$。
    • 计算注意力:然后对收集到的键值对应用注意力机制$O = Attention(Q, K^{g}, V^{g})+LCE(V)$,其中还引入了局部上下文增强项$LCE(V)$,它是用深度卷积参数化的。

      2.3 结构

      2.3.1 整体架构

      BiFormer采用四阶段金字塔结构,与一些先进的视觉Transformer类似。在每个阶段,首先使用重叠的补丁嵌入(在第一阶段)或补丁合并模块(在第二到第四阶段)来降低输入空间分辨率同时增加通道数,然后使用$N_{i}$个连续的BiFormer块来转换特征。

      2.3.1 BiFormer块内部

      在每个BiFormer块中,首先使用$3\times3$深度卷积来隐式编码相对位置信息,然后依次应用Bi - Level Routing Attention(BRA)模块和2层MLP模块,分别用于跨位置关系建模和逐位置嵌入。

在这里插入图片描述

2.4 优势

  • 计算复杂度降低:与普通注意力的$O((H W)^{2})$复杂度和准全局轴向注意力的$O((H W)^{\frac{3}{2}})$复杂度相比,BRA在适当的区域划分下具有$O((H W)^{\frac{4}{3}})$的复杂度。通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。
  • 性能优越
    • 图像分类:在ImageNet - 1K数据集上进行图像分类实验,不同计算量组的模型中,BiFormer - T、BiFormer - S和BiFormer - B分别取得了优异的成绩,超过了很多相关方法和现有技术水平。例如BiFormer - S在不使用额外训练数据或训练技巧的情况下,取得了83.8%的top - 1准确率,使用标记标记技术后可进一步提高到84.3%。
    • 目标检测和实例分割:在COCO 2017数据集上,使用RetinaNet进行目标检测和Mask R - CNN进行实例分割,BiFormer在小物体检测上表现突出,整体性能也与一些先进方法相当,在实例分割的各项指标上有明显优势。
    • 语义分割:在ADE20K数据集上进行语义分割实验,在Semantic FPN和UperNet框架下,BiFormer - S和BiFormer - B分别取得了较好的成绩,相比一些现有方法提高了mIoU值。

论文:https://arxiv.org/pdf/2303.08810
源码: https://github.com/rayleizhu/BiFormer

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

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

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

目录
相关文章
|
3月前
|
存储 算法 Java
Java内存管理深度剖析与优化策略####
本文深入探讨了Java虚拟机(JVM)的内存管理机制,重点分析了堆内存的分配策略、垃圾回收算法以及如何通过调优提升应用性能。通过案例驱动的方式,揭示了常见内存泄漏的根源与解决策略,旨在为开发者提供实用的内存管理技巧,确保应用程序既高效又稳定地运行。 ####
|
3天前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
8 0
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
|
6月前
|
安全 索引
操作系统中的内存管理策略
【8月更文挑战第23天】
144 1
|
2月前
|
算法 Java
堆内存分配策略解密
本文深入探讨了Java虚拟机中堆内存的分配策略,包括新生代(Eden区和Survivor区)与老年代的分配机制。新生代对象优先分配在Eden区,当空间不足时执行Minor GC并将存活对象移至Survivor区;老年代则用于存放长期存活或大对象,避免频繁内存拷贝。通过动态对象年龄判定优化晋升策略,并介绍Full GC触发条件。理解这些策略有助于提高程序性能和稳定性。
|
2月前
|
NoSQL 算法 Redis
redis内存淘汰策略
Redis支持8种内存淘汰策略,包括noeviction、volatile-ttl、allkeys-random、volatile-random、allkeys-lru、volatile-lru、allkeys-lfu和volatile-lfu。这些策略分别针对所有键或仅设置TTL的键,采用随机、LRU(最近最久未使用)或LFU(最少频率使用)等算法进行淘汰。
58 5
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
201 7
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
92 1
|
3月前
|
存储 分布式计算 算法
1GB内存挑战:高效处理40亿QQ号的策略
在面对如何处理40亿个QQ号仅用1GB内存的难题时,我们需要采用一些高效的数据结构和算法来优化内存使用。这个问题涉及到数据存储、查询和处理等多个方面,本文将分享一些实用的技术策略,帮助你在有限的内存资源下处理大规模数据集。
43 1
|
3月前
|
存储 监控 Java
深入理解计算机内存管理:优化策略与实践
深入理解计算机内存管理:优化策略与实践
|
5月前
|
缓存 监控 NoSQL
阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥。粉丝小 A 面试阿里时被问到 Redis 的内存淘汰策略问题,特此整理了一份详细笔记供参考。Redis 的内存淘汰策略决定了在内存达到上限时如何移除数据。希望这份笔记对你有所帮助!欢迎关注“威哥爱编程”,一起学习与成长。