#YOLO# #目标检测# #计算机视觉#
一、本文介绍
作为入门性篇章,这里介绍了GAM注意力在YOLOv8中的使用。包含GAM原理分析,GAM的代码、GAM的使用方法、以及添加以后的yaml文件及运行记录。
二、GAM原理分析
GAM官方论文地址:文章
GAM官方代码地址:
GAM注意力机制:GAM采用了顺序的通道-空间注意力机制(类似CBAM),但对子模块进行了重新设计。
三、相关代码:
GAM注意力的代码,如下:
class GAM(nn.Module):
def __init__(self, in_channels, rate=4):
super().__init__()
out_channels = in_channels
in_channels = int(in_channels)
out_channels = int(out_channels)
inchannel_rate = int(in_channels/rate)
self.linear1 = nn.Linear(in_channels, inchannel_rate)
self.relu = nn.ReLU(inplace=True)
self.linear2 = nn.Linear(inchannel_rate, in_channels)
self.conv1=nn.Conv2d(in_channels, inchannel_rate,kernel_size=7,padding=3,padding_mode='replicate')
self.conv2=nn.Conv2d(inchannel_rate, out_channels,kernel_size=7,padding=3,padding_mode='replicate')
self.norm1 = nn.BatchNorm2d(inchannel_rate)
self.norm2 = nn.BatchNorm2d(out_channels)
self.sigmoid = nn.Sigmoid()
def forward(self,x):
b, c, h, w = x.shape
# B,C,H,W ==> B,H*W,C
x_permute = x.permute(0, 2, 3, 1).view(b, -1, c)
# B,H*W,C ==> B,H,W,C
x_att_permute = self.linear2(self.relu(self.linear1(x_permute))).view(b, h, w, c)
# B,H,W,C ==> B,C,H,W
x_channel_att = x_att_permute.permute(0, 3, 1, 2)
x = x * x_channel_att
x_spatial_att = self.relu(self.norm1(self.conv1(x)))
x_spatial_att = self.sigmoid(self.norm2(self.conv2(x_spatial_att)))
out = x * x_spatial_att
return out
四、YOLOv8中GAM使用方法
1.YOLOv8中添加GAM模块:
首先在ultralytics/nn/modules/conv.py最后添加模块的代码。
2.在conv.py的开头__all__ = 内添加GAM模块的类别名:
3.在同级文件夹下的__init__.py内添加GAM的相关内容:(分别是from .conv import GAM ;以及在__all__内添加GAM)
4.在ultralytics/nn/tasks.py进行GAM注意力机制的注册,以及在YOLOv8的yaml配置文件中添加GAM即可。
首先打开task.py文件,按住Ctrl+F,输入parse_model进行搜索。找到parse_model函数。找以下注册代码,将GAM添加进去即可:
elif m in {CBAM,ECA,GAM}:#添加注意力模块,没有CBAM的,将CBAM删除即可
c1, c2 = ch[f], args[0]
if c2 != nc:
c2 = make_divisible(min(c2, max_channels) * width, 8)
args = [c1, *args[1:]]
然后,就是新建一个名为YOLOv8_GAM.yaml的配置文件:(路径:ultralytics/cfg/models/v8/YOLOv8_GAM.yaml)其中参数中nc,由自己的数据集决定。本文测试,采用的coco8数据集,有80个类别。
# Ultralytics YOLO
标签:__,nn,self,YOLOv8,channels,GAM,注意力
From: https://blog.csdn.net/2301_79619145/article/details/143376852