核心内容摘要
IDEA+Docker实战:5分钟搞定Spring Boot应用镜像打包与推送(Windows版)
前言本文介绍了高斯上下文变换器GCT模块在YOLO26中的结合应用。
GCT是一种新型通道注意力模块其核心假设全局上下文与注意力激活关系预先确定通过全局上下文聚合、归一化和高斯上下文激励三个操作实现。
它有参数自由的GCT - B0和可学习标准差的GCT - B1两个版本。
我们将GCT集成到YOLO26的检测头中并进行相关注册和配置。
实验表明GCT能在ImageNet和MS COCO等基准测试中为各种骨干网络和检测器带来性能提升。
文章目录 YOLO26改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: YOLO26改进专栏文章目录前言介绍摘要文章链接基本原理主要内容核心代码YOLO26引入代码tasks注册步骤1:步骤2配置yolo26-GCT.yaml实验脚本结果介绍摘要近期大量通道注意力模块被提出旨在增强深度卷积神经网络CNN的表示能力。
这些方法通常借助全连接层或线性变换来学习全局上下文与注意力激活之间的关系。
然而我们的实验证实即便引入大量参数这些注意力模块或许仍难以出色地学习这种关系。
本文中我们假定这种关系是预先确定的。
基于该假设我们提出了一种简单且高效的通道注意力模块即高斯上下文变换器Gaussian Context TransformerGCT其利用满足预设关系的高斯函数实现上下文特征的激发。
依据高斯函数的标准差是否可学习我们开发了GCT的两个版本GCT - B0和GCT - B1。
GCT - B0是一个无参数的通道注意力模块通过固定标准差来实现它直接将全局上下文映射到注意力激活无需进行学习与之相对GCT - B1是一个有参数的版本其自适应地学习标准差以提升映射能力。
在ImageNet和MS COCO基准测试上开展的大量实验显示我们的GCT在各类深度CNN和检测器上均能实现稳定的性能提升。
与一系列最先进的通道注意力模块如SE和ECA相比我们的GCT在有效性和效率方面均更具优势。
文章链接论文地址论文地址**代码地址**代码地址基本原理Gaussian Context TransformerGCT是一种新型的通道注意力模块旨在提高深度卷积神经网络CNN的表现力。
该方法由Ruan等人提出主要通过使用高斯函数来实现上下文特征的激励从而简化了传统通道注意力机制的复杂性。
主要内容研究背景传统的通道注意力模块通常通过全连接层或线性变换来学习全局上下文与注意力激活之间的关系。
然而研究表明尽管引入了许多参数这些注意力模块可能并未有效学习这种关系。
核心假设GCT的核心假设是全局上下文与注意力激活之间的关系是预先确定的而不是通过学习获得的。
基于这一假设GCT提出了一种简单而高效的通道注意力机制。
GCT的结构GCT由三个主要操作组成全局上下文聚合GCA通过全局平均池化来获取通道级别的统计信息以帮助网络捕捉长距离依赖关系。
归一化对聚合后的全局上下文进行归一化处理。
高斯上下文激励GCE使用高斯函数对全局上下文进行激励公式为$Y e{-\frac{norm(avg(X))2}{2c^2}} \cdot X$其中c cc是高斯函数的标准差可以是常数或可学习的参数。
参数自由的GCT当标准差c cc为常数时GCT被称为GCT-B0这是一种参数自由的通道注意力模块。
研究表明GCT-B0在多个任务上表现优异且参数和计算量几乎没有增加。
实验结果在ImageNet和MS COCO等基准测试上进行的综合实验表明GCT在各种骨干网络和检测器上均能显著提高性能超越了其他通道注意力模块。
核心代码classGCT(nn.Module):def__init__(self,channels,c2,eps1e-
:super().__init__()self.avgpoolnn.AdaptiveAvgPool2d(
self.epseps self.ccdefforward(self,x):yself.avgpool(x)meany.mean(dim1,keepdimTrue)mean_x2(y**
.mean(dim1,keepdimTrue)varmean_x2-mean**2y_norm(y-mean)/torch.sqrt(varself.eps)y_transformtorch.exp(-(y_norm**2/2*self.c))returnx*y_transform.expand_as(x)YOLO26引入代码在根目录下的ultralytics/nn/目录新建一个attention目录然后新建一个以GCT为文件名的py文件 把代码拷贝进去。
importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassGCT(nn.Module):def__init__(self,channels,c2,eps1e-
:super().__init__()self.avgpoolnn.AdaptiveAvgPool2d(
self.epseps self.ccdefforward(self,x):yself.avgpool(x)meany.mean(dim1,keepdimTrue)mean_x2(y**
.mean(dim1,keepdimTrue)varmean_x2-mean**2y_norm(y-mean)/torch.sqrt(varself.eps)y_transformtorch.exp(-(y_norm**2/2*self.c))returnx*y_transform.expand_as(x)tasks注册在ultralytics/nn/tasks.py中进行如下操作步骤1:fromultralytics.nn.attention.GCTimportGCT步骤2修改def parse_model(d, ch, verboseTrue):GCT配置yolo26-GCT.yamlultralytics/cfg/models/26/yolo26-GCT.yaml# Ultralytics AGPL-
0 License - https://ultralytics.com/license# Ultralytics YOLO26 object detection model with P3/8 - P5/32 outputs# Model docs: https://docs.ultralytics.com/models/yolo26# Task docs: https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesend2end:True# whether to use end-to-end modereg_max:1# DFL binsscales:# model compound scaling constants, i.e. modelyolo26n.yaml will call yolo
yaml with scale n# [depth, width, max_channels]n:[
50,
25,1024]# summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients,
1 GFLOPss:[
50,
50,1024]# summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients,
2
8 GFLOPsm:[
50,
00,512]# summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients,
7
4 GFLOPsl:[
00,
00,512]# summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients,
9
8 GFLOPsx:[
00,
50,512]# summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients,
2