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

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

一、本文介绍

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


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

二、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

三、实现代码及RT-DETR修改步骤

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

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

目录
相关文章
|
6天前
|
缓存 监控 算法
JVM简介—2.垃圾回收器和内存分配策略
本文介绍了Java垃圾回收机制的多个方面,包括垃圾回收概述、对象存活判断、引用类型介绍、垃圾收集算法、垃圾收集器设计、具体垃圾回收器详情、Stop The World现象、内存分配与回收策略、新生代配置演示、内存泄漏和溢出问题以及JDK提供的相关工具。
JVM简介—2.垃圾回收器和内存分配策略
|
16天前
|
机器学习/深度学习 存储 PyTorch
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
在大规模深度学习模型训练中,GPU内存容量常成为瓶颈,特别是在训练大型语言模型和视觉Transformer时。本文系统介绍了多种内存优化策略,包括混合精度训练、低精度训练(如BF16)、梯度检查点、梯度累积、张量分片与分布式训练、
51 14
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
|
1月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
70 13
RT-DETR改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
|
1月前
|
机器学习/深度学习 编解码 BI
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
87 3
YOLOv11改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
|
1月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
63 0
YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
|
7天前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
JVM简介—1.Java内存区域
|
4天前
|
消息中间件 Java 应用服务中间件
JVM实战—2.JVM内存设置与对象分配流转
本文详细介绍了JVM内存管理的相关知识,包括:JVM内存划分原理、对象分配与流转、线上系统JVM内存设置、JVM参数优化、问题汇总。
JVM实战—2.JVM内存设置与对象分配流转
|
4月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
810 1
|
25天前
|
存储 算法 Java
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
26 6
|
3月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。