当前位置: 首页 > news >正文

ARM (Attention Refinement Module)

ARM模块【来源于BiSeNet】:细化特征图的注意力,增强重要特征并抑制不重要的特征。

Attention Refinement Module (ARM) 详解

ARM (Attention Refinement Module) 是 BiSeNet 中用于增强特征表示的关键模块,它通过注意力机制来细化特征图,突出重要特征并抑制不重要的特征。下面从多个角度深入理解 ARM 模块。

1. ARM 的核心设计思想

ARM 的设计基于以下两个核心思想:

  • 全局上下文感知:通过全局平均池化捕获图像级的上下文信息
  • 通道注意力机制:自适应地重新校准通道特征响应

这种设计使网络能够:

  • 增强与语义相关的特征通道
  • 抑制噪声或不重要的特征通道
  • 在不增加计算复杂度的前提下提升特征表示能力

2. ARM 的详细结构分析

分解 ARM 的结构:

class AttentionRefinementModule(nn.Module):def __init__(self, in_chan, out_chan, *args, **kwargs):super(AttentionRefinementModule, self).__init__()# 特征变换层self.conv = ConvBNReLU(in_chan, out_chan, ks=3, stride=1, padding=1)# 注意力生成分支self.conv_atten = nn.Conv2d(out_chan, out_chan, kernel_size=1, bias=False)self.bn_atten = nn.BatchNorm2d(out_chan)self.sigmoid_atten = nn.Sigmoid()

2.1 特征变换层 (self.conv)

  • 使用一个 3×3 的卷积 + BN + LeakyReLU
  • 将输入特征从 in_chan 维变换到 out_chan
  • 保持空间尺寸不变 (stride=1, padding=1)

2.2 注意力生成分支

  1. 全局平均池化

    • 对每个通道的所有空间位置取平均值
    • 将 H×W×C 的特征图压缩为 1×1×C 的通道描述符
  2. 1×1 卷积 (self.conv_atten):

    • 学习通道间的相关性
    • 无偏置项,减少参数数量
  3. 批归一化 (self.bn_atten):

    • 稳定训练过程
    • 加速收敛
  4. Sigmoid 激活 (self.sigmoid_atten):

    • 将注意力权重归一化到 [0,1] 范围
    • 实现特征的软选择

3. ARM 的前向传播过程

def forward(self, x):# 1. 特征变换feat = self.conv(x)# 2. 生成注意力图atten = F.avg_pool2d(feat, feat.size()[2:])  # 全局平均池化atten = self.conv_atten(atten)              # 1×1卷积atten = self.bn_atten(atten)                # 批归一化atten = self.sigmoid_atten(atten)           # 激活# 3. 应用注意力out = torch.mul(feat, atten)  # 逐通道相乘return out

3.1 数学表达

输出特征可以表示为:
在这里插入图片描述

3.2 计算流程图示

