国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

制作網(wǎng)頁一般需要兼容哪些網(wǎng)站廣州網(wǎng)站seo

制作網(wǎng)頁一般需要兼容哪些網(wǎng)站,廣州網(wǎng)站seo,招聘模板制作app,網(wǎng)站建設(shè) 語言目錄 什么是注意力機(jī)制1、SENet的實現(xiàn)2、CBAM的實現(xiàn)3、ECA的實現(xiàn)4、CA的實現(xiàn) 什么是注意力機(jī)制 注意力機(jī)制是深度學(xué)習(xí)常用的一個小技巧,它有多種多樣的實現(xiàn)形式,盡管實現(xiàn)方式多樣,但是每一種注意力機(jī)制的實現(xiàn)的核心都是類似的,就…

目錄

  • 什么是注意力機(jī)制
  • 1、SENet的實現(xiàn)
  • 2、CBAM的實現(xiàn)
  • 3、ECA的實現(xiàn)
  • 4、CA的實現(xiàn)

什么是注意力機(jī)制

注意力機(jī)制是深度學(xué)習(xí)常用的一個小技巧,它有多種多樣的實現(xiàn)形式,盡管實現(xiàn)方式多樣,但是每一種注意力機(jī)制的實現(xiàn)的核心都是類似的,就是注意力。

注意力機(jī)制的核心重點就是讓網(wǎng)絡(luò)關(guān)注到它更需要關(guān)注的地方。

當(dāng)我們使用卷積神經(jīng)網(wǎng)絡(luò)去處理圖片的時候,我們會更希望卷積神經(jīng)網(wǎng)絡(luò)去注意應(yīng)該注意的地方,而不是什么都關(guān)注,我們不可能手動去調(diào)節(jié)需要注意的地方,這個時候,如何讓卷積神經(jīng)網(wǎng)絡(luò)去自適應(yīng)的注意重要的物體變得極為重要。

注意力機(jī)制就是實現(xiàn)網(wǎng)絡(luò)自適應(yīng)注意的一個方式。

一般而言,注意力機(jī)制可以分為通道注意力機(jī)制,空間注意力機(jī)制,以及二者的結(jié)合。

1、SENet的實現(xiàn)

SE注意力模塊是一種通道注意力模塊,SE模塊能對輸入特征圖進(jìn)行通道特征加強(qiáng),且不改變輸入特征圖的大小。

  1. SE模塊的S(Squeeze):對輸入特征圖的空間信息進(jìn)行壓縮

  2. SE模塊的E(Excitation):學(xué)習(xí)到的通道注意力信息,與輸入特征圖進(jìn)行結(jié)合,最終得到具有通道注意力的特征圖

  3. SE模塊的作用是在保留原始特征的基礎(chǔ)上,通過學(xué)習(xí)不同通道之間的關(guān)系,提高模型的表現(xiàn)能力。在卷積神經(jīng)網(wǎng)絡(luò)中,通過引入SE模塊,可以動態(tài)地調(diào)整不同通道的權(quán)重,從而提高模型的表現(xiàn)能力。

實現(xiàn)方式:
1、對輸入進(jìn)來的特征層進(jìn)行全局平均池化。
2、然后進(jìn)行兩次全連接,第一次全連接神經(jīng)元個數(shù)較少,第二次全連接神經(jīng)元個數(shù)和輸入特征層相同。
3、在完成兩次全連接后,我們再取一次Sigmoid將值固定到0-1之間,此時我們獲得了輸入特征層每一個通道的權(quán)值(0-1之間)。
4、在獲得這個權(quán)值后,我們將這個權(quán)值乘上原輸入特征層即可。

在這里插入圖片描述

實現(xiàn)代碼

import torch
from torch import nnclass SEAttention(nn.Module):def __init__(self, channel=512, reduction=16):super().__init__()# 對空間信息進(jìn)行壓縮self.avg_pool = nn.AdaptiveAvgPool2d(1)# 經(jīng)過兩次全連接層,學(xué)習(xí)不同通道的重要性self.fc = nn.Sequential(nn.Linear(channel, channel // reduction, bias=False),nn.ReLU(inplace=True),nn.Linear(channel // reduction, channel, bias=False),nn.Sigmoid())def forward(self, x):# 取出batch size和通道數(shù)b, c, _, _ = x.size()# b,c,w,h -> b,c,1,1 -> b,c 壓縮與通道信息學(xué)習(xí)y = self.avg_pool(x).view(b, c)# b,c->b,c->b,c,1,1y = self.fc(y).view(b, c, 1, 1)# 激勵操作return x * y.expand_as(x)if __name__ == '__main__':input = torch.randn(50, 512, 7, 7)se = SEAttention(channel=512, reduction=8)output = se(input)print(input.shape)print(output.shape)

