一、Gaussian Context Transformer注意力机制简介
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.youkuaiyun.com/A__MP/article/details/136597192
1:找到这段,在后面加上模块名:GCT
from .conv import (
CBAM,
Channe

本文介绍了如何在YOLOv8模型中集成Gaussian Context Transformer注意力机制,这是一种轻量高效的注意力模块。通过在模型结构中加入GCT,改善了模型的性能。同时,文章提供了遇到ImportError: cannot import name ‘GCT’错误时的解决方法,即更新代码并在相应位置声明GCT。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



