【人工智能99问】视觉注意力机制有哪些?(26/99)

发布于:2025-08-19 ⋅ 阅读:(23) ⋅ 点赞:(0)

视觉注意力机制

视觉注意力机制是模拟人类视觉系统“选择性关注重要信息、忽略冗余信息”的机制,已成为计算机视觉领域的核心技术之一。它通过对输入特征赋予动态权重,增强关键信息的表征能力,显著提升模型在分类、检测、分割等任务中的性能。本文将系统梳理视觉注意力机制的分类,并详细介绍各类别的原理、使用场景、优缺点及计算过程。

一、基于注意力“选择方式”的分类:硬注意力与软注意力

这是最基础的分类方式,核心区别在于是否对输入信息进行离散选择

1. 硬注意力(Hard Attention)

原理

硬注意力通过离散选择输入中的少数关键区域(或位置),完全忽略其他区域。例如,在图像中选择一个或多个子区域(如目标所在的 bounding box),仅对这些区域进行特征提取和处理。其选择过程通常是随机的(如通过采样),因此需要结合强化学习(RL)或其他可微分近似方法进行训练(如 Gumbel-Softmax)。

使用场景
  • 资源受限的场景(如边缘设备的实时目标检测),需减少计算量;
  • 需明确聚焦特定目标的任务(如目标跟踪中的候选区域筛选);
  • 早期的图像 captioning 任务(选择图像中的关键区域生成描述)。
优缺点
优点 缺点
计算效率高(仅处理部分区域) 不可微,训练难度大(需 RL 优化)
决策解释性强(明确选择区域) 采样随机性可能导致训练不稳定
计算示例(简化版)

假设输入图像为 I ∈ R H × W × 3 I \in \mathbb{R}^{H \times W \times 3} IRH×W×3,目标是选择一个区域:

  1. 生成候选区域集合 R = { r 1 , r 2 , . . . , r k } R = \{r_1, r_2, ..., r_k\} R={r1,r2,...,rk}(如通过滑动窗口生成);
  2. 计算每个区域的“重要性分数” s i = f ( r i ) s_i = f(r_i) si=f(ri) f f f 为简单分类器);
  3. 通过强化学习策略 π ( r i ∣ s i ) \pi(r_i | s_i) π(risi) 选择区域 r ∗ = arg ⁡ max ⁡ π ( r i ∣ s i ) r^* = \arg\max \pi(r_i | s_i) r=argmaxπ(risi)
  4. 仅对 r ∗ r^* r 提取特征并输出。

2. 软注意力(Soft Attention)

原理

软注意力对输入的所有区域赋予连续权重(权重和为1),通过加权求和保留全部信息。权重通过可微分函数计算(如 softmax),因此可直接用反向传播训练。其核心是“关注程度”的量化,而非绝对选择。

使用场景
  • 大多数视觉任务(图像分类、语义分割、目标检测等);
  • 需要保留全局上下文的场景(如全景分割);
  • 与深度学习模型结合的端到端训练场景。
优缺点
优点 缺点
可微分,训练稳定(支持反向传播) 计算量较大(需处理全部区域)
保留全局信息,鲁棒性强 权重分布可能过于分散,重点不突出
计算示例(简化版)

输入特征图 X ∈ R C × H × W X \in \mathbb{R}^{C \times H \times W} XRC×H×W,输出加权特征 Y Y Y

  1. 计算空间位置权重 α ∈ R H × W \alpha \in \mathbb{R}^{H \times W} αRH×W,其中 α i , j = softmax ( g ( X : , i , j ) ) \alpha_{i,j} = \text{softmax}(g(X_{:,i,j})) αi,j=softmax(g(X:,i,j)) g g g 为线性层);
  2. 加权求和: Y c = ∑ i , j α i , j ⋅ X c , i , j Y_c = \sum_{i,j} \alpha_{i,j} \cdot X_{c,i,j} Yc=i,jαi,jXc,i,j(对每个通道单独加权)。

二、基于“关注维度”的分类:空间、通道与混合注意力

这类注意力聚焦于特征图的不同维度(空间位置、通道、或两者结合),是计算机视觉中最常用的分类方式。

