【YOLOv8改进 - 注意力机制】RCS-OSA :减少通道的空间对象注意力,高效且涨点

简介: YOLOv8专栏探讨了YOLO系列的创新改进,提出RCS-YOLO模型,它在脑肿瘤检测中超越YOLOv6/v7/v8,精度提升1%,速度增快60%(达到114.8 FPS)。RCS-OSA模块结合RepVGG/ShuffleNet优点,通过通道重参数化和混洗优化卷积,提升速度和准确性。代码和论文可在提供的链接获取。

YOLOv8目标检测创新改进与实战案例专栏

专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLOv8基础解析+创新改进+实战案例

介绍

image-20240716094941699

摘要

摘要. 凭借出色的速度和准确性平衡,最前沿的YOLO框架已经成为目标检测最有效的算法之一。然而,使用YOLO网络进行脑肿瘤检测的性能鲜有研究。我们提出了一种基于通道Shuffle重参数化卷积的YOLO新架构(RCS-YOLO)。我们介绍了RCS和RCS的一次性聚合(RCS-OSA),将特征级联和计算效率结合起来,以提取更丰富的信息并减少时间消耗。在脑肿瘤数据集Br35H上的实验结果表明,所提出的模型在速度和准确性上超越了YOLOv6、YOLOv7和YOLOv8。值得注意的是,与YOLOv7相比,RCS-YOLO的精度提高了1%,推理速度提高了60%,达到每秒114.8张图像的检测速度(FPS)。我们提出的RCS-YOLO在脑肿瘤检测任务上实现了最先进的性能。代码可在 https://github.com/mkang315/RCS-YOLO 获取。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

RCS-OSA(Reparameterized Convolution based on channel Shuffle-One Shot Aggregation)是一个用于提高对象检测速度和准确性的模块,尤其在医疗图像的对象检测中表现突出。它结合了RepVGG/RepConv和ShuffleNet的优点,通过结构化重参数化和通道混洗来优化卷积操作,从而在训练阶段提供更多特征信息,并在推理阶段减少计算复杂性和内存消耗。

组件

1. RepVGG/RepConv ShuffleNet

  • 通道分割(Channel Split):输入张量在通道维度上分割为两个等尺寸的张量。
  • 多分支训练(Multi-branch Training):一个张量通过身份分支(Identity Branch)、1x1卷积和3x3卷积进行训练。在推理阶段,这些操作被转换为3x3 RepConv,通过结构重参数化实现。
  • 通道混洗(Channel Shuffle):在训练结束后,张量在通道维度上进行混合,以增强信息融合。这一操作在低计算复杂性下实现了不同通道特征之间的深度信息交换 。

2. RCS-Based One-Shot Aggregation(RCS-OSA)

  • 特征堆叠(Stacked Features):RCS模块反复堆叠以确保特征的重用和相邻层之间的信息流动。在网络的不同位置设置不同数量的堆叠模块 。
  • 单次聚合路径(One-Shot Aggregate Path):仅维持三个特征级联,以减少网络计算负担和内存占用 。
  • 多尺度特征融合(Multi-scale Feature Fusion):通过RCS-OSA + 上采样和RCS-OSA + RepVGG/RepConv下采样,对不同尺寸的特征图进行对齐,实现信息交换 。
  • 内存访问成本(Memory Access Cost):RCS-OSA维持输入通道和最小输出通道的数量,从而降低内存访问成本 。

工作机制

  1. 训练阶段:RCS模块通过多分支拓扑架构学习丰富的特征信息,进行身份映射、1x1卷积和3x3卷积的训练。
  2. 推理阶段:通过结构重参数化,将多分支架构简化为单分支架构,从而减少内存消耗并加快推理速度。
  3. 特征融合:通过通道混洗和特征堆叠,实现高效的特征信息交流和多尺度特征融合,从而在对象检测中提高精度和速度 。

核心代码

from models.common import Conv
import torch.nn as nn
import torch
import torch.nn.functional as F
import numpy as np
import math

