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

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

        本篇文章将介绍一个新的改进机制——SMFA(自调制特征聚合模块),并阐述如何将其应用于YOLOv11中,显著提升模型性能。随着深度学习在计算机视觉中的不断进展,目标检测任务也在快速发展。YOLO系列模型(You Only Look Once)一直因其高效和快速而备受关注。然而,尽管YOLOv11在检测精度和速度上有显著提升,但在处理复杂背景或需要捕捉更多局部和全局信息时,仍然面临挑战。为此,我们引入了SMFA,通过提取图像中的全局结构和细节来进一步提高YOLOv11的性能,尤其在识别小物体或复杂背景物体时表现突出。

首先,我们将解析SMFA的工作原理,它通过EASA分支和LDE分支捕获非局部信息和局部细节,协同建模图像的全局结构与局部细节。随后,我们会详细说明如何将该模块与YOLOv11相结合,展示代码实现细节及其使用方法,最终展现这一改进对目标检测效果的积极影响。

YOLOv11原模型
改进后的模型

1. Self-Modulation Feature Aggregation(SMFA)结构介绍       

        SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。这种设计可以有效捕获图像的全局和局部细节,从而提升图像中的全局结构和细节。

2. YOLOv11与SMFA的结合   

1. 在backbone中引用:在YOLOv11的骨干网络中,可以将SMFA模块引入SPPF模块之前,。这样,网络不仅能够从输入图像中提取局部细节信息,还可以同时捕获图像的全局信息。这种局部与全局信息的结合能够大幅提升YOLOv11对目标物体的识别能力。

2. 在C3k2中使用SMFA模块:C3k2模块是一种改进的卷积层结构,用于增强特征提取的能力。本文将SMFA插入到C3k2模块中,增强全局和局部信息。

3. Self-Modulation Feature Aggregation(SMFA)代码部分

YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve
YOLO11全部代码

 4. 将SMFA引入到YOLOv11中

第一: 将下面的核心代码复制到D:\bilibili\model\YOLO11\ultralytics-main\ultralytics\nn路径下,如下图所示。

第二:在task.py中导入SMFA包

第三:在task.py中的模型配置部分下面代码

第二个改进 

第一个改进,在SPPF模块之前添加

第四:将模型配置文件复制到YOLOV11.YAMY文件中

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLO11 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n'# [depth, width, max_channels]n: [0.50, 0.25, 1024] # summary: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPss: [0.50, 0.50, 1024] # summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPsm: [0.50, 1.00, 512] # summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPsl: [1.00, 1.00, 512] # summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPsx: [1.00, 1.50, 512] # summary: 631 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs# YOLO11n backbone
backbone:# [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, SMFA, []]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 2, C2PSA, [1024]] # 10# YOLO11n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 2, C3k2, [512, False]] # 13- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 2, C3k2, [256, False]] # 16 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 14], 1, Concat, [1]] # cat head P4- [-1, 2, C3k2, [512, False]] # 19 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 11], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2, [1024, True]] # 22 (P5/32-large)- [[17, 20, 23], 1, Detect, [nc]] # Detect(P3, P4, P5)# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLO11 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n'# [depth, width, max_channels]n: [0.50, 0.25, 1024] # summary: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPss: [0.50, 0.50, 1024] # summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPsm: [0.50, 1.00, 512] # summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPsl: [1.00, 1.00, 512] # summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPsx: [1.00, 1.50, 512] # summary: 631 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs# YOLO11n backbone
backbone:# [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_SMFA, [256, False, 0.25]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 2, C3k2_SMFA, [512, False, 0.25]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 2, C3k2_SMFA, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 2, C3k2_SMFA, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 2, C2PSA, [1024]] # 10# YOLO11n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 2, C3k2_SMFA, [512, False]] # 13- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 2, C3k2_SMFA, [256, False]] # 16 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 2, C3k2_SMFA, [512, False]] # 19 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2_SMFA, [1024, True]] # 22 (P5/32-large)- [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)

第五:运行成功


from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorldif __name__=="__main__":# 使用自己的YOLOv11.yamy文件搭建模型并加载预训练权重训练模型model = YOLO(r"D:\bilibili\model\YOLO11\ultralytics-main\ultralytics\cfg\models\11\yolo11_SMFA.yaml")\.load(r'D:\bilibili\model\YOLO11\ultralytics-main\yolo11n.pt')  # build from YAML and transfer weightsresults = model.train(data=r'D:\bilibili\model\ultralytics-main\ultralytics\cfg\datasets\VOC_my.yaml',epochs=100, imgsz=640, batch=8)

 

相关文章:

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

