视觉 注意力机制——通道注意力、空间注意力、自注意力

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。

 一、注意力机制

我们可以通过眼睛看到各种各样的事物,感知世界上的大量信息;可以让自己免受海量信息的干扰,是因为人的选择能力,可以选择重要的信息,而忽视不重要信息

举个例子,下面有一张图片,当我们看到这张图片的时候会下意识把注意力集中到熊猫的身上,而忽略背景。

image.gif

即:在观看这幅图像的时候,并非能够对图片的所有信息给予相同的关注度,而是将注意力着重放在某个局部区域。

同样,希望网络也具有这种能力,从而在网络中引入了注意力机制。注意力机制,是对输入进行加权再输出,希望网络关注到的地方给较大的权重,不希望网络注意的地方给较小的权重。

再举个例子,在自然语言处理领域,在分析一句话的时候,并不是所有的词的信息都需要被关注,可以选择重要的词分析,即可理解句子所传达的语义。


二、通道注意力机制

通道注意力机制的代表模型是:压缩和激励网络(Squeeze-and-Excitation Networks,SENet)。SENet 分为压缩和激励两个部分,其中压缩部分的目的是对全局空间信息进行压缩,然后在通道维度进行特征学习,形成各个通对道的重要性,最后通过激励部分对各个通道进行分配不同权重的。

image.gif

上图是SE模块的结构, 在压缩部分,输入的元素特征图的维度是 H×W×C,H、W 和 C 分别代表高度、宽度和通道数。压缩部分的功能是将维数从 H×W×C 压缩至1×1×C,即把 H×W 压缩为 1×1 维,这个过程由全局平均池化实现。

激励部分,需要将压缩部分得到的 1×1×C 的维度融入全连接层,预测各个通道的重要程度,然后再激励到前面特征图对应通道上进行操作。采用简单的门控机制与Sigmoid 激活函数。

小结:在通道注意力机制,学习各个通道的重要性时,是先对特征图的空间进行压缩,然后在通道维度进行学习,得到各个通道的重要性。



三、空间注意力机制

空间注意力机制的代表模型是:空间变换神经网络(Spatial Transformer Networks,STN),STN 能够对各种形变数据在空间中进行转换自动捕获重要区域特征。它能够保证图像在经过裁剪、平移或者旋转等操作后,依然可以获得和操作前的原始图像相同的结果。

