YOLOv13改进策略【卷积层篇】| NeurIPS 2022 gnConv 递归门控卷积,把自注意力翻译成一个卷积算子

发布时间:2026/10/31 7:47:25

YOLOv13改进策略【卷积层篇】| NeurIPS 2022 gnConv 递归门控卷积,把自注意力翻译成一个卷积算子 本文基于YOLOv13 官方仓库iMoonLab/yolov13ultralytics 8.3.63 fork实测整理Windows/CPU 全程可跑。HorNetRao et al., NeurIPS 2022的核心洞察自注意力的 q·k 加权求和本质就是逐点乘门控 线性投影的递归——把它写成卷积形式就是 gnConvrecursive gated convolution。输入经 1×1 分成查询与门控两路门控路过大核深度卷积后按维度切成 order 份递归地乘门控→升维——以普通卷积的复杂度建模高阶空间交互。本文基于官方 raoyongming/HorNet 等价内嵌替换进 v13n 的层 22P3 引导投影 1×1 卷积实测13,200 参数。前言卷积层篇的替换式玩法层数不变、无顺移但替换对象不是下采样而是Neck 里 P3 引导分支的 1×1 投影卷积层 22——它负责把 HyperACE 的引导特征压到检测分辨率是引导信息怎么喂给检测头的咽喉。gnConv 出自 NeurIPS 2022《HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions》官方源码 github.com/raoyongming/HorNet官方类名gnconv本文仅把类名规范为GnConv。本文所有数据均在 v13n 上实测。专栏目录YOLOv13改进目录一览专栏地址YOLOv13改进专栏——持续更新各方向即插即用改进一、替换点分析head: ... - [-1, 2, DSC3k2, [256, True]] # 21 主干 P3 分支 - [10, 1, Conv, [256, 1, 1]] # 22 ← 本文替换这一层 - [[21, 22], 1, FullPAD_Tunnel, []] # 23 ...层数不变无顺移。层 22 的输入输出都是 64 通道width0.25 缩放后——gnConv 是保形算子输出通道输入通道严丝合缝。原层是 1×1 卷积8,320 参数零空间感受野gnConv 内置 7×7 深度卷积 递归门控的高阶交互替换后该路径的空间建模能力大幅增强参数只增加 13,200。FullPAD 的 [21, 22] 引用、Detect 的引用全部原样可用。二、gnConv 原理速览自注意力的卷积翻译自注意力 q·k 相似度加权 v 的求和。HorNet 指出这等价于用 k 的函数门控 v、再用线性层混合的递归形式——于是用卷积件替换注意力件投影分叉1×1 卷积把输入升到 2C切成pwa查询C/16与abc被门控特征其余门控路abc 过 7×7深度卷积空间交互后按维度切成 order 份维度从 C/16 逐级到 C/2递归门控x pwa * dw_1x pw_i(x) * dw_{i1}循环 order-1 次——每轮乘一份门控 → 1×1 升维order5 时实现五阶空间交互输出投影1×1 卷积回到 C为什么强高阶交互多轮乘法门控让特征之间的依赖从二阶普通注意力扩展到五阶而全部计算都是深度卷积 1×1——没有 softmax、没有 (HW)² 矩阵分辨率越高越划算保形模块输出通道输入通道注册走只需输入通道数的分支yaml 写[]要求通道能被 2^(order-1)16 整除。三、实现代码官方 raoyongming/HorNet 的gnconv等价内嵌仅去掉 gflayer 分支与打印、forward 收敛为单输入签名已做同权重输出逐位比对max diff 0import torch import torch.nn as nn def get_dwconv(dim, kernel, bias): return nn.Conv2d(dim, dim, kernel_sizekernel, padding(kernel - 1) // 2, biasbias, groupsdim) class GnConv(nn.Module): gnConv 递归门控卷积 (Rao et al., NeurIPS 2022, HorNet)官方 raoyongming/HorNet 的 gnconv 等价内嵌仅去掉 gflayer 分支与打印、 forward 收敛为单输入签名官方类名 gnconv此处仅规范命名便于 yaml 调用。 把自注意力的 q·k 加权求和翻译成卷积1×1 投影出 pwa查询与 abc 被门控特征abc 经 7×7 深度卷积后按维度切成 order 份然后递归地 乘上门控 → 1×1 升维 → 再乘下一份门控——以远低于注意力的代价实现 高阶空间交互。要求 channel 能被 2^(order-1) 整除。 保形模块输入输出同形状。 def __init__(self, dim, order5, s1.0): super().__init__() self.order order self.dims [dim // 2 ** i for i in range(order)] self.dims.reverse() assert dim % 2 ** (order - 1) 0, channel 必须能被 2^(order-1) 整除 self.proj_in nn.Conv2d(dim, 2 * dim, 1) self.dwconv get_dwconv(sum(self.dims), 7, True) self.proj_out nn.Conv2d(dim, dim, 1) self.pws nn.ModuleList( [nn.Conv2d(self.dims[i], self.dims[i 1], 1) for i in range(order - 1)] ) self.scale s def forward(self, x): fused_x self.proj_in(x) pwa, abc torch.split(fused_x, (self.dims[0], sum(self.dims)), dim1) dw_abc self.dwconv(abc) * self.scale dw_list torch.split(dw_abc, self.dims, dim1) x pwa * dw_list[0] for i in range(self.order - 1): x self.pws[i](x) * dw_list[i 1] x self.proj_out(x) return x注意签名是保形风格yaml 写[]parse_model 自动注入 c1注册走只需输入通道数的分支。四、添加步骤v13 版1. 修改ultralytics/nn/modules/conv.pyget_dwconv函数与GnConv类粘贴到 conv.py 末尾。2. 修改ultralytics/nn/modules/__init__.pyfrom .conv import (...)里追加GnConv,__all__里给最后一项DSConv补逗号后追加GnConv。3. 修改ultralytics/nn/tasks.py顶部导入块加GnConvparse_model()里新增分支保形模块yaml 写[]通道数自动注入elif m is GnConv: # GnConv保形模块只需输入通道数 args.insert(0, ch[f])插入位置elif m is FullPAD_Tunnel:之后、else:之前。五、yaml 模型文件只改第 22 层其余与官方 yolov13.yaml 逐行一致# Ultralytics YOLOv13n GnConv 递归门控卷积 nc: 80 scales: n: [0.50, 0.25, 1024] s: [0.50, 0.50, 1024] l: [1.00, 1.00, 512] x: [1.00, 1.50, 512] backbone: # [from, repeats, module, args] - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 - [-1, 1, Conv, [128, 3, 2, 1, 2]] # 1-P2/4 - [-1, 2, DSC3k2, [256, False, 0.25]] # 2 - [-1, 1, Conv, [256, 3, 2, 1, 4]] # 3-P3/8 - [-1, 2, DSC3k2, [512, False, 0.25]] # 4 - [-1, 1, DSConv, [512, 3, 2]] # 5-P4/16 - [-1, 4, A2C2f, [512, True, 4]] # 6 - [-1, 1, DSConv, [1024, 3, 2]] # 7-P5/32 - [-1, 4, A2C2f, [1024, True, 1]] # 8 head: - [[4, 6, 8], 2, HyperACE, [512, 8, True, True, 0.5, 1, both]] # 9 - [-1, 1, nn.Upsample, [None, 2, nearest]] # 10 - [ 9, 1, DownsampleConv, []] # 11 - [[6, 9], 1, FullPAD_Tunnel, []] # 12 - [[4, 10], 1, FullPAD_Tunnel, []] # 13 - [[8, 11], 1, FullPAD_Tunnel, []] # 14 - [-1, 1, nn.Upsample, [None, 2, nearest]] # 15 - [[-1, 12], 1, Concat, [1]] # 16 cat backbone P4 - [-1, 2, DSC3k2, [512, True]] # 17 - [[-1, 9], 1, FullPAD_Tunnel, []] # 18 - [17, 1, nn.Upsample, [None, 2, nearest]] # 19 - [[-1, 13], 1, Concat, [1]] # 20 cat backbone P3 - [-1, 2, DSC3k2, [256, True]] # 21 - [-1, 1, GnConv, []] # 22 ★GnConv替换1×1投影卷积层数不变 - [[21, 22], 1, FullPAD_Tunnel, []] # 23 - [-1, 1, Conv, [256, 3, 2]] # 24 - [[-1, 18], 1, Concat, [1]] # 25 cat head P4 - [-1, 2, DSC3k2, [512, True]] # 26 - [[-1, 9], 1, FullPAD_Tunnel, []] # 27 - [26, 1, Conv, [512, 3, 2]] # 28 - [[-1, 14], 1, Concat, [1]] # 29 cat head P5 - [-1, 2, DSC3k2, [1024,True]] # 30 - [[-1, 11], 1, FullPAD_Tunnel, []] # 31 - [[23, 27, 31], 1, Detect, [nc]] # 32 Detect(P3, P4, P5)六、成功运行结果yolo detect train modelyolov13n-GnConv.yaml datamydata.yaml epochs100 imgsz640 batch4Python 方式from ultralytics import YOLO model YOLO(yolov13n-GnConv.yaml).load(yolov13n.pt) model.train(datamydata.yaml, epochs100, imgsz640, batch4)本文实测YOLOv13 官方仓库Windows CPUv13n 结构替换层 22基线 yolov13n: 2,494,151 parameters, 6.5 GFLOPs GnConv: 2,507,351 parameters, 6.7 GFLOPs 第22层GnConv 3 epochs completed. Results saved to runs\detect\v13_gnconv_smoke✅ 断言全部通过① 适配版与官方gnconv同权重输出逐位一致max diff 0② 第 22 层为GnConv总参数量恰为基线 13,200模块 21,520 − 原 1×1 卷积 8,320③model.save引用包含第 22 层FullPAD [21, 22] 消费其输出梯度可达无悬空层④ 层数不变整网 640 前向正常3 轮冒烟训练正常收敛。参数量分解64 通道order5部件参数量说明proj_in 1×164→1288,320分出查询与门控两路dwconv 7×7 深度卷积124 组6,076门控路的空间交互pws 四段 1×14→8→16→32→642,840递归升维proj_out 1×164→644,224输出投影合计21,52013,200原层为 1×1 卷积 8,320模型ParamsGFLOPs说明YOLOv13n 基线2,494,1516.5官方结构GnConv2,507,3516.7五阶递归门控空间交互七、总结gnConv 的三点记忆锚注意力→卷积的翻译乘门控 线性投影的递归等价于高阶空间交互、order 控制阶数order5 时维度按 C/16→C/8→C/4→C/2→C 递归升维通道需能被 16 整除、替换零感受野的 1×1 最划算本篇替换的 P3 引导投影原来完全没有空间建模能力。它与 Involution上篇同走动态核路线Involution 逐位置生成核、交互只在 k² 邻域内gnConv 用递归门控把交互阶数堆到五阶——一个空间更深一个阶数更高。觉得有帮助的话点赞收藏关注三连支持一下评论区欢迎交流你的实验结果~专栏目录YOLOv13改进目录一览 专栏地址YOLOv13改进专栏——持续更新各方向即插即用改进
延伸阅读

