【Block總結】PSA,金字塔擠壓注意力,解決傳統注意力機制在捕獲多尺度特征時的局限性

論文信息

  • 標題: EPSANet: An Efficient Pyramid Squeeze Attention Block on Convolutional Neural Network
  • 論文鏈接: arXiv
  • GitHub鏈接: https://github.com/murufeng/EPSANet

在這里插入圖片描述

創新點

EPSANet提出了一種新穎的金字塔擠壓注意力(PSA)模塊,旨在解決傳統注意力機制在捕獲多尺度特征時的局限性。其主要創新點包括:

  1. 高效性: PSA模塊能夠在較低的計算成本下有效提取多尺度空間信息。
  2. 靈活性: 該模塊可以作為即插即用的組件,輕松集成到現有的卷積神經網絡(CNN)架構中。
  3. 多尺度特征表示: EPSANet通過自適應地重新校準跨維通道的注意權重,增強了特征表示能力。

方法

EPSANet的核心是PSA模塊,其實現過程如下:

  1. 多尺度特征提取: 通過Squeeze and Concat (SPC)模塊獲得通道維度上的多尺度特征圖。
  2. 注意力計算: 使用SEWeight模塊提取不同尺度特征圖的注意力,生成通道方向的注意力向量。
  3. 再校準: 通過Softmax對通道維度的注意向量進行再校準,得到多尺度信道的再校準權重。
  4. 特征融合: 在重新校準的權重和對應的特征圖上進行按元素乘積,輸出豐富的多尺度特征圖。
    在這里插入圖片描述

效果

EPSANet在多個計算機視覺任務中表現出色,包括圖像分類、目標檢測和實例分割。與傳統的通道注意力方法相比,EPSANet在性能上有顯著提升。例如:

  • 在ImageNet數據集上,EPSANet的Top-1準確率比SENet-50提高了1.93%。
  • 在MS-COCO數據集上,使用Mask-RCNN時,EPSANet在目標檢測和實例分割任務中分別提高了2.7和1.7的AP值。

實驗結果

實驗結果表明,EPSANet在多個標準數據集上均超越了當前最新的技術。具體表現為:

  • 在COCO 2017數據集上,EPSANet的目標檢測率超越了ECANet,AP75指標提高了1.4%。
  • 論文中進行了大量的定性和定量實驗,驗證了EPSANet在圖像分類、目標檢測和實例分割方面的先進性能。

總結

EPSANet通過引入金字塔擠壓注意力模塊,成功地提升了卷積神經網絡在多尺度特征提取方面的能力。其靈活的設計使得EPSANet能夠廣泛應用于各種計算機視覺任務,展現出良好的泛化性能和高效性。該研究為未來的深度學習模型設計提供了新的思路和方法。

代碼

