YOLOv11 改进 - SPPF模块   替代SPP,FFocal Modulation焦点调制:即插即用轻量设计优化全局语义捕获
前言本文介绍了焦点调制网络FocalNets及其在YOLOv11中的结合应用。FocalNets完全用焦点调制模块替代自注意力该模块由焦点上下文化、门控聚合和逐元素仿射变换组成能有效建模视觉中的标记交互。它通过局部特征聚焦、全局信息调制和多尺度处理增强模型表达能力。我们将FocalModulation模块集成进YOLOv11。文章目录 YOLOv11改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: YOLOv11改进专栏介绍摘要本研究提出焦点调制网络FocalNets该网络采用焦点调制模块完全替代自注意力SA机制用于视觉任务中的标记交互建模。焦点调制模块由三个核心组件构成i焦点上下文化组件通过深度卷积层序列实现从短距离到长距离的视觉上下文编码ii门控聚合组件选择性将上下文信息聚合至每个查询标记的调制器中iii逐元素仿射变换组件将调制器注入查询标记。大量实验验证表明FocalNets展现出卓越的可解释性特征并在图像分类、目标检测及分割任务中以相近计算成本超越了当前最先进的SA模型如Swin和Focal Transformers。具体而言FocalNets小型与基础版本在ImageNet-1K数据集上分别实现了82.3%和83.9%的top-1准确率在ImageNet-22K数据集以224×224分辨率预训练后微调至224×224和384×384分辨率时分别达到86.5%和87.3%的top-1准确率。在目标检测任务中基于Mask R-CNN框架的FocalNet基础版本以1×训练计划超越Swin对照组2.1个百分点且已超过采用3×训练计划的Swin模型49.0对48.5在语义分割任务中基于UPerNet框架的FocalNet基础版本在单尺度测试下超越Swin模型2.4个百分点多尺度测试下同样表现优异50.5对49.7。进一步地采用大型FocalNet与Mask2former组合在ADE20K语义分割任务中达到58.5 mIoU在COCO全景分割任务中获得57.9 PQ采用巨型FocalNet与DINO组合在COCO minival和test-dev数据集上分别实现64.3和64.4 mAP显著超越Swinv2-G和BEIT-3等基于注意力机制的大型模型。这些系统性实验结果充分证明焦点调制机制在视觉计算领域具有重要应用价值与发展潜力。文章链接论文地址论文地址代码地址代码地址基本原理Focal Modulation机制旨在结合CNNs和自注意力机制的优点通过在不同的空间尺度上聚焦Focal和调制Modulation特征来增强模型的表达能力。具体来说Focal Modulation包含以下几个关键组件局部特征聚焦Local Focalization- 通过聚焦机制在局部区域内提取特征类似于卷积操作。这有助于捕捉局部模式和细节。全局信息调制Global Modulation- 在全局范围内对特征进行调制类似于自注意力机制。这有助于整合全局上下文信息使模型能够理解更广泛的特征关系。多尺度处理Multi-Scale Processing- 通过在不同尺度上进行特征提取和调制Focal Modulation能够同时处理图像中的细节和整体结构。这种多尺度特性使得模型在处理复杂场景时更具鲁棒性。具体实现Focal Modulation的具体实现可以通过以下步骤进行特征提取- 使用卷积层或其他局部运算层提取初始特征。局部聚焦- 对提取的特征进行局部聚焦操作可以采用池化Pooling或注意力机制来实现。全局调制- 利用全局上下文信息对局部聚焦后的特征进行调制。这可以通过全局注意力层或其他全局运算层实现。多尺度融合- 将不同尺度上的特征进行融合通过跳跃连接Skip Connections或金字塔结构Pyramid Structure来整合多尺度信息。核心代码class FocalModulation(nn.Module): 焦点调制模块 Args: dim (int): 输入通道数。 proj_drop (float, optional): 输出的dropout比率。默认值0.0 focal_level (int): 焦点层级的数量 focal_window (int): 焦点层级1的焦点窗口大小 focal_factor (int, default2): 增加焦点窗口的步长 use_postln (bool, defaultFalse): 是否使用后调制层归一化 def __init__(self, dim, proj_drop0., focal_level2, focal_window7, focal_factor2, use_postlnFalse): super().__init__() self.dim dim # 焦点调制模块的特定参数 self.focal_level focal_level self.focal_window focal_window self.focal_factor focal_factor self.use_postln use_postln # 线性层输出维度为2*dim(焦点层级数1) self.f nn.Linear(dim, 2*dim(self.focal_level1), biasTrue) # 1x1卷积层输入和输出通道数均为dim self.h nn.Conv2d(dim, dim, kernel_size1, stride1, padding0, groups1, biasTrue) # GELU激活函数 self.act nn.GELU() # 线性层输入和输出维度均为dim self.proj nn.Linear(dim, dim) # Dropout层使用给定的丢弃比率 self.proj_drop nn.Dropout(proj_drop) # 存储焦点层的列表 self.focal_layers nn.ModuleList() if self.use_postln: # 如果使用后调制层归一化定义层归一化层 self.ln nn.LayerNorm(dim) # 构建每个焦点层 for k in range(self.focal_level): # 根据层级计算卷积核大小 kernel_size self.focal_factor*k self.focal_window self.focal_layers.append( nn.Sequential( nn.Conv2d(dim, dim, kernel_sizekernel_size, stride1, groupsdim, paddingkernel_size//2, biasFalse), nn.GELU(), ) ) def forward(self, x): 前向传播函数 Args: x: 形状为(B, H, W, C)的输入特征 B, nH, nW, C x.shape # 通过线性层f得到形状为(B, H, W, 2*C 焦点层级数1)的张量 x self.f(x) # 将通道维度移动到第二维并转换为连续内存布局 x x.permute(0, 3, 1, 2).contiguous() # 将张量x拆分为查询q、上下文ctx和门控信号gates q, ctx, gates torch.split(x, (C, C, self.focal_level1), 1) ctx_all 0 # 处理每个焦点层级 for l in range(self.focal_level): ctx self.focal_layers[l](ctx) ctx_all ctx_all ctx*gates[:, l:l1] # 计算全局上下文并应用激活函数 ctx_global self.act(ctx.mean(2, keepdimTrue).mean(3, keepdimTrue)) ctx_all ctx_all ctx_global*gates[:,self.focal_level:] # 查询q与处理后的上下文相乘 x_out q * self.h(ctx_all) # 将通道维度移动到最后并转换为连续内存布局 x_out x_out.permute(0, 2, 3, 1).contiguous() # 如果使用后调制层归一化应用层归一化 if self.use_postln: x_out self.ln(x_out) # 通过线性层和Dropout层 x_out self.proj(x_out) x_out self.proj_drop(x_out) return x_out实验脚本import warnings warnings.filterwarnings(ignore) from ultralytics import YOLO if __name__ __main__: # 修改为自己的配置文件地址 model YOLO(/root/ultralytics-main/ultralytics/cfg/models/11/yolov11-FocalModulation.yaml) # 修改为自己的数据集地址 model.train(data/root/ultralytics-main/ultralytics/cfg/datasets/coco8.yaml, cacheFalse, imgsz640, epochs10, single_clsFalse, # 是否是单类别检测 batch8, close_mosaic10, workers0, optimizerSGD, ampTrue, projectruns/train, nameFocalModulation, )结果

