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
- 使用Oracle Statpack的具體步驟Oracle
- 小程式中接入廣告的具體步驟
- Logminer的使用,具體執行步驟
- Linux核心裁剪的具體步驟Linux
- 線上教育平臺搭建具體步驟
- 關於安裝DNS伺服器的新增步驟具體圖文詳解DNS伺服器
- 網路優化設定的具體步驟優化
- Java訪問資料庫的具體步驟:Java資料庫
- vnc使用教程,vnc使用教程的具體操作步驟VNC
- 網路最佳化設定的具體步驟
- 網路綜合佈線的具體實施步驟
- 將 java 專案部署到 linux 上的具體步驟JavaLinux
- Remoting的事件機制(帶具體例子)REM事件
- 軟體結構設計,具體分為幾個步驟?
- 機制與意義:數字現實與玩家的具身模式模式
- 如何匯入甜美粉色系濾鏡LR的具體操作步驟
- 資料探勘的基本步驟有哪些?具體流程是怎樣的?
- 實現PMC的數字化轉型需要哪些具體的步驟?
- 如何實現Java 設定動態代理ip的具體操作步驟Java
- SNP乾貨分享:SAP資料脫敏的具體實施步驟
- arcgis10.2.2桌面版具體的安裝步驟過程
- 講解Oracle資料庫冷備份恢復的具體步驟Oracle資料庫
- win10怎麼安裝telnet服務_win10新增telnet服務具體步驟Win10
- 手工刪除解除安裝oracle 11g rac的具體步驟(方法)Oracle
- hanlp新增自定義字典的步驟介紹HanLP
- MongoDB SCRAM-SHA-1鑑權機制步驟解讀MongoDB
- 詳細講解DB2資料庫效能監控的具體步驟DB2資料庫
- 整體機房/資料中心設計步驟
- 在oracle中,匯出某使用者的資料和匯入的具體步驟Oracle
- android studio呼叫攝像頭拍照及具體步驟演示程式碼Android
- svn強制新增註釋指令碼指令碼
- 注意力機制
- 軟體功能測試的步驟
- RAC DATABASE關機步驟Database
- 使用Flash_TooL軟體刷機Android 手機步驟Android
- 通過一個具體的例子,講解 SAP BDC 技術的使用步驟試讀版
- 通過哪些方法判斷goroutine洩漏?有沒有具體的除錯步驟的文章?Go除錯