YOLO26改进 - 注意力机制 | CGAFusion (Content-Guided Attention Fusion) 抑制噪声提升跨模态检测精度与鲁棒性​

前言

本文介绍了内容引导注意力融合模块(CGAFusion)在YOLO26中的结合应用。CGAFusion由通道注意力、空间注意力和特征融合组成,通过生成通道特定的空间重要性图,有效处理特征非均匀性,提升模型表现。我们将CGAFusion集成到YOLO26的检测头中,并进行相关注册和配置。实验表明,改进后的模型在显著减少参数与FLOPs的同时,仍具备优异性能,在资源受限场景下展现出高效与实用的优势。

文章目录: YOLO26改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

专栏链接: YOLO26改进专栏

文章目录

  • 前言
  • 介绍
    • 摘要
  • 文章链接
  • 基本原理
      • CGA 的主要组成部分
      • CGA 的原理图CGA 的流程如下所示:
      • CGA 的优势
  • 核心代码
  • YOLO26引入代码
    • 注册卷积
      • 步骤1:
      • 步骤2
    • 配置yolo26-CGAFusion.yaml
  • 实验
    • 脚本
    • 结果

介绍

摘要

摘要——单幅图像去雾是一个极具挑战性的病态问题,其目标是从观测到的雾霾图像中估计出无雾图像。部分现有的基于深度学习的方法试图通过增加卷积的深度或宽度来提升模型性能,但卷积神经网络(CNN)结构的学习能力仍未得到充分发掘。本文提出了一种细节增强注意力模块(DEAB),该模块由细节增强卷积(DEConv)和内容引导注意力(CGA)构成,旨在强化特征学习,进而改善去雾性能。具体而言,DEConv将先验信息融入常规卷积层,以增强模型的表示能力和泛化能力,随后利用重新参数化技术,将DEConv等效转换为标准卷积,且不产生额外的参数和计算开销。CGA通过为每个通道分配独特的空间重要性图(SIM),能够更高效地聚焦于特征中编码的有用信息。此外,本文提出了一种基于CGA的混合融合方案,可有效融合特征并辅助梯度流动。综合上述组件,我们提出了细节增强注意力网络(DEA - Net),用于恢复高质量的无雾图像。大量实验结果证实了DEA - Net的有效性,其将PSNR指标提升至41 dB以上,且仅使用3.653M的参数,超越了当前最先进的(SOTA)方法。我们的DEA - Net源代码将发布于https://github.com/cecret3350/DEA - Net。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

内容引导注意力(Content-Guided Attention, CGA)是一种新颖的注意力机制,旨在为每个通道生成特定的空间重要性图(Spatial Importance Map, SIM),以便在特征学习过程中更好地关注输入特征中的有用信息。CGA 通过结合通道注意力和空间注意力,能够有效地处理特征级别的非均匀性,从而提升模型的表现。

CGA 的主要组成部分

  1. 通道注意力(Channel Attention)

    • 通过对输入特征进行全局平均池化和全局最大池化,生成通道级别的注意力权重。这些权重用于调整不同通道的重要性,使得模型能够更好地利用特征通道的信息。
  2. 空间注意力(Spatial Attention)

    • 通过对输入特征进行空间维度的处理,生成空间级别的注意力权重。这些权重帮助模型关注特征图中的重要区域,增强对关键部分的响应。
  3. 特征融合

    • CGA 通过将通道和空间注意力结合,生成最终的空间重要性图(SIM),并将其应用于输入特征,以增强特征的表示能力。

CGA 的原理图CGA 的流程如下所示:

Input Features (X) | +-------------------+ | | Channel Attention Spatial Attention | | +-------------------+ | Combined Attention Map (W) | +-------------------+ | | Weighted Features Input Features | | +-------------------+ | Output Features

在这个图中,输入特征首先通过通道注意力和空间注意力模块,生成相应的注意力权重。然后,这些权重被结合成一个综合的注意力图(W),并应用于输入特征,以生成最终的输出特征。

CGA 的优势

  • 通道特异性:CGA 生成的注意力图是通道特定的,能够更好地捕捉不同通道之间的关系。
  • 空间关注:通过空间注意力,CGA 能够有效地识别输入特征图中的重要区域,增强模型对关键特征的响应。
  • 处理非均匀性:CGA 同时考虑了图像级别和特征级别的非均匀性,从而提升了去雾等任务的性能。

核心代码

