【YOLOv8改进 - 注意力机制】DoubleAttention: 双重注意力机制,全局特征聚合和分配

简介: YOLOv8专栏探讨了该目标检测模型的创新改进,如双重注意力块,它通过全局特征聚合和分配提升效率。该机制集成在ResNet-50中,在ImageNet上表现优于ResNet-152。文章提供了论文、代码链接及核心代码示例。更多实战案例与详细配置见相关CSDN博客链接。

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

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

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

介绍

image-20240716222919922

摘要

学习捕捉远程关系是图像/视频识别的基础。现有的CNN模型通常依赖于增加深度来建模这种关系,这效率极低。在这项工作中,我们提出了“双重注意力块”,这是一个新颖的组件,它从输入图像/视频的整个时空空间聚合和传播有用的全局特征,使后续的卷积层能够高效地访问整个空间的特征。该组件设计了两个步骤的双重注意力机制,第一步通过二阶注意力池化将整个空间的特征聚集到一个紧凑集,第二步通过另一个注意力自适应地选择和分配特征到每个位置。提出的双重注意力块易于采用,可以方便地插入现有的深度神经网络中。我们进行了广泛的消融研究和实验,以评估其在图像和视频识别任务中的性能。在图像识别任务中,配备了我们双重注意力块的ResNet-50在ImageNet-1k数据集上以超过40%的参数量和更少的FLOPs超越了更大规模的ResNet-152架构。在动作识别任务中,我们提出的模型在Kinetics和UCF-101数据集上实现了最新的最先进结果,效率显著高于最近的工作。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

双重注意力机制(Double Attention)的详细介绍及其技术原理

技术原理

双重注意力机制(Double Attention Mechanism)由两个主要步骤组成:特征聚合(Feature Gathering)和特征分配(Feature Distribution)。这一机制旨在有效地捕获输入数据中全局特征,从而使后续的卷积层能够更高效地访问这些特征。

  1. 特征聚合(Feature Gathering)

    • 输入张量:$X \in \mathbb{R}^{c \times d \times h \times w}$,其中 $c$ 是通道数,$d$ 是时间维度,$h$ 和 $w$ 是空间维度。
    • 局部特征:每个位置 $i$ 处的局部特征记为 $v_i$。
    • 聚合函数
      $$ g_i = A \cdot \text{softmax}(b_i)^T $$
      其中 $A$ 和 $B$ 是由不同卷积层生成的特征图,分别表示为 $A = \phi(X; W\phi)$ 和 $B = \text{softmax}(\theta(X; W\theta))$。
  2. 特征分配(Feature Distribution)

    • 分配函数
      $$ z_i = G_{\text{gather}}(X) \cdot v_i $$
      其中 $v_i$ 是位置 $i$ 的注意力向量,确保 $\sumj v{ij} = 1$。
  3. 双重注意力块(Double Attention Block)

    • 组合操作
      $$ Z = G_{\text{gather}}(X, V) = \left[ \phi(X; W_\phi) \cdot \text{softmax}(\theta(X; W_\theta))^T \right] \cdot \text{softmax}(\rho(X; W_\rho)) $$
      这一步包括:
      • 特征聚合:使用二阶注意力池化。
      • 特征分配:通过注意力向量适应性地分配局部需要的特征。
    • 计算图:包括双线性池化和注意力机制(参见文档中的实现图)。

image-20240716222809853

核心代码

class DoubleAttention(nn.Module):

    def __init__(self, in_channels, c_m, c_n, reconstruct=True):
        super().__init__()
        self.in_channels = in_channels
        self.reconstruct = reconstruct
        self.c_m = c_m
        self.c_n = c_n
        # 定义三个1x1卷积层
        self.convA = nn.Conv2d(in_channels, c_m, 1)
        self.convB = nn.Conv2d(in_channels, c_n, 1)
        self.convV = nn.Conv2d(in_channels, c_n, 1)
        # 如果需要重构,定义一个重构卷积层
        if self.reconstruct:
            self.conv_reconstruct = nn.Conv2d(c_m, in_channels, kernel_size=1)

task与yaml配置

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

相关文章
|
算法 计算机视觉
YOLOv8改进 | 损失函数篇 | 最新ShapeIoU、InnerShapeIoU损失助力细节涨点
YOLOv8改进 | 损失函数篇 | 最新ShapeIoU、InnerShapeIoU损失助力细节涨点
1053 2
|
机器学习/深度学习 Go 计算机视觉
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
1180 1
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】CoordAttention: 用于移动端的高效坐标注意力机制 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了一种新的移动网络注意力机制——坐标注意力。它将位置信息融入通道注意力,通过1D特征编码处理,捕获长距离依赖并保持位置精度。生成的注意力图能增强目标表示,适用于MobileNetV2、MobileNeXt和EfficientNet等网络,提高性能,且几乎不增加计算成本。在ImageNet分类和下游任务(目标检测、语义分割)中表现出色。YOLOv8中引入了CoordAtt模块,实现位置敏感的注意力。更多详情及配置见相关链接。
|
9月前
|
算法 Go 计算机视觉
YOLOv8结构解读
YOLOv8是Ultralytics团队开发的最新目标检测模型,基于YOLO系列的高效单阶段架构,进一步优化了精度与速度。相比YOLOv5,YOLOv8在Backbone中移除了Focus模块,优化了CSP结构;在Neck部分增强了特征融合能力;Head部分采用Anchor-Free与解耦头设计,提升检测精度。此外,YOLOv8引入了更先进的损失函数、自对抗训练和动态标签分配等策略,显著提高了模型性能与鲁棒性。
2980 0
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
27047 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
编解码 异构计算
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
4359 7
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
机器学习/深度学习 数据可视化 计算机视觉
YOLOv11改进策略【注意力机制篇】| 2024 SCSA-CBAM 空间和通道的协同注意模块
YOLOv11改进策略【注意力机制篇】| 2024 SCSA-CBAM 空间和通道的协同注意模块
1671 2
YOLOv11改进策略【注意力机制篇】| 2024 SCSA-CBAM 空间和通道的协同注意模块
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进 | 注意力机制 | 添加双重注意力机制 DoubleAttention【附完整代码+小白必备】
在这个教程中,作者介绍了如何在YOLOv8图像识别模型中集成DoubleAttention模块,以提升模型捕捉长距离关系的效率。DoubleAttention通过全局和局部注意力模块捕获图像的全局和局部信息。教程详细阐述了DoubleAttention的工作原理,并提供了相应的代码实现。读者将学习到如何在YOLOv8的网络结构中添加这一组件,并给出了完整的代码示例。此外,还分享了GFLOPs的计算,以及鼓励读者尝试在不同位置添加注意力机制作为进阶练习。完整代码和更多详情可在提供的链接中获取。
|
人工智能 计算机视觉
YOLOv11改进策略【损失函数篇】| NWD损失函数,提高小目标检测精度
YOLOv11改进策略【损失函数篇】| NWD损失函数,提高小目标检测精度
1745 9
|
机器学习/深度学习 编解码 Java
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
《YOLO11目标检测创新改进与实战案例》专栏已更新100+篇文章,涵盖注意力机制、卷积优化、检测头创新、损失与IOU优化、轻量级网络设计等多方面内容。每周更新3-10篇,提供详细代码和实战案例,帮助您掌握最新研究和实用技巧。[专栏链接](https://blog.csdn.net/shangyanaf/category_12810477.html)
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)