当前位置: 首页 > news >正文

YOLOv11 改进 - 注意力机制 ESC (Emulating Self-attention with Convolution) 卷积模拟自注意力:增强小目标与密集场景检测 ICCV 2025

前言

本文提出了卷积模拟自注意力网络(ESC),并将其与YOLOv11相结合。ESC是针对图像超分辨率任务设计的轻量化网络,核心为ConvAttn模块,通过共享大核与动态核模拟自注意力的长程建模和实例依赖加权。同时,首次将Flash Attention集成到轻量化超分辨率领域,扩大自注意力窗口尺寸,降低延迟和内存占用。我们将C3k2_ESC模块集成进YOLOv11,在相关数据集上进行实验,结果表明,该结合方式在保持Transformer优势的同时,提升了PSNR,降低了计算延迟和内存占用。

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

专栏链接: YOLOv11改进专栏

介绍

image-20251129093227665

摘要

本文针对Transformer架构在高效图像超分辨率任务中面临的高计算复杂度挑战展开研究。基于对自注意力机制中层间特征重复性的深入观察,我们提出了一种卷积化的自注意力替代模块——卷积注意力模块(ConvAttn)。该创新模块通过采用单个共享大核卷积与动态核卷积相结合的策略,有效模拟了自注意力机制的长程依赖建模能力和实例特异性加权特性。借助ConvAttn模块,我们在保持Transformer强大表征能力的前提下,显著降低了对传统自注意力机制及其伴随的内存密集型运算的依赖程度。此外,本研究成功攻克了将Flash注意力机制集成到轻量化超分辨率领域的核心技术难题,有效缓解了自注意力机制固有的内存瓶颈问题。我们摒弃了复杂自注意力模块的设计思路,转而通过Flash注意力机制将处理窗口尺寸扩展至32×32,在Urban100×2数据集上实现了峰值信噪比(PSNR)0.31分贝的显著提升,同时将计算延迟和内存占用分别降低16倍和12.2倍。基于上述技术突破,我们构建了名为"卷积模拟自注意力网络(ESC)"的新型模型架构。与HiT-SRF基准模型相比,ESC在Urban100×4数据集上实现了PSNR提升0.27分贝的优异性能,同时计算延迟和内存占用分别降低3.7倍和6.2倍。大量实验验证结果表明,尽管模型中大部分自注意力层被ConvAttn模块替代,ESC网络仍完整保留了Transformer架构的长程建模能力、数据扩展性以及强大的特征表征能力。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

ESC(Emulating Self-attention with Convolution) 是一款针对图像超分辨率(SR)任务设计的轻量化网络,核心为ConvAttn模块(通过共享13×13大核与动态核模拟自注意力的长程建模和实例依赖加权),并首次将Flash Attention集成到轻量化SR中,将自注意力窗口扩大至32×32,同时降低16×延迟和12.2×内存占用。该网络在替换大部分自注意力层的前提下,保留了Transformer的优势,在经典SR任务中,Urban100×4上PSNR达32.68dB(比HiT-SRF提升0.27dB),延迟降低3.7×、内存降低6.2×,且在任意尺度SR、真实世界SR任务中表现优异,支持资源受限设备部署。

(1)ConvAttn模块(核心创新)

  • 设计目标:用卷积模拟自注意力的两大核心能力(长程依赖建模、实例依赖加权)
  • 关键结构
    1. 通道分割:将输入特征按通道拆分为F_att(16通道,用于长程建模)和F_idt(剩余通道,保留局部特征)
    2. 双卷积机制:
      • 共享大核(13×13):全网络共享,负责长程交互,仅作用于F_att,降低参数冗余
      • 动态核(3×3):每层独立生成(通过GAP+1×1卷积+GELU),实现实例依赖加权
    3. 特征融合:卷积结果与F_idt拼接后经1×1卷积融合,输出最终特征

(2)Flash Attention集成

  • 创新应用:首次将Flash Attention引入轻量化SR任务,解决大窗口自注意力的内存问题
  • 关键效果:窗口尺寸从16×16扩大至32×32,延迟降低16×、内存降低12.2×(输入288×288×64时)
  • 技术细节:通过Flex Attention支持相对位置偏置(RelPos),避免训练不稳定

(3)ESC网络整体架构

模块 功能描述
浅层特征提取 3×3卷积将LR图像(H×W×3)转换为特征图(H×W×C)
深度特征提取 N个ESC Block(每个Block含1个自注意力层+M个ConvAttn层)+3×3卷积
图像级跳跃连接 直接处理LR图像,生成跳跃特征F_s,补充细节信息
上采样器 经典SR用亚像素卷积(SPConv),任意尺度SR用LTE,真实世界SR用RealESRGAN上采样器