# 构建RepVGG块的辅助函数
# -----------------------------
def conv_bn(in_channels, out_channels, kernel_size, stride, padding, groups=1):
    # 创建一个顺序容器
    result = nn.Sequential()
    # 添加卷积层
    result.add_module('conv', nn.Conv2d(in_channels=in_channels, out_channels=out_channels,
                                        kernel_size=kernel_size, stride=stride, padding=padding, groups=groups,
                                        bias=False))
    # 添加批量归一化层
    result.add_module('bn', nn.BatchNorm2d(num_features=out_channels))
    return result

# SEBlock类用于实现Squeeze-and-Excitation模块
class SEBlock(nn.Module):
    def __init__(self, input_channels):
        super(SEBlock, self).__init__()
        # SE模块的中间层神经元数量
        internal_neurons = input_channels // 8
        # 下采样卷积层
        self.down = nn.Conv2d(in_channels=input_channels, out_channels=internal_neurons, kernel_size=1, stride=1,
                              bias=True)
        # 上采样卷积层
        self.up = nn.Conv2d(in_channels=internal_neurons, out_channels=input_channels, kernel_size=1, stride=1,
                            bias=True)
        self.input_channels = input_channels

    def forward(self, inputs):
        # 全局平均池化
        x = F.avg_pool2d(inputs, kernel_size=inputs.size(3))
        # 下采样
        x = self.down(x)
        # ReLU激活
        x = F.relu(x)
        # 上采样
        x = self.up(x)
        # Sigmoid激活
        x = torch.sigmoid(x)
        # 调整张量形状以匹配输入
        x = x.view(-1, self.input_channels, 1, 1)
        # 输入与权重相乘
        return inputs * x

task与yaml配置

详见: https://blog.csdn.net/shangyanaf/article/details/140457853

相关文章
|
7月前
|
机器学习/深度学习
YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
381 1
|
7月前
|
机器学习/深度学习
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
424 0
|
7月前
|
机器学习/深度学习 Ruby
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
719 0
|
7月前
|
机器学习/深度学习 Ruby
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
374 0
|
7月前
|
机器学习/深度学习
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
353 0
|
1月前
|
机器学习/深度学习 计算机视觉 Ruby
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力本文提出了一种新的轻量级密集预测模型EMO,结合高效的倒置残差块(IRB)和Transformer组件,设计了单残差元移动块(MMB)和倒置残差移动块(iRMB)。EMO在ImageNet-1K、COCO2017和ADE20K基准上表现出色,参数、效率和准确度达到良好平衡,尤其在iPhone14上运行速度比EdgeNeXt快2.8-4.0倍。
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进 - 注意力机制】DoubleAttention: 双重注意力机制,全局特征聚合和分配
YOLOv8专栏探讨了该目标检测模型的创新改进,如双重注意力块,它通过全局特征聚合和分配提升效率。该机制集成在ResNet-50中,在ImageNet上表现优于ResNet-152。文章提供了论文、代码链接及核心代码示例。更多实战案例与详细配置见相关CSDN博客链接。
|
5月前
|
机器学习/深度学习 图计算 计算机视觉
【YOLOv8改进 - 注意力机制】 CascadedGroupAttention:级联组注意力,增强视觉Transformer中多头自注意力机制的效率和有效性
YOLO目标检测专栏探讨了Transformer在视觉任务中的效能与计算成本问题,提出EfficientViT,一种兼顾速度和准确性的模型。EfficientViT通过创新的Cascaded Group Attention(CGA)模块减少冗余,提高多样性,节省计算资源。在保持高精度的同时,与MobileNetV3-Large相比,EfficientViT在速度上有显著提升。论文和代码已公开。CGA通过特征分割和级联头部增加注意力多样性和模型容量,降低了计算负担。核心代码展示了CGA模块的实现。
|
5月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
6月前
|
机器学习/深度学习 关系型数据库
【YOLOv8改进 - 注意力机制】NAM:基于归一化的注意力模块,将权重稀疏惩罚应用于注意力机制中,提高效率性能
**NAM: 提升模型效率的新颖归一化注意力模块,抑制非显著权重,结合通道和空间注意力,通过批量归一化衡量重要性。在Resnet和Mobilenet上的实验显示优于其他三种机制。源码见[GitHub](https://github.com/Christian-lyc/NAM)。**