更多相关文章

2026/10/31 7:46:32

毕设项目 基于深度学习二维码检测识别系统

文章目录 0 简介1 二维码基础概念1.1 二维码介绍1.2 QRCode1.3 QRCode 特点 2 机器视觉二维码识别技术2.1 二维码的识别流程2.2 二维码定位2.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 最后 0 简介 今天学长向大家分享一个毕业设计项目 **毕业设计 基于深度学习…

2026/10/31 7:47:19

ESP32+LVGL仪表盘与进度条实战:从环境搭建到动画联动

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

2026/10/26 6:46:42

半导体基础知识入门:从能带到器件,一张地图读懂芯片

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

2026/10/31 7:43:40

果蔬连连看H5游戏全解析:玩法机制、通关技巧与关卡设计逻辑

果蔬连连看这类H5小游戏,看起来只是"点两下消一对"的休闲玩意儿,但真要做推荐、写攻略、甚至自己动手改一版,里面的门道比想象中多得多。我接触过不少农场经营题材的轻量级网页游戏,也帮朋友做过几款连连看玩法的关卡配…

2026/10/31 7:43:40

OpenClaw在macOS的集成与优化实践

1. OpenClaw与macOS集成概述OpenClaw作为跨平台的自动化工具链,在macOS环境下提供了深度系统集成能力。其菜单栏应用(Menu Bar App)采用SwiftUI构建,通过launchd实现后台服务管理,完美适配macOS的沙盒安全机制。这套方…