举个例子,在MNIST 数字分类的中应用STN,该分类过程一共包含 4 个步骤:

    1. MNIST中的数字,是经过随机平移、缩放和旋转处理;把它们输入到STN网络中;
    2. 通过STN网络,预测前面输入数字的变换(是平移了?还是缩放了?或是旋转了?)
    3. STN网络预测出“变换前的数字”,即没经过变换的数字是怎样的
    4. 最终进行分类预测

    image.gif

    STN 网络包括局部网络、参数化网络采样(网络生成器)和差分图像采样。

    局部网络:预测输入数字的变换(是平移了?还是缩放了?或是旋转了?)

    网络生成器:获得输出特征图坐标点在输入特征图中坐标点的对应位置。

    image.gif


    四、混合注意力机制

    在混合注意力机制中,通道注意力和空间注意力可以通过串联、或者并联的方式进行组合。

    混合注意力机制的代表模型是:卷积注意力模块(Convolutional Block Attention Module,CBAM),它包括通道注意力模块CAM、和空间注意力模块SAM。

    CBAM的模型结构如下,它对输入的特征图,首先进行通道注意力模块处理;得到的结果,再经过空间注意力模块处理,最后得到调整后特征。

    image.gif

    通道注意力模块CAM

    CAM的输入是特征图,维度设为HxWxC;其中H是指特征图的高度,W是指宽度,C是指通道数。

    它的思路流程是:

      1. 首先对输入的特征图,进行全局池化和平均池化;(在空间维度进行池化,压缩空间尺寸;便于后面学习通道的特征)
      2. 然后将得到全局和评价池化的结果,送入到多层感知机中MLP学习;(基于MLP学习通道维度的特征,和各个通道的重要性)
      3. 最后将MLP输出额结果,进行“加”操作,接着经过Sigmoid函数的映射处理,得到最终的“通道注意力值”。

      image.gif

      计算公式如下:

      image.gif

      空间注意力模块SAM

      SAM的输入是CAM输出的特征图。

      它的思路流程是:

        1. 首先对输入的特征图,进行全局池化和平均池化;(在通道维度进行池化,压缩通道大小;便于后面学习空间的特征)
        2. 然后将全局池化和平均池化的结果,按照通道拼接;得到特征图维度是HxWx2,
        3. 最后对拼接的结果,进行卷积操作,得到特征图维度是HxWx1;接着通过激活函数处理。

        image.gif

        计算公式如下:

        image.gif


        五、自注意力机制

        背景

         在注意力机制引入计算机视觉前,主要是靠叠加卷积层与池化层来进行特征提取,并扩大感受野。举个例子,在语义分割中,Deeplab系列提出的带有多尺度空洞卷积的 ASPP 模块

          • ASPP对输入的特征图,采用不同dilation rate 的空洞卷积进行卷积操作,以多个不同比例获取图像的上下文信息。
          • ASPP模块只能利用空洞卷积从像素点周围少数点去获取上下文信息,而不能形成密集的全局上下文信息

          为了获得密集的全局上下文信息,从而建立像素两两之间的依赖关系,引入“自注意力机制”。


          六、注意力基础

          6.1 注意力机制原理

          注意力机制在语义分割和图像描述生成方面被广泛使用。使用注意力处理任务时,不同信息的重要程度由权值来体现。

          注意力机制对不同信息关注度区分体现在权值分配,注意力机制可以视为查询矩阵以及加权平均值构成了多层感知机(Multilayer Perceptron, MLP)。

          注意力的思想,类似于寻址。给定 Query,去 Source 中计算 Query和不同 Key 的相关性,即计算 Source 中不同 Value 值的权重系数;Value 的加权平均结果可以作为注意力值。

          image.gif

          注意力的计算公式如下:

          其中,Lx代表Source的长度。


          6.2 注意力机制计算过程

          大多数方法采用的注意力机制计算过程可以细化为如下三个阶段。

          三阶段的注意力机制计算流程:

            • 第一阶段是计算 Query和不同 Key 的相关性,即计算不同 Value 值的权重系数;
            • 第二阶段对上一阶段的输出进行归一化处理,将数值的范围映射到 0 和 1 之间。
            • 第三阶段,对值和每个值对应的权重相乘的结果做累加操作,从而获得注意力数值。

            image.gif

            公式化表示:

            第一阶段是计算 Query和不同 Key 的相关性,即计算不同 Value 值的权重系数;相关性计算主要包括点积余弦相似性或者引入神经网络这三种方法。计算方式分别如下:

            image.gif

            第二阶段对上一阶段的输出进行归一化处理,将数值的范围映射到 0 和 1 之间。其中,ai表第 i 个值被分为的权重值。

            image.gif编辑

            第三阶段,对值和每个值对应的权重相乘的结果做累加操作,从而获得注意力数值。

            image.gif



            参考文献

            [1] 谢雨杉. 基于深度神经网络的图像语义分割技术研究[D].成都:电子科技大学,2022.

            [2] 冀芒来. 基于注意力机制的道路驾驶场景实时语义分割[D].吉林:吉林大学,2022.

            本文只是简单介绍了注意力机制中的通道注意力、空间注意力、自注意力,后续文章会分别详细介绍,其中的模型包括:SK-Net、ResNeSt、DANet、PFANet、SOCA、ECA-Net等等


            相关文章
            |
            5月前
            |
            机器学习/深度学习
            YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
            YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
            328 1
            |
            5月前
            |
            机器学习/深度学习
            YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
            YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
            354 0
            |
            5月前
            |
            机器学习/深度学习 Ruby
            YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
            YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
            622 0
            |
            5月前
            |
            机器学习/深度学习 Ruby
            YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
            YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
            270 0
            |
            3月前
            |
            机器学习/深度学习 图计算 计算机视觉
            【YOLOv8改进 - 注意力机制】 CascadedGroupAttention:级联组注意力,增强视觉Transformer中多头自注意力机制的效率和有效性
            YOLO目标检测专栏探讨了Transformer在视觉任务中的效能与计算成本问题,提出EfficientViT,一种兼顾速度和准确性的模型。EfficientViT通过创新的Cascaded Group Attention(CGA)模块减少冗余,提高多样性,节省计算资源。在保持高精度的同时,与MobileNetV3-Large相比,EfficientViT在速度上有显著提升。论文和代码已公开。CGA通过特征分割和级联头部增加注意力多样性和模型容量,降低了计算负担。核心代码展示了CGA模块的实现。
            |
            3月前
            |
            机器学习/深度学习 测试技术 网络架构
            【YOLOv10改进-注意力机制】MSCAAttention多尺度卷积注意力
            YOLOv10专栏介绍了一种新的卷积网络架构SegNeXt,它在语义分割任务中展现出优于Transformer模型的效率和效果。SegNeXt通过名为Multi-Scale Convolutional Attention (MSCA)的组件,结合局部信息聚合、多尺度上下文捕获和通道关系模拟,提升了性能。在多个数据集上,SegNeXt以较少参数实现了超过现有SOTA的性能,特别是在Pascal VOC 2012上,以1/10的参数量达到90.6%的mIoU。YOLOv10引入了MSCA模块,用于增强目标检测的上下文关注。相关代码和配置详情可在链接中找到。
            |
            4月前
            |
            机器学习/深度学习 自然语言处理 机器人
            注意力机制详解(二)
            注意力机制(Attention Mechanism)对比分析:无Attention模型中,Encoder-Decoder框架处理文本序列时,输入信息被编码为单一的中间语义表示,导致每个目标单词生成时使用相同编码,忽视了输入序列中各单词的不同影响。引入Attention模型后,每个目标单词根据输入序列动态分配注意力权重,更好地捕捉输入相关性,尤其适用于长序列,避免信息丢失。Self-Attention则进一步在序列内部建立联系,用于理解不同部分间的关系,常见于Transformer和BERT等模型中。
            |
            3月前
            |
            机器学习/深度学习 移动开发 资源调度
            【YOLOv8改进 - 注意力机制】S2Attention : 整合空间位移和分割注意力
            YOLOv8专栏探讨了MLP主干网络的创新,如S2-MLPv2,它通过通道扩展和分块空间移位提高性能,达到83.6%的ImageNet top-1准确率。文章介绍了分割注意力模块,用于融合特征图。提供了S2Attention类的代码示例,展示如何结合空间位移和分割注意力。详细内容和实战案例可在[CSDN博客](https://blog.csdn.net/shangyanaf)找到。
            |
            4月前
            |
            机器学习/深度学习 人工智能 自然语言处理
            注意力机制详解(一)
            注意力机制是受人类认知过程启发的一种深度学习技术,它允许模型动态地聚焦于输入的不同部分,根据上下文分配“注意力”。这种机制最早在序列到序列模型中提出,解决了长距离依赖问题,增强了模型理解和处理复杂数据的能力。基本的注意力计算涉及查询(Q)、键(K)和值(V),通过不同方式(如点积、拼接等)计算相关性并应用softmax归一化,得到注意力权重,最后加权组合值向量得到输出。自注意力是注意力机制的一种形式,其中Q、K和V通常是相同的。在自然语言处理(NLP)中,注意力机制广泛应用在Transformer和预训练模型如BERT中,显著提升了模型的表现。
            |
            4月前
            |
            机器学习/深度学习 计算机视觉
            YOLOv8改进 | 注意力机制 | 添加混合局部通道注意力——MLCA【原理讲解】
            YOLOv8专栏介绍了混合局部通道注意力(MLCA)模块,它结合通道、空间和局部信息,提升目标检测性能,同时保持低复杂度。文章提供MLCA原理、代码实现及如何将其集成到YOLOv8中,助力读者实战深度学习目标检测。[YOLOv8改进——更新各种有效涨点方法](https://blog.csdn.net/m0_67647321/category_12548649.html)
            下一篇
            无影云桌面