当前位置: 首页 > 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)

 

http://www.lryc.cn/news/510802.html

相关文章:

  • VMware虚拟机安装银河麒麟操作系统KylinOS教程(超详细)
  • Elasticsearch-索引的批量操作
  • 【Android】application@label 属性属性冲突报错
  • 手机发烫怎么解决?
  • 【Artificial Intelligence篇】AI 携手人类:共铸未来创作新纪元
  • 小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面
  • Go快速开发框架2.6.0版本更新内容快速了解
  • 条件语句 - if, else, switch-case
  • Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题
  • 代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。
  • 说说 DinoGrid Open Edition 算法生成艺术背后的故事
  • FFmpeg推拉流命令
  • 【图像处理lec10】图像压缩
  • 单片机实物成品-007 汽车防盗系统(代码+硬件+论文)
  • Qt仿音乐播放器:动画类
  • 摄影构图与拍摄
  • Colyseus-monitor插件介绍
  • Hive练习题11-15
  • Overleaf中设置表格中的字体为Times New Roman
  • 模型 卡尼曼系统
  • 潇洒郎:部署Dify, 安装Ollama,Ollama下载模型,Dify配置模型
  • Joget研究——Joget8商业版部署
  • Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)
  • 从百度云网盘下载数据到矩池云网盘或者服务器内
  • Vue.js 高级组件开发:抽象与高性能架构
  • Kubernetes 安装 Nginx以及配置自动补全
  • CSS---实现盒元素div内input/textarea的focus状态时给父元素加属性!
  • jmeter设置tps、响应时间监测时间间隔
  • WPSJS:让 WPS 办公与 JavaScript 完美联动
  • 深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)