2026/10/31 7:43:40

基于Django的旅游景区数据分析系统开发实践

1. 旅游景区数据分析系统概述旅游景区数据分析可视化系统是一个基于Python和Django框架开发的Web应用,旨在帮助旅游管理部门、景区运营者和相关研究人员深入了解旅游市场动态。这个系统能够处理多种格式的旅游数据(如CSV、Excel等)&#xff0…

2026/10/31 7:43:40

企业信创认证全流程解析与实施指南

1. 企业信创认证背景与价值解析信创产业作为国家信息技术应用创新战略的核心载体,正在重塑企业IT基础设施的底层架构。根据最新行业调研数据,2025年党政和重点行业信创渗透率将突破50%,金融、电信等领域已完成三期试点,进入全面推…

2026/10/31 7:43:40

数字孪生技术在城市更新中的应用与实践

1. 城市更新与数字孪生的时代机遇20万亿规模的城市更新浪潮正在席卷全国,这不仅是物理空间的改造升级,更是城市数字化转型的关键契机。视频孪生技术作为数字城市建设的新型基础设施,正在重新定义城市治理、产业升级和民生服务的模式边界。传统…

2026/10/31 7:38:39

编译原理知识地图:词法分析、语法分析与代码优化复习指南

简介:《编译原理学习指导》面向计算机专业本科生、考研复习者及自学编译原理的开发者,针对课程理论抽象、算法理解困难和教材选择无从下手等问题提供学习路径与参考建议。压缩包内共1个doc文件,约34KB,篇幅集中,便于通…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