import torch
import torch.nn as nnclass SEWeightModule(nn.Module):def __init__(self, channels, reduction=16):super(SEWeightModule, self).__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.fc1 = nn.Conv2d(channels, channels//reduction, kernel_size=1, padding=0)self.relu = nn.ReLU(inplace=True)self.fc2 = nn.Conv2d(channels//reduction, channels, kernel_size=1, padding=0)self.sigmoid = nn.Sigmoid()def forward(self, x):out = self.avg_pool(x)out = self.fc1(out)out = self.relu(out)out = self.fc2(out)weight = self.sigmoid(out)return weightdef conv(in_planes, out_planes, kernel_size=3, stride=1, padding=1, dilation=1, groups=1):"""standard convolution with padding"""return nn.Conv2d(in_planes, out_planes, kernel_size=kernel_size, stride=stride,padding=padding, dilation=dilation, groups=groups, bias=False)def conv1x1(in_planes, out_planes, stride=1):"""1x1 convolution"""return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)class PSAModule(nn.Module):def __init__(self, inplans, planes, conv_kernels=[3, 5, 7, 9], stride=1, conv_groups=[1, 4, 8, 16]):super(PSAModule, self).__init__()self.conv_1 = conv(inplans, planes//4, kernel_size=conv_kernels[0], padding=conv_kernels[0]//2,stride=stride, groups=conv_groups[0])self.conv_2 = conv(inplans, planes//4, kernel_size=conv_kernels[1], padding=conv_kernels[1]//2,stride=stride, groups=conv_groups[1])self.conv_3 = conv(inplans, planes//4, kernel_size=conv_kernels[2], padding=conv_kernels[2]//2,stride=stride, groups=conv_groups[2])self.conv_4 = conv(inplans, planes//4, kernel_size=conv_kernels[3], padding=conv_kernels[3]//2,stride=stride, groups=conv_groups[3])self.se = SEWeightModule(planes // 4)self.split_channel = planes // 4self.softmax = nn.Softmax(dim=1)def forward(self, x):batch_size = x.shape[0]x1 = self.conv_1(x)x2 = self.conv_2(x)x3 = self.conv_3(x)x4 = self.conv_4(x)feats = torch.cat((x1, x2, x3, x4), dim=1)feats = feats.view(batch_size, 4, self.split_channel, feats.shape[2], feats.shape[3])x1_se = self.se(x1)x2_se = self.se(x2)x3_se = self.se(x3)x4_se = self.se(x4)x_se = torch.cat((x1_se, x2_se, x3_se, x4_se), dim=1)attention_vectors = x_se.view(batch_size, 4, self.split_channel, 1, 1)attention_vectors = self.softmax(attention_vectors)feats_weight = feats * attention_vectorsfor i in range(4):x_se_weight_fp = feats_weight[:, i, :, :]if i == 0:out = x_se_weight_fpelse:out = torch.cat((x_se_weight_fp, out), 1)return outif __name__ == "__main__":dim=512# 如果GPU可用,將模塊移動到 GPUdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 輸入張量 (batch_size, channels,height, width)x = torch.randn(1,dim,14,14).to(device)# 初始化 PSAModule 模塊block = PSAModule(dim,dim) # kernel_size為height或者widthprint(block)block = block.to(device)# 前向傳播output = block(x)print("輸入:", x.shape)print("輸出:", output.shape)

輸出結果:
在這里插入圖片描述

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

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

相關文章

【重新認識C語言----結構體篇】

目錄 -----------------------------------------begin------------------------------------- 引言 1. 結構體的基本概念 1.1 為什么需要結構體? 1.2 結構體的定義 2. 結構體變量的聲明與初始化 2.1 聲明結構體變量 2.2 初始化結構體變量 3. 結構體成員的訪…

如何在Vscode中接入Deepseek

一、獲取Deepseek APIKEY 首先,登錄Deepseek官網的開放平臺:DeepSeek 選擇API開放平臺,然后登錄Deepseek后臺。 點擊左側菜單欄“API keys”,并創建API key。 需要注意的是,生成API key復制保存到本地,丟失…

電腦開機提示按f1原因分析及終極解決方法來了

經常有網友問到一個問題,我電腦開機后提示按f1怎么解決?不管理是臺式電腦,還是筆記本,都有可能會遇到開機需要按F1,才能進入系統的問題,引起這個問題的原因比較多,今天小編在這里給大家列舉了比…

AI協助探索AI新構型自動化創新的技術實現

一、AI自進化架構的核心范式 1. 元代碼生成與模塊化重構 - 代碼級自編程:基于神經架構搜索的強化學習框架,AI可通過生成元代碼模板(框架的抽象層定義、神經元結點-網絡拓撲態的編碼抽象定義)自動組合功能模塊。例如&#xff0…

RAID獨立硬盤冗余陣列

目錄 一、RAID基本功能 二、RAID常見級別 三、實現方式 1、軟件磁盤陣列 2、硬件磁盤陣列 四、熱備盤 RAID(Redundant Array of Independent Disks)是一種通過將多個硬盤組合成一個邏輯單元來提升存儲性能、冗余性或兩者兼具的技術。 一、RAID基本…

【高級篇 / IPv6】(7.2) ? 04. 在60E上配置ADSL撥號寬帶上網(IPv4) ? FortiGate 防火墻

【簡介】除了單位用戶以外,大部分個人用戶目前使用的仍然是30E、50E、60E系列防火墻,固件無法達到目前最高版本7.6,這里以最常用的60E為例,演示固件版本7.2下實現ADSL撥號寬帶的IPv6上網。由于內容比較多,文章分上、下…

Qt之設置QToolBar上的按鈕樣式

通常給QAction設置icon后,菜單欄的菜單項和工具欄(QToolBar)上對應的按鈕會同時顯示該icon。工具欄還可以使用setToolButtonStyle函數設置按鈕樣式,其參數為枚舉值: enum ToolButtonStyle {ToolButtonIconOnly,ToolButtonTextOnly,ToolButtonTextBesideIcon,ToolButtonTe…

【從零開始系列】DeepSeek-R1:(本地部署使用)思維鏈推理大模型,開源的神!——Windows/Linux本地環境測試 + vLLM遠程部署服務

目錄 一、環境配置 1.硬件設備評估 2.基礎環境安裝 3.模型參數下載 (1) huggingface鏡像源下載 (2) modelscope魔搭社區下載 (推薦) 二、基礎使用(Linux、Window兼容) 1.Transformers庫自編代碼 三、進階使用(僅Lin…

DeepSeek 開源模型全解析(2024.1.1–2025.2.6)

目錄 一、通用大語言模型:DeepSeek-V3 系列 137 二、推理優化模型:DeepSeek-R1 系列 811 三、多模態模型:Janus 系列 10 四、生態整合與部署建議 五、總結與展望 以下為 DeepSeek 在 2024 年 1 月至 2025 年 2 月期間發布的開源模型及其…

Mac: docker安裝以后報錯Command not found: docker

文章目錄 前言解決辦法(新的)解決步驟(原來的)不推薦總結 前言 ?本操作參考 http://blog.csdn.net/enhenglhm/article/details/137955756 原作者,更詳細請,查看詳細內容請關注原作者。 一般,…

《手札·開源篇》數字化轉型助力永磁電機企業降本增效:快速設計軟件如何讓研發效率提升40%?

數字化轉型助力永磁電機企業降本增效:快速設計軟件如何讓研發效率提升40%? 一、痛點:傳統研發模式正在吃掉企業的利潤 永磁電機行業面臨兩大挑戰: 研發周期長:一款新電機從設計到量產需6-12個月,電磁計算…

0207作業

思維導圖 服務器 enum Type{TYPE_REGIST,TYPE_LOGIN };typedef struct Pack{int size;enum Type type;char buf[2048];}pack_t;typedef struct list{union Data{struct List* tail;char str[64];}data;struct List* next;struct List* prev; }List;List* create_node(){List* …

深入淺出 DeepSeek V2 高效的MoE語言模型

今天,我們來聊聊 DeepSeek V2 高效的 MoE 語言模型,帶大家一起深入理解這篇論文的精髓,同時,告訴大家如何將這些概念應用到實際中。 🌟 什么是 MoE?——Mixture of Experts(專家混合模型&#x…

RabbitMQ 從入門到精通:從工作模式到集群部署實戰(五)

#作者:閆乾苓 系列前幾篇: 《RabbitMQ 從入門到精通:從工作模式到集群部署實戰(一)》:link 《RabbitMQ 從入門到精通:從工作模式到集群部署實戰(二)》: lin…

nodejs:express + js-mdict 網頁查詢英漢詞典,能播放.spx 聲音

向 DeepSeek R1 提問: 我想寫一個Web 前端網頁,后臺用 nodejs js-mdict , 實現在線查詢英語單詞,并能播放.spx 聲音文件 1. 項目結構 首先,創建一個項目目錄,結構如下: mydict-app/ ├── public/ │ …

Linux ftrace 內核跟蹤入門

文章目錄 ftrace介紹開啟ftraceftrace使用ftrace跟蹤指定內核函數ftrace跟蹤指定pid ftrace原理ftrace與stracetrace-cmd 工具KernelShark參考 ftrace介紹 Ftrace is an internal tracer designed to help out developers and designers of systems to find what is going on i…

【抽象代數】1.1. 運算及關系

集合與映射 定義1. 設 為 的子集,定義 到 的映射 : 使得 ,稱 為 到 的嵌入映射。 定義2. 設 為 的子集, 為 到 的映射, 為 到 的映射,如果 ,稱為的開拓, 為 的限制&…

pytest+request+yaml+allure 接口自動化測試全解析[手動寫的跟AI的對比]

我手動寫的:Python3:pytest+request+yaml+allure接口自動化測試_request+pytest+yaml-CSDN博客 AI寫的:pytest+request+yaml+allure 接口自動化測試全解析 在當今的軟件開發流程中,接口自動化測試扮演著至關重要的角色。它不僅能夠提高測試效率,確保接口的穩定性和正確性…

數據庫高安全—審計追蹤:傳統審計統一審計

書接上文數據庫高安全—角色權限:權限管理&權限檢查,從權限管理和權限檢查方面解讀了高斯數據庫的角色權限,本篇將從傳統審計和統一審計兩方面對高斯數據庫的審計追蹤技術進行解讀。 4 審計追蹤 4.1 傳統審計 審計內容的記錄方式通…

第三個Qt開發實例:利用之前已經開發好的LED驅動在Qt生成的界面中控制LED2的亮和滅

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我們是直接利用GPIO子系統控制了LED2的亮和滅,這篇博文中我們利用之前寫好的LED驅動程序在Qt的生成的界面中控制LED2的亮和滅。 之前已經在下面兩篇博文中實現了LED驅動…