YOLOv8改进 - 注意力机制 | GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征 前言本文介绍了全局注意力机制——GAM通过同时保留通道与空间两个维度的信息增强深度网络中的跨维度特征交互能力。该方法利用多层感知器构建通道注意力并结合卷积空间注意力子模块对输入特征进行逐级加权从而减少信息损失、放大全局关键特征表达。我们将 GAM 成功集成进 YOLOv8在骨干网络高层特征后引入全局注意力增强模块使模型能够更充分地捕获目标的通道依赖与空间位置信息实现更有效的特征筛选与检测性能提升。文章目录 YOLOv8改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: YOLOv8改进专栏文章目录前言介绍文章链接基本原理核心代码引入代码tasks注册步骤1:步骤2配置yolov8-GAM.yaml实验脚本结果介绍为了提高各种计算机视觉任务的性能研究了多种注意力机制。然而现有方法忽视了保留通道和空间两个方面信息的重要性以增强跨维度的交互。因此我们提出了一种全局注意力机制通过减少信息损失和放大全局交互表示来提升深度神经网络的性能。我们引入了带有多层感知器的3D排列用于通道注意力同时结合了卷积空间注意力子模块。在CIFAR-100和ImageNet-1K上的图像分类任务评估中表明我们的方法在ResNet和轻量级MobileNet上稳定地优于几种最新的注意力机制。文章链接论文地址论文地址代码地址代码地址基本原理全局注意力机制Global Attention Mechanism是一种用于增强深度神经网络性能的技术特别是在计算机视觉任务中。该机制的技术原理在于通过保留通道和空间方面的信息以增强跨维度的交互作用。相较于以往方法全局注意力机制着重于在处理通道和空间信息时保持全局交互的重要性。该机制采用了一种全新的方法来处理通道和空间信息以提高深度神经网络的性能。具体而言全局注意力机制结合了3D置换与多层感知器用于通道注意力同时还包括一个卷积空间注意力子模块。这些组件共同作用旨在减少信息损失并放大全局维度交互特征。在技术实现上全局注意力机制通过对输入特征图进行处理得到中间状态和输出状态。其中通道注意力图和空间注意力图分别用于捕获通道和空间维度的重要特征。通过元素级乘法操作这些注意力图与输入特征图进行交互从而实现全局跨维度的信息交互。核心代码classGAM(nn.Module):def__init__(self,in_channels,out_channels,rate4):super().__init__()in_channelsint(in_channels)out_channelsint(out_channels)inchannel_rateint(in_channels/rate)self.linear1nn.Linear(in_channels,inchannel_rate)self.relunn.ReLU(inplaceTrue)self.linear2nn.Linear(inchannel_rate,in_channels)self.conv1nn.Conv2d(in_channels,inchannel_rate,kernel_size7,padding3,padding_modereplicate)self.conv2nn.Conv2d(inchannel_rate,out_channels,kernel_size7,padding3,padding_modereplicate)self.norm1nn.BatchNorm2d(inchannel_rate)self.norm2nn.BatchNorm2d(out_channels)self.sigmoidnn.Sigmoid()defforward(self,x):b,c,h,wx.shape# B,C,H,W B,H*W,Cx_permutex.permute(0,2,3,1).view(b,-1,c)# B,H*W,C B,H,W,Cx_att_permuteself.linear2(self.relu(self.linear1(x_permute))).view(b,h,w,c)# B,H,W,C B,C,H,Wx_channel_attx_att_permute.permute(0,3,1,2)xx*x_channel_att x_spatial_attself.relu(self.norm1(self.conv1(x)))x_spatial_attself.sigmoid(self.norm2(self.conv2(x_spatial_att)))outx*x_spatial_attreturnout引入代码在根目录下的ultralytics/nn/目录新建一个attention目录然后新建一个以GAM为文件名的py文件 把代码拷贝进去。importtorchimporttorch.nnasnnclassGAM(nn.Module):def__init__(self,in_channels,rate4):super().__init__()out_channelsin_channels in_channelsint(in_channels)out_channelsint(out_channels)inchannel_rateint(in_channels/rate)self.linear1nn.Linear(in_channels,inchannel_rate)self.relunn.ReLU(inplaceTrue)self.linear2nn.Linear(inchannel_rate,in_channels)self.conv1nn.Conv2d(in_channels,inchannel_rate,kernel_size7,padding3,padding_modereplicate)self.conv2nn.Conv2d(inchannel_rate,out_channels,kernel_size7,padding3,padding_modereplicate)self.norm1nn.BatchNorm2d(inchannel_rate)self.norm2nn.BatchNorm2d(out_channels)self.sigmoidnn.Sigmoid()defforward(self,x):b,c,h,wx.shape# B,C,H,W B,H*W,Cx_permutex.permute(0,2,3,1).view(b,-1,c)# B,H*W,C B,H,W,Cx_att_permuteself.linear2(self.relu(self.linear1(x_permute))).view(b,h,w,c)# B,H,W,C B,C,H,Wx_channel_attx_att_permute.permute(0,3,1,2)xx*x_channel_att x_spatial_attself.relu(self.norm1(self.conv1(x)))x_spatial_attself.sigmoid(self.norm2(self.conv2(x_spatial_att)))outx*x_spatial_attreturnouttasks注册在ultralytics/nn/tasks.py中进行如下操作步骤1:fromultralytics.nn.attention.GAMimportGAM步骤2修改def parse_model(d, ch, verboseTrue):elifmisGAM:c2ch[f]args[c2,*args]配置yolov8-GAM.yaml# Ultralytics YOLO , AGPL-3.0 license# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesscales:# model compound scaling constants, i.e. modelyolov8n.yaml will call yolov8.yaml with scale n# [depth, width, max_channels]n:[0.33,0.25,1024]# YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPss:[0.33,0.50,1024]# YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPsm:[0.67,0.75,768]# YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients, 79.3 GFLOPsl:[1.00,1.00,512]# YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPsx:[1.00,1.25,512]# YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs# YOLOv8.0n backbonebackbone:# [from, repeats, module, args]-[-1,1,Conv,[64,3,2]]# 0-P1/2-[-1,1,Conv,[128,3,2]]# 1-P2/4-[-1,3,C2f,[128,True]]-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,6,C2f,[256,True]]-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,6,C2f,[512,True]]-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,3,C2f,[1024,True]]-[-1,1,GAM,[]]# 9-[-1,1,SPPF,[1024,5]]# 10# YOLOv8.0n headhead:-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,6],1,Concat,[1]]# cat backbone P4-[-1,3,C2f,[512]]# 13-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,3,C2f,[256]]# 16 (P3/8-small)-[-1,1,Conv,[256,3,2]]-[[-1,13],1,Concat,[1]]# cat head P4-[-1,3,C2f,[512]]# 19 (P4/16-medium)-[-1,1,Conv,[512,3,2]]-[[-1,10],1,Concat,[1]]# cat head P5-[-1,3,C2f,[1024]]# 22 (P5/32-large)-[[16,19,22],1,Detect,[nc]]# Detect(P3, P4, P5)实验脚本importosfromultralyticsimportYOLO yamlultralytics/cfg/models/v8/yolov8-GAM.yamlmodelYOLO(yaml)model.info()if__name____main__:resultsmodel.train(data./ultralytics/cfg/datasets/coco8.yaml,nameGAM,epochs10,ampFalse,workers8,batch1)结果

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/29 22:57:57
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