1. 空间注意力(Spatial Attention)

原理

空间注意力建模空间位置之间的依赖关系,通过生成“空间权重图”( H × W H \times W H×W),增强重要空间区域(如目标所在位置)的特征,抑制背景区域。通常通过对特征图的空间信息(如像素强度、梯度)建模实现。

实现逻辑
  1. 对输入特征图 X ∈ R C × H × W X \in \mathbb{R}^{C \times H \times W} XRC×H×W 进行空间信息聚合(如通道维度的平均池化或最大池化,得到 2 × H × W 2 \times H \times W 2×H×W 的特征);
  2. 用卷积层(如 3 × 3 3 \times 3 3×3 卷积)对聚合特征降维并激活,生成空间权重图 α ∈ R 1 × H × W \alpha \in \mathbb{R}^{1 \times H \times W} αR1×H×W
  3. 权重图与原特征图逐像素相乘: Y = X ⊙ α Y = X \odot \alpha Y=Xα ⊙ \odot 为逐元素乘法)。
使用场景
  • 目标检测(突出目标所在区域,如 FPN 中的空间注意力模块);
  • 语义分割(区分不同空间位置的类别,如 U-Net decoder 中的空间注意力);
  • 图像修复(聚焦缺失区域的周围上下文)。
优缺点
优点 缺点
有效捕获空间上下文关系 忽略通道间的依赖(如“边缘通道”与“颜色通道”的关联)
实现简单,计算开销低 对全局空间依赖建模能力有限(长距离位置关联弱)
计算示例(以 CBAM 空间注意力为例)

输入特征 X ∈ R C × H × W X \in \mathbb{R}^{C \times H \times W} XRC×H×W

  1. 通道池化:计算 X a v g = AvgPool ( X ) ∈ R 1 × H × W X_{avg} = \text{AvgPool}(X) \in \mathbb{R}^{1 \times H \times W} Xavg=AvgPool(X)R1×H×W X m a x = MaxPool ( X ) ∈ R 1 × H × W X_{max} = \text{MaxPool}(X) \in \mathbb{R}^{1 \times H \times W} Xmax=MaxPool(X)R1×H×W
  2. 拼接与卷积: [ X a v g , X m a x ] → 3 × 3 [X_{avg}, X_{max}] \rightarrow 3 \times 3 [Xavg,Xmax]3×3 卷积(降维至 1 通道)→ ReLU → 3 × 3 3 \times 3 3×3 卷积 → α = sigmoid ( ⋅ ) ∈ R 1 × H × W \alpha = \text{sigmoid}(\cdot) \in \mathbb{R}^{1 \times H \times W} α=sigmoid()R1×H×W
  3. 输出: Y = X ⊙ α Y = X \odot \alpha Y=Xα

2. 通道注意力(Channel Attention)

原理

通道注意力建模特征通道之间的依赖关系,通过生成“通道权重向量”( C × 1 × 1 C \times 1 \times 1 C×1×1),突出关键通道(如目标的边缘通道、纹理通道),抑制冗余通道(如背景噪声通道)。核心假设是:不同通道对应不同的语义信息(如边缘、颜色、纹理),重要性不同。

实现逻辑
  1. 对输入特征图 X ∈ R C × H × W X \in \mathbb{R}^{C \times H \times W} XRC×H×W 进行空间信息聚合(如全局平均池化或最大池化,得到 C × 1 × 1 C \times 1 \times 1 C×1×1 的通道描述);
  2. 用 MLP 或卷积层对通道描述降维再升维,生成通道权重 β ∈ R C × 1 × 1 \beta \in \mathbb{R}^{C \times 1 \times 1} βRC×1×1
  3. 权重与原特征图逐通道相乘: Y = X ⊙ β Y = X \odot \beta Y=Xβ
使用场景
  • 图像分类(如 SENet 在 ImageNet 竞赛中夺冠);
  • 目标检测(如 RetinaNet 中用通道注意力增强特征表达);
  • 细粒度分类(如区分鸟类亚种,需突出羽毛纹理通道)。