相关新闻

Windows Cleaner终极指南:免费开源工具一键解决C盘爆红和系统卡顿问题

Windows Cleaner终极指南:免费开源工具一键解决C盘爆红和系统卡顿问题

Windows Cleaner终极指南:免费开源工具一键解决C盘爆红和系统卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到Windows系统C盘空…

2026/7/5 7:14:02 阅读更多 →
低成本工业控制器按键方案:74HC32与PIC32MZ实现多功能控制

低成本工业控制器按键方案:74HC32与PIC32MZ实现多功能控制

1. 项目背景与核心思路最近在工业控制器项目中遇到一个有趣的挑战:如何在有限的硬件资源下实现多功能控制?传统方案要么需要增加物理按键数量(导致面板臃肿),要么采用昂贵的编码器(成本飙升)。经…

2026/7/5 7:12:02 阅读更多 →
Brook:跨平台可编程网络工具,Star 1.5 万

Brook:跨平台可编程网络工具,Star 1.5 万

文章目录Brook:跨平台可编程网络工具,Star 1.5 万为什么这工具能拿到 1.5 万 Star?1. 跨平台适配彻底2. 长期维护,社区活跃可编程是核心卖点适合谁用?Brook:跨平台可编程网络工具,Star 1.5 万 …

2026/7/5 7:12:02 阅读更多 →