核心代码

class Block(nn.Module):def __init__(self, dim: int, pdim: int, conv_blocks: int, kernel_size: int, window_size: int, num_heads: int, exp_ratio: int, attn_func=None, attn_type: ATTN_TYPE = 'Flex', use_ln: bool = False):super().__init__()self.ln_proj = LayerNorm(dim)self.proj = ConvFFN(dim, 3, 2)self.ln_attn = LayerNorm(dim) self.attn = WindowAttention(dim, window_size, num_heads, attn_func, attn_type)self.lns = nn.ModuleList([LayerNorm(dim) if use_ln else nn.Identity() for _ in range(conv_blocks)])self.pconvs = nn.ModuleList([ConvAttnWrapper(dim, pdim, kernel_size) for _ in range(conv_blocks)])self.convffns = nn.ModuleList([ConvFFN(dim, 3, exp_ratio) for _ in range(conv_blocks)])self.ln_out = LayerNorm(dim)self.conv_out = nn.Conv2d(dim, dim, 3, 1, 1)def forward(self, x: torch.Tensor, plk_filter: torch.Tensor) -> torch.Tensor:skip = xx = self.ln_proj(x)x = self.proj(x)x = x + self.attn(self.ln_attn(x))for ln, pconv, convffn in zip(self.lns, self.pconvs, self.convffns):x = x + pconv(convffn(ln(x)), plk_filter)x = self.conv_out(self.ln_out(x))return x + skip

实验

脚本

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

结果

image-20251129094813453

http://www.jsqmd.com/news/798467/

相关文章:

  • 城通网盘下载加速终极指南:如何免费突破100KB/s限制的3种高效方案
  • 终极歌词获取方案:163MusicLyrics让你轻松获取网易云和QQ音乐LRC歌词
  • RISC-V工具链实战:从源码编译到跨架构程序运行
  • Midjourney V6与DALL-E 3深度横评:从提示词容错率、中文理解力、商业版权合规性到渲染速度——实测数据全公开
  • WarcraftHelper:5分钟解决魔兽争霸III兼容性问题的终极方案
  • 实战指南:3个技巧让你的Typora写作效率提升300%
  • 如何用wxauto实现微信消息自动转发到钉钉/企业微信:3步搭建跨平台消息同步系统
  • Oracle数据库深度解析:从入门到精通的全面指南
  • 抖音批量下载终极方案:告别手动保存,10倍效率提升
  • AC鸭的迷宫按钮
  • 字节面试官也不给面子:“调了LangChain就说搭了RAG,向量检索怎么设计的?幻觉怎么处理的?一句没写啊。。。。”
  • Ghostscript实战指南:从PDF压缩、拆分到合并与格式转换
  • 5G与NVMe SSD如何重塑数据中心架构
  • Android binder学习笔记5 - binder transact内核态与用户态交互全链路解析
  • 彻底告别Ubuntu 20.04休眠唤醒黑屏:除了降级驱动,你还可以这样一劳永逸地禁用挂起
  • 终极指南:如何解决FanControl风扇突然“隐身“问题 - 快速恢复硬件识别的完整教程
  • centos10.1上安装mysql 9.6
  • YOLOv11 改进 - 注意力机制 GAM全局注意力机制:通道与空间注意力协同抑制背景干扰,强化目标关键特征
  • javascript中的caller和Error.stack
  • 工厂货物智能入库全流程自动化:基于实在Agent与ISSUT技术的2026工业自动化实战指南
  • Fluent Launch界面深度解析:从串行到并行的性能跃迁之路
  • 别再手动编译了!用Buildroot 2024.02为树莓派4B一键构建定制Linux系统(附完整配置流程)
  • Windows任务栏透明美化终极指南:TranslucentTB快速配置完整教程
  • 设计程序核算职场各类福利发放数据,对比福利成本与员工积极性变化,测算最优福利发放标准,控制企业人力开发同时提升员工幸福感。
  • MCDF顶层验证环境复用策略与实现
  • 雀魂Mod Plus终极指南:免费解锁全角色皮肤的最简单方法
  • CMake-GUI可视化编译OpenCV 3:给命令行恐惧症患者的Ubuntu图形化安装指南
  • YOLOv11 改进 - 注意力机制 Focused Linear Attention 聚焦线性注意力:增强特征聚焦与多样性,优化多尺度目标检测
  • 用Python和OpenCV搞定车道曲率计算:从像素到真实世界的保姆级转换指南
  • 从渔船到货轮:一文看懂AIS B类与A类设备的区别及数据解析要点