本篇文章将介绍一个新的改进机制——SMFA(自调制特征聚合模块),并阐述如何将其应用于YOLOv11中,显著提升模型性能。随着深度学习在计算机视觉中的不断进展,目标检测任务也在快速发展。YOLO系列模型(You Onl…...

VMware虚拟机安装银河麒麟操作系统KylinOS教程(超详细)

目录 引言1. 下载2. 安装 VMware2. 安装银河麒麟操作系统2.1 新建虚拟机2.2 安装操作系统2.3 网络配置 3. 安装VMTools 创作不易,禁止转载抄袭!!!违者必究!!! 创作不易,禁止转载抄袭…...

Elasticsearch-索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 #批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mget {"…...

【Android】application@label 属性属性冲突报错

错误记录 What went wrong: Execution failed for task :app:processDebugMainManifest. > Manifest merger failed : Attribute applicationlabel value(string/app_name) from AndroidManifest.xml:8:9-41is also present at [:abslibrary] AndroidManifest.xml:25:9-47 v…...

手机发烫怎么解决?

在当今这个智能手机不离手的时代,手机发烫成了不少人头疼的问题。手机发烫不仅影响使用手感,长期过热还可能损害手机硬件、缩短电池寿命,甚至引发安全隐患。不过别担心,下面这些方法能帮你有效给手机 “降温”。 一、使用习惯方面…...

【Artificial Intelligence篇】AI 携手人类:共铸未来创作新纪元

引言: 随着科技的飞速发展,人工智能已逐渐渗透到各个领域,尤其是在创作领域,其与人类的合作展现出了前所未有的可能性和潜力。从艺术作品的生成到文学作品的创作,从复杂软件的开发到创新设计的构思,AI 正在…...

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH 前言 例如:随着人工智能的不断发展&#xf…...

Go快速开发框架2.6.0版本更新内容快速了解

GoFly企业版框架2.6.0版本更新内容较多,为了大家能够快速了解,本文将把更新内容列出详细讲解。本次更新一段时间以来大伙反馈的问题,并且升级后台安全认证机制,增加了RBAC权限管理及系统操作日志等提升后台数据安全性。 更新明细…...

条件语句 - if, else, switch-case

引言 条件语句是编程中用于根据不同的条件执行不同代码块的重要工具。C 提供了 if、else 和 switch-case 等条件语句,帮助程序员实现逻辑分支。本文将详细介绍这些条件语句的用法,并通过实例帮助读者更好地理解和掌握这些概念。 一、if 语句 if 语句是…...

Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题

Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题 一、问题场景 [ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: The primary key is necessary when enable Key: scan.incremental.snapshot.enabled , default: …...

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

1.岛屿数量深搜 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接…...

说说 DinoGrid Open Edition 算法生成艺术背后的故事

大约三年前,我开始创作我的第一个算法生成艺术作品。这种算法被我命名为 Montage Mosaic,通过对图片和像素的放大与缩小,尝试在作品中探索宏观与微观视界的关系。这次创作让我首次生成了一张超越 JPEG 规格限制的图片。尽管其基本实现逻辑可以…...

FFmpeg推拉流命令

命令简介 它可以将本地的视频/音频流推送到服务器,也可以将服务器上的音视频流拉到本地。 推流命令的命令格式 ffmpeg -re -i [输入文件] -c:v [视频编码器] -c:a [音频编码器] -f [输出格式] [推流地址] 参数解析 -re 表示采用实时模式,以原始速度…...

【图像处理lec10】图像压缩

目录 一、图像压缩基础 1、图像压缩的基本概念 2、数据冗余与压缩比 3、三种主要的数据冗余类型 4、保真度评估标准(Fidelity Criteria) 5、应用与实践 二、图像压缩模型 1、图像压缩模型概述 (1)压缩系统的结构 &#…...

单片机实物成品-007 汽车防盗系统(代码+硬件+论文)

汽车尾气监测系统(温度震动传感器 红外热释电GPS三个指示灯蜂鸣器正常模式防盗模式wifi传输控制送APP源码 ) 把该系统划分为两个不同设计主体,一方面为硬件控制主体,通过C语言来编码实现,以STM32开发板为核心控制器&a…...

Qt仿音乐播放器:动画类

一、基本属性 #include<QPropertyAnimation>//头文件property&#xff1a;性质属性 animation&#xff1a;动画、动画效果、动漫 QPropertyAnimation&#xff1a;可以对对任何QObject的子类的属性进行动画的展示&#xff1b;只要存在set方法 QPropertyAnimation(QObje…...

摄影构图与拍摄

摄影构图与拍摄-------------------------------------------------------------------------------------------- 画面构图------------------------------ 1.镜头感 视觉会跟着画面突出点吸引 --》引导观众视线 2.景别–》同一焦距摄像机与被摄物距离、同一摄影距离但改变镜头…...

Colyseus-monitor插件介绍

Colyseus Monitor 简介 colyseus-monitor 是 Colyseus 框架的官方插件,用于监控和管理 Colyseus 服务器的运行状态。它提供了一个基于 Web 的用户界面,使开发者能够实时查看服务器的性能指标、房间状态以及客户端连接等信息。这对于调试、优化和维护游戏服务器尤其有用。 主…...

Hive练习题11-15

11、第11题 info 表 date result 2005-05-09 win 2005-05-09 lose 2005-05-09 lose 2005-05-09 lose 2005-05-10 win 2005-05-10 lose 2005-05-10 lose 如果要生成下列结果, 该如何写sql语句? win lose 2005-05-09 2 2 2005-05-10 1 2 答案&#xff1a; (1) …...

Overleaf中设置表格中的字体为Times New Roman

在Overleaf中设置表格中的字体为Times New Roman 需要有这个字体包 使用 \usepackage{times} 宏包 在文档的导言区添加 \usepackage{times} 宏包,这将把整个文档的字体设置为Times New Roman,包括表格中的字体。例如:\documentclass{article} \usepackage{times} \begin{…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...