【YOLOv11改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)

简介: 【YOLOv11改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)BoTNet是一种将自注意力机制引入ResNet的创新架构,通过在最后三个瓶颈块中用全局自注意力替换空间卷积,显著提升了图像分类、物体检测和实例分割的性能,同时减少了参数量和计算开销。在COCO实例分割和ImageNet分类任务中,BoTNet分别达到了44.4%的Mask AP和84.7%的Top-1准确率,超越了现有模型。

介绍

摘要

我们介绍了BoTNet,这是一个概念简单但功能强大的骨干架构,将自注意力引入多个计算机视觉任务,包括图像分类、物体检测和实例分割。通过仅在ResNet的最后三个瓶颈块中用全局自注意力替换空间卷积,而不进行其他更改,我们的方法在实例分割和物体检测任务上显著提升了基线性能,同时减少了参数,延迟方面的开销也极小。通过设计BoTNet,我们还指出了带自注意力的ResNet瓶颈块可以视为Transformer块。在不增添任何复杂元素的情况下,BoTNet在COCO实例分割基准上使用Mask R-CNN框架实现了44.4%的Mask AP和49.7%的Box AP,超过了以前在COCO验证集上评估的ResNeSt [67]单模型和单尺度结果的最佳水平。最后,我们展示了将BoTNet设计简单地适应图像分类的方法,结果显示模型在ImageNet基准上达到了84.7%的top-1准确率,而在TPU-v3硬件上的“计算”时间比流行的EfficientNet模型快高达1.64倍。我们希望我们简单而有效的方法能成为未来视觉自注意力模型研究的强有力基准。

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

点击查看文章目录: YOLOv11创新改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

点击查看专栏链接: YOLOv11目标检测创新改进与实战案例

在这里插入图片描述

文章链接

论文地址:论文地址

代码地址: 代码地址

基本原理

多头自注意力(Multi-Head Self-Attention)是一种在神经网络,尤其是Transformer架构中常用的机制,它在自然语言处理、计算机视觉等领域取得了显著的效果。多头自注意力的核心思想是通过多个注意力头(attention heads)来捕捉输入数据中不同部分之间的关系,从而提升模型的表示能力。

自注意力机制(Self-Attention)

在解释多头自注意力之前,先了解自注意力机制。自注意力机制的主要步骤如下:

  1. 输入向量:假设输入是一组向量,表示为$\mathbf{X} = [x_1, x_2, ..., x_n]$,其中每个$x_i$是一个$d$维向量。

  2. 线性变换:对每个输入向量$x_i$进行三个线性变换,生成查询(query)、键(key)和值(value)向量:
    $$ q_i = W_q x_i, \quad k_i = W_k x_i, \quad v_i = W_v x_i $$
    其中,$W_q, W_k, W_v$是可训练的权重矩阵。

  3. 计算注意力得分:通过点积来计算查询向量和键向量之间的相似性得分,然后通过softmax函数归一化:
    $$ \text{score}_{ij} = \frac{q_i \cdot k_j}{\sqrt{d_k}} $$
    其中,$d_k$是键向量的维度。

  4. 加权求和:使用归一化后的得分对值向量进行加权求和,得到每个输入向量的输出表示:
    $$ \text{Attention}(x_i) = \sum_{j=1}^n \text{softmax}(\text{score}_{ij}) v_j $$

多头自注意力(Multi-Head Self-Attention)

多头自注意力机制通过多个注意力头来增强模型的表现力。每个注意力头独立地执行上述的自注意力机制,并最终将这些头的输出进行拼接和线性变换。具体步骤如下:

  1. 多头计算:假设有$h$个注意力头,每个头都有独立的查询、键和值的线性变换:
    $$ q_i^h = W_q^h x_i, \quad k_i^h = W_k^h x_i, \quad v_i^h = W_v^h x_i $$
    每个头都执行自注意力机制,得到输出:
    $$ \text{head}_h = \sum_{j=1}^n \text{softmax}\left(\frac{q_i^h \cdot k_j^h}{\sqrt{d_k}}\right) v_j^h $$

  2. 拼接和线性变换:将所有头的输出拼接在一起,并进行线性变换,得到最终的输出:
    $$ \text{MultiHead}(x_i) = W_o [\text{head}_1, \text{head}_2, ..., \text{head}_h] $$
    其中,$W_o$是用于将拼接结果映射到输出维度的线性变换矩阵。

核心代码