最新新闻

Java实战:解析Navicat连接加密机制与密码恢复

Java实战:解析Navicat连接加密机制与密码恢复

1. 项目概述:为什么我们需要关注Navicat的连接加密作为一名常年和数据库打交道的Java开发者,Navicat几乎是工具箱里的标配。它图形化的界面、便捷的数据操作和连接管理,极大地提升了我们的工作效率。但不知道你有没有遇到过这样的场景&#x…

2026/7/5 8:14:18 阅读更多 →
Mac安装IDA Pro全攻略:解决安全警告、架构兼容与Python配置

Mac安装IDA Pro全攻略:解决安全警告、架构兼容与Python配置

1. 项目概述:为什么IDA Pro在Mac上的下载与安装会成为一道坎?如果你是一名安全研究员、逆向工程师,或者是对软件底层运行机制充满好奇的开发者,那么IDA Pro这个名字对你来说一定如雷贯耳。它被誉为逆向工程领域的“瑞士军刀”&…

2026/7/5 8:10:18 阅读更多 →
openEuler-lsb入门教程:10分钟快速搭建LSB兼容环境

openEuler-lsb入门教程:10分钟快速搭建LSB兼容环境

openEuler-lsb入门教程:10分钟快速搭建LSB兼容环境 【免费下载链接】openEuler-lsb LSB support for linux Standard Base specification 项目地址: https://gitcode.com/openeuler/openEuler-lsb 前往项目官网免费下载:https://ar.openeuler.org…

2026/7/5 8:10:18 阅读更多 →
10分钟学会OpenEuler bridge-utils:新手必备网络桥接配置技巧

10分钟学会OpenEuler bridge-utils:新手必备网络桥接配置技巧

10分钟学会OpenEuler bridge-utils:新手必备网络桥接配置技巧 【免费下载链接】bridge-utils Utilities for configuring the linux ethernet bridge 项目地址: https://gitcode.com/openeuler/bridge-utils 前往项目官网免费下载:https://ar.ope…

2026/7/5 8:08:17 阅读更多 →
超实用!内网/交换机/路由器/无线运维排障干货大全

超实用!内网/交换机/路由器/无线运维排障干货大全

🌟 一、网络排障黄金流程(核心必记)所有网络故障排查遵循由近到远原则,适配80%办公网络问题,一步快速定位故障点!排查顺序:本地网卡 → 网线/墙面网口面板 → 交换机端口 → 网关 → 外网万能排…

2026/7/5 8:08:17 阅读更多 →
NVIDIA Profile Inspector深度探索:解锁显卡隐藏性能的7个实战技巧

NVIDIA Profile Inspector深度探索:解锁显卡隐藏性能的7个实战技巧

NVIDIA Profile Inspector深度探索:解锁显卡隐藏性能的7个实战技巧 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款能够深入访问NVIDIA驱动内部数据库的工具…

2026/7/5 8:08:17 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