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 中高效且有效的注意力機制,它通過:

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

顯著提升了語義分割的性能,同時保持了模型的輕量級特性。這種設計思想也被后續許多實時分割網絡所借鑒和發展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81843.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81843.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81843.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AR0144CSSC20SUKA0-CRBR——1/4英寸 1.0 MP 高性能CMOS圖像傳感器解析

產品概述: AR0144CSSC20SUKA0-CRBR 是一款1/4 英寸,1.0 Mp CMOS 數字圖像傳感器,帶有 1280H x 800V 有效像素陣列 全局快門CMOS數字圖像傳感器,它結合了新型的創新全局快門像素設計,適用于準確快速的移動場景捕捉。該…

深入理解遞歸算法:Go語言實現指南

深入理解遞歸算法:Go語言實現指南 引言 遞歸是編程中一種優雅而強大的算法思想,通過函數自我調用的方式解決復雜問題。本文將使用Go語言演示遞歸的核心原理,并通過典型示例幫助開發者掌握這一重要技術。 一、遞歸基礎概念 1.1 遞歸定義 遞歸…

vue2實現【瀑布流布局】

瀑布流 1. 解釋2. 形成結構和樣式3. 自定義指令 1. 解釋 瀑布流特征: 等寬不等高:元素寬度固定,高度根據內容自適應。錯落排列:元素像瀑布一樣從上到下依次填充,自動尋找最短列插入 體現:圖中第一排1&…

CSS display有幾種屬性值

在 CSS 中,display 屬性是控制元素布局和渲染方式的核心屬性之一。它有多種屬性值,每個值都決定了元素在文檔流中的表現形式。以下是 display 的主要屬性值分類及說明: 1. 塊級和行內布局 塊級元素 (block) 特性:獨占一行&…

基于Java實現可靠傳輸

實現可靠傳輸 1. 結合代碼和 LOG 文件分析針對每個項目舉例說明解決效果。 RDT1.0 對應 Log 日志:Log 1.0.txt,接收文件 recvData 1.0.txt RDT1.0 版本是在可靠信道上進行可靠的數據傳輸,因此沒有過多的內容需要說明,發送方 L…

機器學習10-隨機森林

隨機森林學習筆記 一、隨機森林簡介 隨機森林(Random Forest)是一種集成學習算法,基于決策樹構建模型。它通過組合多個決策樹的結果來提高模型的準確性和穩定性。隨機森林的核心思想是利用“集成”的方式,將多個弱學習器組合成一…

LeetCode 438. 找到字符串中所有字母異位詞 | 滑動窗口與字符計數數組解法

文章目錄 問題描述核心思路:滑動窗口 字符計數數組1. 字符計數數組2. 滑動窗口 算法步驟完整代碼實現復雜度分析關鍵點總結類似問題 問題描述 給定兩個字符串 s 和 p,要求找到 s 中所有是 p 的**字母異位詞(Anagram)**的子串的起…

idea中,git的cherry-pick怎么用

背景: A同學在A分支進行開發, B同學在B分支進行開發,B同學開發過程中發現,A同學在A分支上面的某次提交,例如某次提交了一個工具類,B同學也用的到這個工具類,但是B又不想mergeA分支的代碼,此時就可以用到git的chery pick能力.

深入解析:如何基于開源OpENer開發EtherNet/IP從站服務

一、EtherNet/IP協議概述 EtherNet/IP(Industrial Protocol)是一種基于以太網的工業自動化通信協議,它將CIP(Common Industrial Protocol)封裝在標準以太網幀中,通過TCP/IP和UDP/IP實現工業設備間的通信。作為ODVA(Open DeviceNet Vendors Association)組織的核心協議…

當 PyIceberg 和 DuckDB 遇見 AWS S3 Tables:打造 Serverless 數據湖“開源夢幻組合”

引言 在一些大數據分析場景比如電商大數據營銷中,我們需要快速分析存儲海量用戶行為數據(如瀏覽、加購、下單),以進行用戶行為分析,優化營銷策略。傳統方法依賴 Spark/Presto 集群或 Redshift 查詢 S3 上的 Parquet/O…

流復備機斷檔處理

文章目錄 環境癥狀問題原因解決方案 環境 系統平臺:UOS(海光),UOS (飛騰),UOS(鯤鵬),UOS(龍芯),UOS (申威),銀河麒麟svs(X86_64&…

【藍橋杯真題精講】第 16 屆 Python A 組(省賽)

文章目錄 T1 偏藍 (5/5)T2 IPv6 (0/5)T3 2025 圖形 (10/10)T4 最大數字 (10/10)T5 倒水 (15/15)T6 拼好數 (0/15)T7 登山 (20/20)T8 原料采購 (20/20) 更好的閱讀體驗 高速訪問:https://wiki.dwj601.cn/ds-and-algo/lan-qiao-cup/16th-python-a/永久鏈接&#xff1…

SpringBoot+Dubbo+Zookeeper實現分布式系統步驟

SpringBootDubboZookeeper實現分布式系統 一、分布式系統通俗解釋二、環境準備(詳細版)1. 軟件版本2. 安裝Zookeeper(單機模式) 三、完整項目結構(帶詳細注釋)四、手把手代碼實現步驟1:創建父工…

Spring的業務層,持久層,控制層的關系

在 Spring 框架中,控制層(Controller)、業務層(Service) 和 持久層(Repository/Mapper) 是分層架構的核心組成部分,職責分離明確,通過依賴注入(DI&#xff09…

css實現不確定內容的高度過渡

實現效果&#xff1a;鼠標懸浮按鈕&#xff0c;高度過渡出現如圖所示文本框 代碼&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

計算機視覺與深度學習 | matlab實現ARIMA-WOA-CNN-LSTM時間序列預測(完整源碼和數據)

以下是一個基于MATLAB的ARIMA-WOA-CNN-LSTM時間序列預測框架。由于完整代碼較長,此處提供核心模塊和實現思路,完整源碼和數據可通過文末方式獲取。 1. 數據準備(示例數據) 使用MATLAB內置的航空乘客數據集: % 加載數據 data = readtable(airline-passengers.csv); data …

在 Excel 中使用東方仙盟軟件————仙盟創夢IDE

安裝插件 用仙盟創夢編寫插件代碼 源碼 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ExcelDna.Integration;namespace 東方仙盟.仙盟創夢IDE_招標系統 {public static class 仙盟創夢_招標專…

Sql刷題日志(day9)

一、筆試 1、limit offset&#xff1a;分頁查詢 SELECT column1, column2, ... FROM table_name LIMIT number_of_rows OFFSET start_row; --跳過前 start_row 行&#xff0c;返回接下來的 number_of_rows 行。 2、lag、lead&#xff1a;查詢前后行數據 --lag函數用于訪問當…

C++面試3——const關鍵字的核心概念、典型場景和易錯陷阱

const關鍵字的核心概念、典型場景和易錯陷阱 一、const本質&#xff1a;類型系統的守護者 1. 與#define的本質差異 維度#defineconst編譯階段預處理替換編譯器類型檢查作用域無作用域&#xff08;全局污染&#xff09;遵循塊作用域調試可見性符號消失保留符號信息類型安全無類…

16-看門狗和RTC

一、獨立看門狗 1、獨立看門狗概述 在由單片機構成的微型計算機系統中&#xff0c;由于單片機的工作常常會受到來自外界電磁場的干擾&#xff0c;造成程序的跑飛&#xff08;不按照正常程序進行運行&#xff0c;如程序重啟&#xff0c;但是如果我們填加看門狗的技術&#xff0…