优缺点
优点 缺点
有效筛选关键语义通道 忽略空间位置信息(同一通道中不同位置的重要性差异)
计算开销低(仅依赖通道维度) 对通道的全局聚合可能丢失局部细节
计算示例(以 SENet 为例)

输入特征 X ∈ R C × H × W X \in \mathbb{R}^{C \times H \times W} XRC×H×W

  1. 全局平均池化: Z = AvgPool ( X ) ∈ R C × 1 × 1 Z = \text{AvgPool}(X) \in \mathbb{R}^{C \times 1 \times 1} Z=AvgPool(X)RC×1×1(每个通道的全局统计量);
  2. MLP 映射: Z → FC ( C / r ) → ReLU → FC ( C ) → β = sigmoid ( ⋅ ) ∈ R C × 1 × 1 Z \rightarrow \text{FC}(C/r) \rightarrow \text{ReLU} \rightarrow \text{FC}(C) \rightarrow \beta = \text{sigmoid}(\cdot) \in \mathbb{R}^{C \times 1 \times 1} ZFC(C/r)ReLUFC(C)β=sigmoid()RC×1×1 r r r 为降维率,如 16);
  3. 输出: Y = X ⊙ β Y = X \odot \beta Y=Xβ(每个通道按权重缩放)。

3. 混合注意力(Spatial-Channel Attention)

原理

混合注意力结合空间注意力和通道注意力,同时建模空间位置和通道间的依赖关系,弥补单一维度的不足。典型结构如 CBAM(Convolutional Block Attention Module)和 ECA-Net(结合通道和空间的轻量化设计)。

实现逻辑(以 CBAM 为例)
  1. 先通过通道注意力模块生成通道权重 β \beta β,对输入特征 X X X 加权得到 X ′ = X ⊙ β X' = X \odot \beta X=Xβ
  2. 再通过空间注意力模块对 X ′ X' X 生成空间权重 α \alpha α,最终输出 Y = X ′ ⊙ α Y = X' \odot \alpha Y=Xα
使用场景
  • 对特征表达要求高的任务(如高精度语义分割、小目标检测);
  • 通用特征提取网络(如 ResNet 中嵌入 CBAM 提升性能)。
优缺点
优点 缺点
同时捕获空间和通道依赖,特征表达更强 计算量比单一注意力略高
模块化设计,易嵌入现有网络 可能存在冗余(部分场景无需双重注意力)

三、基于“注意力范围”的分类:自注意力与交叉注意力

这类注意力聚焦于注意力计算的输入来源,是 Transformer 时代的核心分类方式。

1. 自注意力(Self-Attention)

原理

自注意力建模同一特征图内部的依赖关系,通过计算每个位置与其他所有位置的关联权重,实现“全局上下文建模”。核心是通过 Query(Q)、Key(K)、Value(V)矩阵计算注意力分布:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V Attention(Q,K,V)=softmax(dk QKT)V
其中 d k d_k dk 为 K 的维度,用于缩放避免梯度消失。

实现逻辑
  1. 输入特征 X ∈ R N × d X \in \mathbb{R}^{N \times d} XRN×d N N N 为序列长度, d d d 为特征维度);
  2. 生成 Q、K、V: Q = X W q Q = XW_q Q=XWq K = X W k K = XW_k K=XWk V = X W v V = XW_v V=XWv W q , W k , W v W_q, W_k, W_v Wq,Wk,Wv 为可学习参数);
  3. 计算注意力权重: A = softmax ( Q K T / d k ) ∈ R N × N A = \text{softmax}(QK^T / \sqrt{d_k}) \in \mathbb{R}^{N \times N} A=softmax(QKT/dk )RN×N
  4. 加权求和: Y = A V ∈ R N × d Y = AV \in \mathbb{R}^{N \times d} Y=AVRN×d(每个位置特征更新为全局加权结果)。
使用场景
  • 全局依赖建模任务(如 ViT 图像分类、DETR 目标检测);
  • 长距离上下文任务(如全景分割、视频理解);
  • 替代卷积的“非局部建模”场景(如 Non-Local Network)。