输入特征 [ C × H × W ] ↓
3×3 Conv+BN+ReLU → 特征变换 [ C' × H × W ]↓                    ↓
全局平均池化 [C'×1×1]    |↓                    |
1×1 Conv [C'×1×1]       |↓                    |BN                    |↓                    ↓
Sigmoid → 注意力权重 [C'×1×1]↓逐通道乘法 → 输出特征 [ C' × H × W ]

4. ARM 的特点与优势

4.1 轻量高效

  • 仅增加少量参数 (一个 1×1 卷积)
  • 计算开销主要来自全局平均池化,但这是非常轻量的操作

4.2 与 SE 模块的对比

ARM 与 SENet 中的 SE 模块类似,但有重要区别:

特性ARMSE 模块
位置用于语义分割任务用于图像分类任务
输入来自上下文路径的多尺度特征单一尺度特征
输出直接用于后续分割用于分类
设计目标保持空间信息通道重校准
典型应用BiSeNet 中的特征细化ResNet 等分类网络中的增强

4.3 在 BiSeNet 中的作用

在 BiSeNet 中,ARM 被应用于不同尺度的特征:

  • ARM32:处理最深层特征 (32倍下采样)
  • ARM16:处理中间层特征 (16倍下采样)
  • ARM8:处理较浅层特征 (8倍下采样)

这种多尺度注意力机制使网络能够:

  1. 在深层捕获全局语义信息
  2. 在中间层平衡语义和细节
  3. 在浅层保留更多空间细节

5. ARM 的变体与改进

5.1 Attentionout 模块(正常残差,通道注意VS空间注意)

class Attentionout(nn.Module):def __init__(self, out_chan, *args, **kwargs):self.conv_atten = nn.Conv2d(out_chan, out_chan, kernel_size=1,bias=False)self.bn_atten = nn.BatchNorm2d(out_chan)self.sigmoid_atten = nn.Sigmoid()def forward(self, x):atten = self.conv_atten(x)  # 直接处理特征图,而非池化后的atten = self.bn_atten(atten)atten = self.sigmoid_atten(atten)out = torch.mul(x, atten)x = x + out  # 添加残差连接return out

特点:

  • 不使用全局池化,直接处理空间特征
  • 添加了残差连接
  • 生成空间注意力图而非通道注意力

5.2 SAR 模块 (Spatial Attention Refinement)【局部注意】

class SAR(nn.Module):def __init__(self, in_chan, mid, out_chan):self.conv_reduce = ConvBNReLU(in_chan, mid, 1, 1, 0)self.conv_atten = nn.Conv2d(2, 1, kernel_size=3, padding=1, bias=False)def forward(self, x):x_att = self.conv_reduce(x)low_attention_mean = torch.mean(x_att, 1, True)  # 通道均值low_attention_max = torch.max(x_att, 1, True)[0] # 通道最大值low_attention = torch.cat([low_attention_mean, low_attention_max], dim=1)spatial_attention = self.sigmoid_atten(self.bn_atten(self.conv_atten(low_attention)))x = x * spatial_attention  # 空间注意力return x

特点:

  • 同时考虑通道均值和最大值
  • 生成空间注意力图
  • 使用 3×3 卷积捕获局部空间关系

6. ARM 的实际效果

在实际应用中,ARM 模块能够:

  1. 增强语义特征:使网络更关注与类别相关的区域
  2. 抑制背景噪声:降低无关背景区域的响应
  3. 改善小目标检测:通过多尺度注意力增强小目标的特征
  4. 提升模型鲁棒性:对光照变化、遮挡等更具适应性

在 BiSeNet 的论文中,ARM 模块的引入带来了约 2-3% 的 mIoU 提升,而计算代价仅增加不到 1%。

7. 总结

ARM 模块是 BiSeNet 中高效且有效的注意力机制,它通过:

  • 全局上下文建模
  • 通道注意力重校准
  • 多尺度特征细化

显著提升了语义分割的性能,同时保持了模型的轻量级特性。这种设计思想也被后续许多实时分割网络所借鉴和发展。

相关文章:

  • 51单片机课设基于GM65模块的二维码加条形码识别
  • 无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  • 2025年【道路运输企业安全生产管理人员】考试题库及道路运输企业安全生产管理人员考试内容
  • 1688 数据接口调用秘籍:高效获取商品实时信息的开发指南
  • MySQL多条件查询深度解析
  • MySQL 聚簇索引与非聚簇索引:底层原理与实战深度解析
  • Redis设计与实现——Redis命令参考与高级特性
  • 【Java】应对高并发的思路
  • 20250517 我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间
  • MySQL中的数据类型和函数
  • 游戏引擎学习第289天:将视觉表现与实体类型解耦
  • 非易失性存储技术综合对比:EEPROM、NVRAM、NOR Flash、NAND Flash和SD卡
  • ORACLE RAC环境REDO日志量突然增加的分析
  • 大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129
  • 面试真题 - 高并发场景下Nginx如何优化
  • Vue百日学习计划Day21-23天详细计划-Gemini版
  • 【GESP】C++三级真题 luogu-B3867 [GESP202309 三级] 小杨的储蓄
  • 使用Pinia持久化插件-persist解决刷新浏览器后数据丢失的问题
  • Oracle 的 ASSM 表空间
  • 【论文阅读】A Survey on Multimodal Large Language Models
  • 上海这个咖啡文化节首次“走出去”,率本土品牌亮相英国伦敦
  • 泽连斯基:俄代表团级别低,没人能做决定
  • 董军在第六届联合国维和部长级会议上作大会发言
  • 腾讯一季度净利增14%:AI直接拉动广告收入增长,王者荣耀流水创新高
  • 百色一女子称家委会强制排班被迫抱婴儿校门口站岗?区教育局:自愿参与
  • 男子恶意遗弃幼子获刑,最高法发布涉未成年人家庭保护典型案例