class MHSA(nn.Module):
    def __init__(self, n_dims, width=14, height=14, heads=4):
        super(MHSA, self).__init__()
        self.heads = heads

        self.query = nn.Conv2d(n_dims, n_dims, kernel_size=1)
        self.key = nn.Conv2d(n_dims, n_dims, kernel_size=1)
        self.value = nn.Conv2d(n_dims, n_dims, kernel_size=1)

        self.rel_h = nn.Parameter(torch.randn([1, heads, n_dims // heads, 1, height]), requires_grad=True)
        self.rel_w = nn.Parameter(torch.randn([1, heads, n_dims // heads, width, 1]), requires_grad=True)

        self.softmax = nn.Softmax(dim=-1)

task与yaml配置

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

相关文章
|
4月前
|
机器学习/深度学习 Serverless 计算机视觉
【YOLOv8改进 - 注意力机制】Sea_Attention: Squeeze-enhanced Axial Attention,结合全局语义提取和局部细节增强
【YOLOv8改进 - 注意力机制】Sea_Attention: Squeeze-enhanced Axial Attention,结合全局语义提取和局部细节增强
|
14天前
|
机器学习/深度学习 计算机视觉
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力本文介绍了一种高效的视觉变换器——DilateFormer,通过多尺度扩张注意力(MSDA)模块,在保持高性能的同时显著降低计算成本。MSDA通过在滑动窗口内模拟局部和稀疏的块交互,实现了多尺度特征聚合。实验结果显示,DilateFormer在ImageNet-1K分类、COCO对象检测/实例分割和ADE20K语义分割任务上均取得了优异的性能,且计算成本比现有模型减少70%。
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力
|
14天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力
【YOLOv11改进 - 注意力机制】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力.EMA(Efficient Multi-Scale Attention)模块是一种高效多尺度注意力机制,旨在提高计算机视觉任务中的特征表示效果。该模块通过结合通道和空间信息、采用多尺度并行子网络结构以及优化坐标注意力机制,实现了更高效和有效的特征表示。EMA模块在图像分类和目标检测任务中表现出色,使用CIFAR-100、ImageNet-1k、MS COCO和VisDrone2019等数据集进行了广泛测试。
【YOLOv11改进 - 注意力机制】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力
|
4月前
|
机器学习/深度学习 算法 测试技术
【YOLOv8改进 - 注意力机制】Focused Linear Attention :全新的聚焦线性注意力模块
YOLOv8专栏探讨了该目标检测算法的创新改进,包括使用聚焦线性注意力模块,解决了Transformer在视觉任务中的效率和表达力问题。该模块增强自注意力,提高焦点能力和特征多样性,保持线性复杂度。文章提供了实证证据证明其在多个基准上的性能提升,并在GitHub上发布了代码。论文和更多实战案例链接见文中。
|
4月前
|
机器学习/深度学习 编解码 自然语言处理
【YOLOv8改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)
YOLO目标检测专栏探讨了BoTNet,一种在ResNet瓶颈块中用全局自注意力替换卷积的架构,提升实例分割和检测性能。BoTNet表现优于先前的ResNeSt,且在ImageNet上速度更快。文章介绍了多头自注意力(MHSA)机制,用于学习输入的不同部分间的关系。BoTNet的MHSA层整合在低分辨率特征图中,以捕获长距离依赖。YOLOv8进一步引入MHSA,通过具体的模块定义(如提供的`MHSA`类)来增强模型的注意力机制。相关论文和代码链接可供参考。
|
5月前
|
存储 人工智能 算法
Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索
现有的RAG解决方案可能因为最相关的文档的嵌入可能在嵌入空间中相距很远,这样会导致检索过程变得复杂并且无效。为了解决这个问题,论文引入了多头RAG (MRAG),这是一种利用Transformer的多头注意层的激活而不是解码器层作为获取多方面文档的新方案。
85 1
|
4月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv10改进-注意力机制】HAT(Hybrid Attention Transformer,)混合注意力机制
YOLOv10专栏介绍了一种名为HAT的新方法,旨在改善Transformer在图像超分辨率中的表现。HAT结合通道和窗口注意力,激活更多像素并增强跨窗口信息交互。亮点包括:1) 更多像素激活,2) 有效跨窗口信息聚合,3) 任务特定的预训练策略。HAT模型包含浅层特征提取、深层特征提取和图像重建阶段。提供的代码片段展示了HAT类的定义,参数包括不同层的深度、注意力头数量、窗口大小等。欲了解更多详情和配置,请参考给定链接。
|
6月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023注意力篇 | EMAttention注意力机制(附多个可添加位置)
YOLOv8改进 | 2023注意力篇 | EMAttention注意力机制(附多个可添加位置)
898 0
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了创新的多尺度注意力模块EMA,它强化通道和空间信息处理,同时降低计算负担。EMA模块通过通道重塑和并行子网络优化特征表示,增强长距离依赖建模,在保持效率的同时提升模型性能。适用于图像分类和目标检测任务,尤其在YOLOv8中表现出色。代码实现和详细配置可在文中链接找到。
|
5月前
|
机器学习/深度学习 数据可视化 计算机视觉
【YOLOv8改进 - 注意力机制】Triplet Attention:轻量有效的三元注意力
**摘要:** 本文提出TripletAttention,一种轻量级的计算机视觉注意力机制,通过三分支结构增强跨维度交互。该方法利用旋转操作和残差变换在通道和空间维度上建立依赖,提升模型性能,同时保持低计算成本。作为附加模块,它能集成到现有骨干网络中,适用于图像分类及目标检测等任务。实验证实在ImageNet-1k、MSCOCO和PASCAL VOC上取得良好效果,并提供GradCAM可视化分析。代码已开源:[GitHub](https://github.com/LandskapeAI/triplet-attention)。