SE模塊是一個即插即用的模塊,在上圖中左邊是在一個卷積模塊之后直接插入SE模塊,右邊是在ResNet結(jié)構(gòu)中添加了SE模塊。

在這里插入圖片描述

2、CBAM的實現(xiàn)

CBAM將通道注意力機(jī)制和空間注意力機(jī)制進(jìn)行一個結(jié)合,相比于SENet只關(guān)注通道的注意力機(jī)制可以取得更好的效果。其實現(xiàn)示意圖如下所示,CBAM會對輸入進(jìn)來的特征層,分別進(jìn)行通道注意力機(jī)制的處理和空間注意力機(jī)制的處理
在這里插入圖片描述
下圖是通道注意力機(jī)制和空間注意力機(jī)制的具體實現(xiàn)方式:
圖像的上半部分為通道注意力機(jī)制,通道注意力機(jī)制的實現(xiàn)可以分為兩個部分,我們會對輸入進(jìn)來的單個特征層,分別進(jìn)行全局平均池化和全局最大池化。之后對平均池化和最大池化的結(jié)果,利用共享的全連接層進(jìn)行處理,我們會對處理后的兩個結(jié)果進(jìn)行相加,然后取一個sigmoid,此時我們獲得了輸入特征層每一個通道的權(quán)值(0-1之間)。在獲得這個權(quán)值后,我們將這個權(quán)值乘上原輸入特征層即可。

圖像的下半部分為空間注意力機(jī)制,我們會對輸入進(jìn)來的特征層,在每一個特征點的通道上取最大值和平均值。之后將這兩個結(jié)果進(jìn)行一個堆疊,利用一次通道數(shù)為1的卷積調(diào)整通道數(shù),然后取一個sigmoid,此時我們獲得了輸入特征層每一個特征點的權(quán)值(0-1之間)。在獲得這個權(quán)值后,我們將這個權(quán)值乘上原輸入特征層即可。
在這里插入圖片描述
實現(xiàn)代碼:

import torch
from torch import nn
from torch.nn import initclass ChannelAttention(nn.Module):def __init__(self, channel, reduction=16):super().__init__()self.maxpool = nn.AdaptiveMaxPool2d(1)self.avgpool = nn.AdaptiveAvgPool2d(1)self.se = nn.Sequential(nn.Conv2d(channel, channel // reduction, 1, bias=False),nn.ReLU(),nn.Conv2d(channel // reduction, channel, 1, bias=False))self.sigmoid = nn.Sigmoid()def forward(self, x):max_result = self.maxpool(x)avg_result = self.avgpool(x)max_out = self.se(max_result)avg_out = self.se(avg_result)output = self.sigmoid(max_out + avg_out)return outputclass SpatialAttention(nn.Module):def __init__(self, kernel_size=7):super().__init__()self.conv = nn.Conv2d(2, 1, kernel_size=kernel_size, padding=kernel_size // 2)self.sigmoid = nn.Sigmoid()def forward(self, x):max_result, _ = torch.max(x, dim=1, keepdim=True)avg_result = torch.mean(x, dim=1, keepdim=True)result = torch.cat([max_result, avg_result], 1)output = self.conv(result)output = self.sigmoid(output)return outputclass CBAMAttention(nn.Module):def __init__(self, channel=512, reduction=16, kernel_size=7):super().__init__()self.ca = ChannelAttention(channel=channel, reduction=reduction)self.sa = SpatialAttention(kernel_size=kernel_size)def forward(self, x):b, c, _, _ = x.size()out = x * self.ca(x)out = out * self.sa(out)return outif __name__ == '__main__':input = torch.randn(50, 512, 7, 7)kernel_size = input.shape[2]cbam = CBAMAttention(channel=512, reduction=16, kernel_size=kernel_size)output = cbam(input)print(input.shape)print(output.shape)

3、ECA的實現(xiàn)

ECANet是也是通道注意力機(jī)制的一種實現(xiàn)形式。ECANet可以看作是SENet的改進(jìn)版。
ECANet的作者認(rèn)為SENet對通道注意力機(jī)制的預(yù)測帶來了副作用,捕獲所有通道的依賴關(guān)系是低效并且是不必要的。
在ECANet的論文中,作者認(rèn)為卷積具有良好的跨通道信息獲取能力。

ECA模塊的思想是非常簡單的,它去除了原來SE模塊中的全連接層,直接在全局平均池化之后的特征上通過一個1D卷積進(jìn)行學(xué)習(xí)。

既然使用到了1D卷積,那么1D卷積的卷積核大小的選擇就變得非常重要了,了解過卷積原理的同學(xué)很快就可以明白,1D卷積的卷積核大小會影響注意力機(jī)制每個權(quán)重的計算要考慮的通道數(shù)量。用更專業(yè)的名詞就是跨通道交互的覆蓋率。

如下圖所示,左圖是常規(guī)的SE模塊,右圖是ECA模塊。ECA模塊用1D卷積替換兩次全連接。

在這里插入圖片描述

代碼實現(xiàn):

import torch
from torch import nn
from torch.nn import initclass ECAAttention(nn.Module):def __init__(self, kernel_size=3):super().__init__()self.gap = nn.AdaptiveAvgPool2d(1)self.conv = nn.Conv1d(1, 1, kernel_size=kernel_size, padding=(kernel_size - 1) // 2)self.sigmoid = nn.Sigmoid()def init_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):init.kaiming_normal_(m.weight, mode='fan_out')if m.bias is not None:init.constant_(m.bias, 0)elif isinstance(m, nn.BatchNorm2d):init.constant_(m.weight, 1)init.constant_(m.bias, 0)elif isinstance(m, nn.Linear):init.normal_(m.weight, std=0.001)if m.bias is not None:init.constant_(m.bias, 0)def forward(self, x):y = self.gap(x)  # bs,c,1,1y = y.squeeze(-1).permute(0, 2, 1)  # bs,1,cy = self.conv(y)  # bs,1,cy = self.sigmoid(y)  # bs,1,cy = y.permute(0, 2, 1).unsqueeze(-1)  # bs,c,1,1return x * y.expand_as(x)if __name__ == '__main__':input = torch.randn(50, 512, 7, 7)eca = ECAAttention(kernel_size=3)output = eca(input)print(input.shape)print(output.shape)

4、CA的實現(xiàn)

在這里插入圖片描述
該文章的作者認(rèn)為現(xiàn)有的注意力機(jī)制(如CBAM、SE)在求取通道注意力的時候,通道的處理一般是采用全局最大池化或平均池化,這樣會損失掉物體的空間信息。作者期望在引入通道注意力機(jī)制的同時,引入空間注意力機(jī)制,作者提出的注意力機(jī)制將位置信息嵌入到了通道注意力中。

CA注意力的實現(xiàn)如圖所示,可以認(rèn)為分為兩個并行階段:

將輸入特征圖分別在為寬度和高度兩個方向分別進(jìn)行全局平均池化,分別獲得在寬度和高度兩個方向的特征圖。假設(shè)輸入進(jìn)來的特征層的形狀為[C, H, W],在經(jīng)過寬方向的平均池化后,獲得的特征層shape為[C, H, 1],此時我們將特征映射到了高維度上;在經(jīng)過高方向的平均池化后,獲得的特征層shape為[C, 1, W],此時我們將特征映射到了寬維度上。

然后將兩個并行階段合并,將寬和高轉(zhuǎn)置到同一個維度,然后進(jìn)行堆疊,將寬高特征合并在一起,此時我們獲得的特征層為:[C, 1, H+W],利用卷積+標(biāo)準(zhǔn)化+激活函數(shù)獲得特征。

之后再次分開為兩個并行階段,再將寬高分開成為:[C, 1, H]和[C, 1, W],之后進(jìn)行轉(zhuǎn)置。獲得兩個特征層[C, H, 1]和[C, 1, W]。

然后利用1x1卷積調(diào)整通道數(shù)后取sigmoid獲得寬高維度上的注意力情況。乘上原有的特征就是CA注意力機(jī)制。

實現(xiàn)代碼:

import torch
from torch import nnclass CAAttention(nn.Module):def __init__(self, channel, reduction=16):super(CAAttention, self).__init__()self.conv_1x1 = nn.Conv2d(in_channels=channel, out_channels=channel // reduction, kernel_size=1, stride=1,bias=False)self.relu = nn.ReLU()self.bn = nn.BatchNorm2d(channel // reduction)self.F_h = nn.Conv2d(in_channels=channel // reduction, out_channels=channel, kernel_size=1, stride=1,bias=False)self.F_w = nn.Conv2d(in_channels=channel // reduction, out_channels=channel, kernel_size=1, stride=1,bias=False)self.sigmoid_h = nn.Sigmoid()self.sigmoid_w = nn.Sigmoid()def forward(self, x):_, _, h, w = x.size()x_h = torch.mean(x, dim=3, keepdim=True).permute(0, 1, 3, 2)x_w = torch.mean(x, dim=2, keepdim=True)x_cat_conv_relu = self.relu(self.bn(self.conv_1x1(torch.cat((x_h, x_w), 3))))x_cat_conv_split_h, x_cat_conv_split_w = x_cat_conv_relu.split([h, w], 3)s_h = self.sigmoid_h(self.F_h(x_cat_conv_split_h.permute(0, 1, 3, 2)))s_w = self.sigmoid_w(self.F_w(x_cat_conv_split_w))out = x * s_h.expand_as(x) * s_w.expand_as(x)return outif __name__ == '__main__':input = torch.randn(50, 512, 7, 7)eca = CAAttention(512, reduction=16)output = eca(input)print(input.shape)print(output.shape)
http://m.aloenet.com.cn/news/40646.html

相關(guān)文章:

  • 廣州做網(wǎng)站網(wǎng)絡(luò)公司bt櫻桃 磁力島
  • 做網(wǎng)站的要求臺州百度推廣優(yōu)化
  • 網(wǎng)站開發(fā)者id百度號碼認(rèn)證平臺官網(wǎng)
  • php律師網(wǎng)站源碼推廣計劃方案模板
  • 吳中區(qū)企業(yè)網(wǎng)站制作哪家靠譜seo常用工具網(wǎng)站
  • 西安網(wǎng)站制作sxyun淘寶seo搜索優(yōu)化
  • 制作php網(wǎng)站用什么軟件手機(jī)百度網(wǎng)址大全首頁
  • 叫人做網(wǎng)站要注意軟件開發(fā)公司
  • 福田網(wǎng)站開發(fā)北京seo營銷培訓(xùn)
  • 廣西住房建設(shè)廳網(wǎng)站廈門人才網(wǎng)官網(wǎng)招聘信息網(wǎng)
  • 深圳企業(yè)做網(wǎng)站百度賬號安全中心官網(wǎng)
  • 做學(xué)校網(wǎng)站導(dǎo)航條應(yīng)該有哪些知乎關(guān)鍵詞排名優(yōu)化工具
  • 東莞營銷型網(wǎng)站建設(shè)費用鄭志平愛站網(wǎng)創(chuàng)始人
  • 邢臺做企業(yè)網(wǎng)站淘寶關(guān)鍵詞搜索量查詢工具
  • 網(wǎng)站建設(shè)公司yu專業(yè)百度seo排名優(yōu)化
  • 相關(guān)網(wǎng)站怎么做seo關(guān)鍵詞排名價格
  • 深圳設(shè)計網(wǎng)站培訓(xùn)學(xué)校開發(fā)一個網(wǎng)站的步驟流程
  • 重慶網(wǎng)站建設(shè) 公司列舉常見的網(wǎng)絡(luò)營銷工具
  • 團(tuán)購網(wǎng)站推廣怎么做百度搜索關(guān)鍵詞技巧
  • 合肥有多少做網(wǎng)站的優(yōu)化營商環(huán)境工作總結(jié)
  • 網(wǎng)站訪問者qq山東工藝美術(shù)學(xué)院網(wǎng)站建設(shè)公司
  • 沃爾瑪網(wǎng)上商城可以用購物卡嗎seo技術(shù)優(yōu)化整站
  • 設(shè)計師網(wǎng)站建設(shè)icp備案查詢官網(wǎng)
  • 溫州高端網(wǎng)站建設(shè)公司哪家好全球最大的磁力搜索引擎
  • 一個公司做100個網(wǎng)站人民日報官網(wǎng)
  • html5手機(jī)網(wǎng)站源碼月入百萬的游戲代理
  • eclipse 簡單網(wǎng)站開發(fā)搜索關(guān)鍵詞的方法
  • 無錫哪里做網(wǎng)站市場調(diào)研報告怎么寫
  • 企業(yè)網(wǎng)站建設(shè)西安今日熱點新聞事件摘抄50字
  • dedecms 網(wǎng)站地圖模板網(wǎng)絡(luò)熱詞作文