优缺点
优点 缺点
捕获长距离依赖(不受卷积核大小限制) 计算复杂度高( O ( N 2 ) O(N^2) O(N2) N N N 为序列长度)
全局上下文建模能力强 对高分辨率图像(如 224 × 224 224 \times 224 224×224 拆分为 196 个 patch)效率低
计算示例(简化版自注意力)

假设输入序列 X = [ x 1 , x 2 , x 3 ] ∈ R 3 × 4 X = [x_1, x_2, x_3] \in \mathbb{R}^{3 \times 4} X=[x1,x2,x3]R3×4(3 个位置,每个特征 4 维):

  1. 生成 Q、K、V(假设 W q , W k , W v W_q, W_k, W_v Wq,Wk,Wv 4 × 2 4 \times 2 4×2 矩阵,降维至 2 维):
    Q = [ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ] Q = [[1,2], [3,4], [5,6]] Q=[[1,2],[3,4],[5,6]] K = [ [ 1 , 1 ] , [ 2 , 2 ] , [ 3 , 3 ] ] K = [[1,1], [2,2], [3,3]] K=[[1,1],[2,2],[3,3]] V = [ [ 10 , 20 ] , [ 30 , 40 ] , [ 50 , 60 ] ] V = [[10,20], [30,40], [50,60]] V=[[10,20],[30,40],[50,60]]
  2. 计算 Q K T = [ 1 × 1 + 2 × 1 1 × 2 + 2 × 2 1 × 3 + 2 × 3 3 × 1 + 4 × 1 3 × 2 + 4 × 2 3 × 3 + 4 × 3 5 × 1 + 6 × 1 5 × 2 + 6 × 2 5 × 3 + 6 × 3 ] = [ 3 6 9 7 14 21 11 22 33 ] QK^T = \begin{bmatrix} 1×1+2×1 & 1×2+2×2 & 1×3+2×3 \\ 3×1+4×1 & 3×2+4×2 & 3×3+4×3 \\ 5×1+6×1 & 5×2+6×2 & 5×3+6×3 \end{bmatrix} = \begin{bmatrix} 3 & 6 & 9 \\ 7 & 14 & 21 \\ 11 & 22 & 33 \end{bmatrix} QKT= 1×1+2×13×1+4×15×1+6×11×2+2×23×2+4×25×2+6×21×3+2×33×3+4×35×3+6×3 = 37116142292133
  3. 缩放( d k = 2 d_k=2 dk=2 2 ≈ 1.414 \sqrt{2} \approx 1.414 2 1.414): Q K T / 1.414 ≈ [ 2.12 4.24 6.36 4.95 9.90 14.85 7.78 15.56 23.34 ] QK^T / 1.414 \approx \begin{bmatrix} 2.12 & 4.24 & 6.36 \\ 4.95 & 9.90 & 14.85 \\ 7.78 & 15.56 & 23.34 \end{bmatrix} QKT/1.414 2.124.957.784.249.9015.566.3614.8523.34
  4. softmax 得权重 A ≈ [ 0 0 1 0 0 1 0 0 1 ] A \approx \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 1 \\ 0 & 0 & 1 \end{bmatrix} A 000000111 (简化后);
  5. 输出 Y = A V = [ V 3 , V 3 , V 3 ] = [ [ 50 , 60 ] , [ 50 , 60 ] , [ 50 , 60 ] ] Y = AV = [V_3, V_3, V_3] = [[50,60], [50,60], [50,60]] Y=AV=[V3,V3,V3]=[[50,60],[50,60],[50,60]](所有位置关注第 3 个位置)。

2. 交叉注意力(Cross-Attention)

原理