fromtorchimportnnfrom.cgaimportSpatialAttention,ChannelAttention,PixelAttentionclassCGAFusion(nn.Module):def__init__(self,dim,reduction=8):super(CGAFusion,self).__init__()self.sa=SpatialAttention()self.ca=ChannelAttention(dim,reduction)self.pa=PixelAttention(dim)self.conv=nn.Conv2d(dim,dim,1,bias=True)self.sigmoid=nn.Sigmoid()defforward(self,x,y):initial=x+y cattn=self.ca(initial)sattn=self.sa(initial)pattn1=sattn+cattn pattn2=self.sigmoid(self.pa(initial,pattn1))result=initial+pattn2*x+(1-pattn2)*y result=self.conv(result)returnresult

YOLO26引入代码

在根目录下的ultralytics/nn/目录,新建一个attention目录,然后新建一个以CGAFusion为文件名的py文件, 把代码拷贝进去。

importtorchfromtorchimportnnfromeinopsimportrearrangeclassSpatialAttention(nn.Module):def__init__(self):super(SpatialAttention,self).__init__()self.sa=nn.Conv2d(2,1,7,padding=3,padding_mode='reflect',bias=True)defforward(self,x):x_avg=torch.mean(x,dim=1,keepdim=True)x_max,_=torch.max(x,dim=1,keepdim=True)x2=torch.concat([x_avg,x_max],dim=1)sattn=self.sa(x2)returnsattnclassChannelAttention(nn.Module):def__init__(self,dim,reduction=8):super(ChannelAttention,self).__init__()self.gap=nn.AdaptiveAvgPool2d(1)self.ca=nn.Sequential(nn.Conv2d(dim,dim//reduction,1,padding=0,bias=True),nn.ReLU(inplace=True),nn.Conv2d(dim//reduction,dim,1,padding=0,bias=True),)defforward(self,x):x_gap=self.gap(x)cattn=self.ca(x_gap)returncattnclassPixelAttention(nn.Module):def__init__(self,dim):super(PixelAttention,self).__init__()self.pa2=nn.Conv2d(2*dim,dim,7,padding=3,padding_mode='reflect',groups=dim,bias=True)self.sigmoid=nn.Sigmoid()defforward(self,x,pattn1):B,C,H,W=x.shape x=x.unsqueeze(dim=2)# B, C, 1, H, Wpattn1=pattn1.unsqueeze(dim=2)# B, C, 1, H, Wx2=torch.cat([x,pattn1],dim=2)# B, C, 2, H, Wx2=rearrange(x2,'b c t h w -> b (c t) h w')pattn2=self.pa2(x2)pattn2=self.sigmoid(pattn2)returnpattn2classCGAFusion(nn.Module):def__init__(self,dim,reduction=8):super(CGAFusion,self).__init__()self.sa=SpatialAttention()self.ca=ChannelAttention(dim,reduction)self.pa=PixelAttention(dim)self.conv=nn.Conv2d(dim,dim,1,bias=True)self.sigmoid=nn.Sigmoid()defforward(self,x):x_feat=x y_feat=x initial=x_feat+y_feat cattn=self.ca(initial)sattn=self.sa(initial)pattn1=sattn+cattn pattn2=self.sigmoid(self.pa(initial,pattn1))result=initial+pattn2*x_feat+(1-pattn2)*y_feat result=self.conv(result)returnresult

注册卷积

ultralytics/nn/tasks.py中进行如下操作:

步骤1:

fromultralytics.nn.attention.CGAFusionimportCGAFusion

步骤2

修改def parse_model(d, ch, verbose=True):

elifmisCGAFusion:c2=ch[f[1]]args=[c2,*args]

配置yolo26-CGAFusion.yaml

ultralytics/cfg/models/11/YOLO26-CGAFusion.yaml

# Ultralytics 🚀 AGPL-3.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. 'model=yolo26n.yaml' will call yolo26.yaml with scale 'n'# [depth, width, max_channels]n:[0.50,0.25,1024]# summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients, 6.1 GFLOPss:[0.50,0.50,1024]# summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients, 22.8 GFLOPsm:[0.50,1.00,512]# summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients, 75.4 GFLOPsl:[1.00,1.00,512]# summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients, 93.8 GFLOPsx:[1.00,1.50,512]# summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients, 209.5 GFLOPs# YOLO26n backbonebackbone:# [from, repeats, module, args]-[-1,1,Conv,[64,3,2]]# 0-P1/2-[-1,1,Conv,[128,3,2]]# 1-P2/4-[-1,2,C3k2,[256,False,0.25]]-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,2,C3k2,[512,False,0.25]]-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,2,C3k2,[512,True]]-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,2,C3k2,[1024,True]]-[-1,1,SPPF,[1024,5,3,True]]# 9-[-1,2,C2PSA,[1024]]# 10# YOLO26n headhead:-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,6],1,Concat,[1]]# cat backbone P4-[-1,2,C3k2,[512,True]]# 13-[-1,1,nn.Upsample,[None,2,"nearest"]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,2,C3k2,[256,True]]# 16 (P3/8-small)-[-1,1,CGAFusion,[]]#17-[-1,1,Conv,[256,3,2]]-[[-1,13],1,Concat,[1]]# cat head P4-[-1,2,C3k2,[512,True]]# 19 (P4/16-medium)-[-1,1,CGAFusion,[]]#21-[-1,1,Conv,[512,3,2]]-[[-1,10],1,Concat,[1]]# cat head P5-[-1,1,C3k2,[1024,True,0.5,True]]# 22 (P5/32-large)-[-1,1,CGAFusion,[]]#25-[[17,21,25],1,Detect,[nc]]# Detect(P3, P4, P5)

实验

脚本

importwarnings warnings.filterwarnings('ignore')fromultralyticsimportYOLOif__name__=='__main__':# 修改为自己的配置文件地址model=YOLO('./ultralytics/cfg/models/26/yolo26-CGAFusion.yaml')# 修改为自己的数据集地址model.train(data='./ultralytics/cfg/datasets/coco8.yaml',cache=False,imgsz=640,epochs=10,single_cls=False,# 是否是单类别检测batch=8,close_mosaic=10,workers=0,optimizer='MuSGD',# optimizer='SGD',amp=False,project='runs/train',name='yolo26-CGAFusion',)

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1221246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO26改进 - 注意力机制 |融合HCF-Net维度感知选择性整合模块DASI 增强小目标显著性

前言 本文介绍了维度感知选择性融合(DASI)模块在YOLO26中的结合应用。DASI模块是HCF - Net用于红外小目标检测的关键组件,可实现自适应的通道选择和融合。它通过对高维、低维和当前层特征进行对齐、分区,依据sigmo…

【脉脉】AI创作者崛起:掌握核心工具,在AMA互动中共同成长

🎬 个人主页:艾莉丝努力练剑❄专栏传送门:《C语言》《数据结构与算法》《C/C干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》⭐️为天地立心,为生民立命…

02~

02~02.Nginx背景介绍 02.1 背景介绍Nginx("engine x")一个具有高性能的 HTTP 和 反向代理 的 WEB服务器,同时也是一个 POP3/SMTP/IMAP代理服务器,是由伊戈尔赛索耶夫(俄罗斯人)使用C语言编写的,Nginx…

大规模语言模型在个性化职业规划中的应用

大规模语言模型在个性化职业规划中的应用 关键词:大规模语言模型、个性化职业规划、职业分析、职业推荐、职业发展路径 摘要:本文深入探讨了大规模语言模型在个性化职业规划领域的应用。首先介绍了研究的背景、目的、预期读者、文档结构和相关术语。接着阐述了大规模语言模型…

Kubernetes 集群运维:故障排查、资源调度与高可用配置

第一部分:Kubernetes 故障排查方法论系统化故障诊断框架有效的Kubernetes故障排查需要建立系统化的诊断框架,这一框架应当遵循从外到内、自上而下的逻辑顺序。根据Google SRE(Site Reliability Engineering)方法论,故障…

Go进阶之理解方法本质

Go语言虽然不支持经典的面向对象的语法元素.比如继承 对象和类.Go语言也有方法.和函数相比就是在声明形式上多了一个参数.Go称为receiver参数.receiver是参数与类型之间的纽带.方法声明格式:func (receiver T/* T) MethodName(参数列表) (返回值列表){//方法体 }方法声明的T称为…

FHIR 资源查询实战指南:从 HTTP 接口到 Java 客户端的完整实现

一、前言:为什么需要理解 FHIR 查询? 在医疗健康信息系统中,FHIR(Fast Healthcare Interoperability Resources)已成为事实上的数据交换标准。无论是设备管理、任务审批、还是患者服务,我们常常需要回答这…

IntelliJ IDEA 全局搜索完全指南:从高效使用到快捷键失效排查

前言 在现代软件开发中,代码库规模日益庞大,快速定位关键逻辑、变量定义或配置项已成为开发者的核心能力。IntelliJ IDEA 作为业界领先的 Java IDE(同时也支持 Kotlin、Python、JavaScript 等多语言),其全局搜索&…

费雪的研发投入分析:创新如何驱动企业长期增长

费雪的研发投入分析:创新如何驱动企业长期增长关键词:费雪、研发投入、创新、企业长期增长、创新驱动因素摘要:本文聚焦于费雪公司的研发投入,深入剖析创新如何驱动企业实现长期增长。通过对费雪研发投入的背景、核心概念、算法原…

SMB挂载与iSCSI挂载飞牛存储:你该选择哪一种连接方式?

作为一个刚刚跨入“私有云”大门的小白,面对飞牛存储后台里那两个让人头大的选项——SMB挂载和iSCSI挂载,你是不是也感觉像在选修天文学还是量子物理? 别担心,今天我们就用“人话”来聊聊这事儿,保证不出现一句让你想…

重命名你的电脑,给它发个“工牌”吧!

每次电脑一开机,小白看到【此电脑】属性里那个冰冷的【DESKTOP-XXX】就觉得难受……感觉就像是入职时系统自动生成的、毫无灵魂的工号。这个能忍?不,不能忍!必须改掉。不过它也有相应需要遵循的规则:最稳妥的方案&…

例说FPGA:可直接用于工程项目的第一手经验【1.1】

1.4 FPGA应用领域 目前FPGA虽然还受制于较高的开发门槛以及器件本身昂贵的价格,并从应用的普及率上来看和ARM、DSP还是有一定的差距,但是在非常多的应用场合,工程师们还是要别无选择地使用它。FPGA所固有的灵活性和并行性是其他芯片所不具备…

[高质量代码分享] JavaScript 空值判断(工具)函数

[高质量代码分享] JavaScript 空值判断(工具)函数 文章目录 [高质量代码分享] JavaScript 空值判断(工具)函数 一、代码分享 二、代码解读 2.1 主要特点 2.1.1. **功能全面** 2.1.2. **配置选项灵活** 2.1.3. **类型处理层次清晰** 2.2 实现细节分析 2.2.1. 基本类型处理 2…

强烈安利专科生必用9款一键生成论文工具测评

强烈安利专科生必用9款一键生成论文工具测评 为什么需要一份权威的论文写作工具测评 随着学术研究的日益繁重,专科生在撰写论文过程中常常面临时间紧张、资料查找困难、格式不规范等问题。而AI写作工具的出现,为这一难题提供了新的解决方案。为了帮助专科…

吐血推荐9个AI论文软件,专科生搞定毕业论文!

吐血推荐9个AI论文软件,专科生搞定毕业论文! AI 工具让论文写作不再难 对于专科生来说,毕业论文可能是一道难以逾越的门槛。从选题、查资料到撰写、降重,每一步都充满了挑战。而随着 AI 技术的不断进步,越来越多的 AI …

影悦电影推荐系统的设计与实现开题报告

影悦电影推荐系统的设计与实现开题报告 一、研究背景与意义 (一)研究背景 在数字化浪潮与消费升级的双重驱动下,影视行业迎来了内容爆发式增长的新阶段。据相关行业报告显示,全球每年新增电影作品超万部,国内线上影视…

YOLO26改进 - 注意力机制 | 多扩张通道细化器MDCR 通过通道划分与异构扩张卷积提升小目标定位能力

前言 本文介绍了一种在YOLO26目标检测模型中引入高效解码器模块EMCAD的创新方法,以提升模型在资源受限场景下的性能与效率。EMCAD由多个模块构成,其中核心的EUCB(高效上卷积块)通过上采样、深度可分离卷积、激活归…

小额消费贷款产品特征抽取与推荐分析平台的设计与实现开题报告

一、研究背景与意义 (一)研究背景 随着数字金融的快速发展与居民消费观念的升级,小额消费贷款已成为满足大众短期资金周转、品质消费需求的重要金融工具。近年来,我国小额消费贷款市场规模持续扩大,参与机构不断增多…

YOLO26改进策略【Backbone/主干网络】| ICLR-2023 替换骨干网络为:RevCol 一种新型神经网络设计范式

一、本文介绍 本文记录的是基于RevCol的YOLO26目标检测骨干网络改进方法研究。 RevCol是一种新型神经网络设计范式,它由多个子网(列)及多级可逆连接构成,正向传播时特征逐渐解缠结且保持信息。可逆变换借鉴可逆神经网络思想,设计多级可逆单元用于解决模型对特征图形状的…

闲置京东超市卡变现认准京顺回收

在消费场景愈发多元化的当下,预付卡券闲置成了常见现象。相关数据显示,国内每年沉淀的闲置卡券规模超千亿元,其中电商平台卡券占比高达38%。大量京东超市卡因“遗忘使用”“需求改变”等原因被搁置,造成资源极大浪…