赞
踩
Gaussian Context Transformer
缩写为:GCT
注意力机制。它是一种通道注意力结构的注意力模块,与SE
注意力相似,但它可以做到在几乎不引入参数
的前提下优于SE等
注意力模型。(属于轻量高效类型的注意力机制)
GCT注意力机制
的模型结构如图所示:
下图是GCT模块
在模型参数方面的表现:
下图为GCT模块
在目标检测任务上的表现:
【注:论文-Gaussian Context Transformer
链接】:https://openaccess.thecvf.com/content/CVPR2021/papers/Ruan_Gaussian_Context_Transformer_CVPR_2021_paper.pdf
【注:没有找到Github
上的代码,但是有厉害的大哥给了代码,具体见下面的改进】
GCT注意力
机制到YOLOv8
模型上基本上还是一样的,主要看差别吧:(注意:依据的代码是直到发文为止最新的YOLOv8代码进行的改进,请及时更新代码)
【1: …/ultralytics/nn/modules/conv.py
】
在文件末尾增加有关GCT模块
的代码:
#增加GCT注意力 class GCT(nn.Module): def __init__(self, channels, c=2, eps=1e-5): super().__init__() self.avgpool = nn.AdaptiveAvgPool2d(1) self.eps = eps self.c = c def forward(self, x): y = self.avgpool(x) mean = y.mean(dim=1, keepdim=True) mean_x2 = (y ** 2).mean(dim=1, keepdim=True) var = mean_x2 - mean ** 2 y_norm = (y - mean) / torch.sqrt(var + self.eps) y_transform = torch.exp(-(y_norm ** 2 / 2 * self.c)) return x * y_transform.expand_as(x)
【2:…ultralytics-main/ultralytics/nn/modules/__init__.py
】
这个是一样的,在这个文件下对GCT模块
进行声明,声明的名字要与前面的GCT代码模块名
保持一致,可以参考这篇文章:https://blog.csdn.net/A__MP/article/details/136597192
1:找到这段,在后面加上模块名:GCT
from .conv
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。