交叉注意力建模两个不同特征图之间的依赖关系(如模态间或模块间),用一个特征图作为 Query(Q),另一个作为 Key(K)和 Value(V),实现“跨特征关联”。公式与自注意力类似,但 Q、K、V 来源不同:
CrossAttention ( Q , K , V ) = softmax ( Q K T d k ) V \text{CrossAttention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V CrossAttention(Q,K,V)=softmax(dk QKT)V
其中 Q Q Q 来自特征图 A, K , V K, V K,V 来自特征图 B。

使用场景
  • 跨模态任务(如图文检索、VQA 视觉问答);
  • 编码器-解码器架构(如 Transformer 解码器关注编码器输出);
  • 引导式分割(如用文本 prompt 引导图像分割,如 Segment Anything)。
优缺点
优点 缺点
建模跨特征/模态关联,支持任务引导 依赖 Q 与 K/V 的特征对齐(如模态差异大时效果差)
灵活性高,可用于多任务适配 计算复杂度随输入长度增加而升高
计算示例(图文交叉注意力)
  • 文本特征 T ∈ R M × d T \in \mathbb{R}^{M \times d} TRM×d M M M 为文本长度)作为 Q;
  • 图像特征 I ∈ R N × d I \in \mathbb{R}^{N \times d} IRN×d N N N 为图像 patch 数)作为 K、V;
  • 注意力权重 A ∈ R M × N A \in \mathbb{R}^{M \times N} ARM×N 表示每个文本词对图像 patch 的关注;
  • 输出 Y = A V ∈ R M × d Y = AV \in \mathbb{R}^{M \times d} Y=AVRM×d 为文本引导的图像特征。

3. 多头注意力(Multi-Head Attention)

原理

多头注意力是自注意力/交叉注意力的扩展,通过将 Q、K、V 分割为 h h h 个“头”(子空间),并行计算注意力后拼接,捕获不同子空间的关联模式。公式为:
MultiHead ( Q , K , V ) = Concat ( head 1 , . . . , head h ) W o \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h) W_o MultiHead(Q,K,V)=Concat(head1,...,headh)Wo
其中 head i = Attention ( Q W q i , K W k i , V W v i ) \text{head}_i = \text{Attention}(QW_{q_i}, KW_{k_i}, VW_{v_i}) headi=Attention(QWqi,KWki,VWvi)

使用场景
  • 所有 Transformer 架构(如 ViT、DETR、Swin Transformer);
  • 需要多样化特征关联的任务(如细粒度分类、复杂场景分割)。
优缺点
优点 缺点
捕获多子空间关联,特征表达更丰富 参数和计算量增加( h h h 倍)
缓解单一注意力的偏差问题 头间可能存在冗余

四、其他重要分类与扩展

1. 时间注意力(Temporal Attention)

原理

针对视频等时序数据,建模时间维度的依赖关系,通过计算不同帧之间的注意力权重,聚焦关键帧(如动作发生的帧)。

使用场景
  • 视频分类(如行为识别,关注动作帧);
  • 视频目标跟踪(跟踪目标在时间上的连续性);
  • 视频生成(生成时序连贯的帧)。

2. 稀疏注意力(Sparse Attention)

原理

为解决自注意力 O ( N 2 ) O(N^2) O(N2) 的高复杂度,仅计算部分关键位置的注意力(如局部窗口内、预先定义的稀疏模式),代表方法如 Swin Transformer 的窗口注意力、Longformer 的滑动窗口注意力。

优缺点
优点 缺点
计算复杂度降至 O ( N ) O(N) O(N) O ( N log ⁡ N ) O(N \log N) O(NlogN) 可能丢失部分长距离依赖
支持高分辨率输入(如 512 × 512 512 \times 512 512×512 图像) 需设计合理的稀疏模式(如窗口划分)

五、总结与应用趋势

视觉注意力机制已从早期的空间/通道注意力发展到 Transformer 主导的自注意力时代,其核心价值是动态聚焦关键信息。不同类型的注意力各有侧重:

  • 空间/通道注意力:轻量级,适合嵌入卷积网络;
  • 自注意力/多头注意力:全局建模能力强,适合复杂场景;
  • 交叉注意力:跨模态/任务适配,支持引导式学习。

未来趋势包括:更高效的注意力计算(如线性注意力)、注意力与卷积的融合(如 ConvNeXt)、动态注意力结构(自适应选择注意力类型)等。理解各类注意力的特性,是设计高效视觉模型的关键。


网站公告

今日签到

点亮在社区的每一天
去签到