YOLOv5新增註意力機制的具體步驟
class ChannelAttention(nn.Module):
def __init__(self, in_planes, ratio=16):
super(ChannelAttention, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.max_pool = nn.AdaptiveMaxPool2d(1)
self.f1 = nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False)
self.relu = nn.ReLU()
self.f2 = nn.Conv2d(in_planes // ratio, in_planes, 1, bias=False)
# 寫法二 , 亦可使用順序容器
# self.sharedMLP = nn.Sequential(
# nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False), nn.ReLU(),
# nn.Conv2d(in_planes // rotio, in_planes, 1, bias=False))
self.sigmoid = nn.Sigmoid()
def forward(self, x):
avg_out = self.f2(self.relu(self.f1(self.avg_pool(x))))
max_out = self.f2(self.relu(self.f1(self.max_pool(x))))
out = self.sigmoid(avg_out + max_out)
return torch.mul(x, out)
class SpatialAttention(nn.Module):
def __init__(self, kernel_size=7):
super(SpatialAttention, self).__init__()
assert kernel_size in (3, 7), 'kernel size must be 3 or 7'
padding = 3 if kernel_size == 7 else 1
self.conv = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
avg_out = torch.mean(x, dim=1, keepdim=True)
max_out, _ = torch.max(x, dim=1, keepdim=True)
out = torch.cat([avg_out, max_out], dim=1)
out = self.sigmoid(self.conv(out))
return torch.mul(x, out)
class CBAMC3(nn.Module):
# CSP Bottleneck with 3 convolutions
def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion
super(CBAMC3, self).__init__()
c_ = int(c2 * e) # hidden channels
self.cv1 = 跟單網gendan5.comConv(c1, c_, 1, 1)
self.cv2 = Conv(c1, c_, 1, 1)
self.cv3 = Conv(2 * c_, c2, 1)
self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)])
self.channel_attention = ChannelAttention(c2, 16)
self.spatial_attention = SpatialAttention(7)
# self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)])
def forward(self, x):
# 將最後的標準卷積模組改為了注意力機制提取特徵
return self.spatial_attention(
self.channel_attention(self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1))))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2916723/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS framework的具體合成步驟iOSFramework
- 關於安裝DNS伺服器的新增步驟具體圖文詳解DNS伺服器
- Java訪問資料庫的具體步驟:Java資料庫
- 小程式中接入廣告的具體步驟
- 線上教育平臺搭建具體步驟
- vnc使用教程,vnc使用教程的具體操作步驟VNC
- 將 java 專案部署到 linux 上的具體步驟JavaLinux
- 軟體結構設計,具體分為幾個步驟?
- win10怎麼安裝telnet服務_win10新增telnet服務具體步驟Win10
- 如何匯入甜美粉色系濾鏡LR的具體操作步驟
- 機制與意義:數字現實與玩家的具身模式模式
- 實現PMC的數字化轉型需要哪些具體的步驟?
- 資料探勘的基本步驟有哪些?具體流程是怎樣的?
- SNP乾貨分享:SAP資料脫敏的具體實施步驟
- 如何實現Java 設定動態代理ip的具體操作步驟Java
- hanlp新增自定義字典的步驟介紹HanLP
- 調整innodb redo log files數目和大小的具體方法和步驟
- android studio呼叫攝像頭拍照及具體步驟演示程式碼Android
- rac新增節點步驟(11g)
- 【軟體硬體】相機標定(Camera calibration)原理、步驟
- DKHhadoop叢集新增節點管理功能的操作步驟Hadoop
- 批次給大量影片新增srt字幕的簡單步驟
- 11gR2 RAC新增節點步驟
- Jaspersoft?Studio新增mysql資料庫配置步驟MySql資料庫
- 通過一個具體的例子,講解 SAP BDC 技術的使用步驟試讀版
- win10 2004怎樣新增網路攝像機_win10 2004新增網路攝像機步驟Win10
- 注意力機制
- 四個步驟在CRM系統中設定遊戲化機制遊戲
- Windows系統,在Pycharm裡面(python3.9)下載dlib的依賴包的具體步驟WindowsPyCharmPython
- win10強制關閉當機遊戲的步驟_win10怎樣強制關閉當機遊戲Win10遊戲
- win10新增輸入法的操作步驟是什麼Win10
- 通俗理解自注意力機制和多頭注意力機制
- 語音標註的具體應用場景
- jdk、tomcat、mysql軟體的安裝步驟JDKTomcatMySql
- 完整的SMT貼片機操作步驟流程
- 手機app開發的基本流程步驟APP
- Allure2新增用例標題、用例步驟
- Jaspersoft?Studio新增mysql資料庫配置步驟特破MySql資料庫