[yolov11改进系列]基于yolov11引入倒置残差块块注意力机制iEMA的python源码+训练源码

article/2025/7/12 23:29:23

【iEMA介绍】

iRMB(Inverted Residual Mobile Block)的框架原理,是一种结合轻量级CNN和注意力机制的方法,用于改进移动设备上的目标检测模型。IRMB通过倒置残差块和元移动块实现高效信息处理,同时保持模型轻量化。本文中提出一个新的主干网络EMO,主要思想是将轻量级的CNN架构与基于注意力的模型结构相结合

1. 简介

倒置残差块(IRB)作为轻量级CNN的基础设施,在基于注意力的研究中尚未有对应的部分。本文从统一的视角重新考虑了基于高效IRB和Transformer有效组件的轻量级基础设施,将基于CNN的IRB扩展到基于注意力的模型,并抽象出一个残差的元移动块(MMB)用于轻量级模型设计。遵循简单但有效的设计准则,本文推导出了现代化的倒置残差移动块(IRMB),并以此构建了类似ResNet的高效模型(EMO)用于下游任务。

2. iRMB主要思想

iRMB(Inverted Residual Mobile Block)的主要思想是将轻量级的CNN架构与基于注意力的模型结构相结合(优点类似于ACmix),以创建高效的移动网络。Irmb通过重新考虑导致残差(IRB)和Transformer的有效组件,实现了一种统一的视角,从而扩展了CNN的IRB到基于注意力的模型。Irmb的设计目标是在保持模型轻量级的同时,实现对计算资源的有效利用和高准确率。这一方法通过在下游任务上的广泛实验得到验证,展示出其在轻量级模型领域的优越性能。

iRMB的主要创新点在于以下三个点:

  1. 结合CNN的轻量级特征和Transformer的动态模型能力,创新提出了iRMB结构,适用于移动设备上的密集预测任务
  2. 使用倒置残差块设计,扩展了传统CNN的IRB到基于注意力的模型,增强了模型处理长距离信息的能力
  3. 提出了元移动块(Meta-Mobile Block),通过不同的扩展比率和高效操作符,实现了模型的模块化设计,使得模型更加灵活和高效

3. IRMB结构

iRMB结构的主要创新点是它结合了卷积神经网络的轻量级特性和Transformer模型的动态处理能力。这种结构特别适用于移动设备上的密集预测任务,因为它旨在计算能力有限的环境中提供高效的性能。IRMB通过其倒置残差设计改进了信息流的处理,允许在保持模型轻量的同时捕捉和利用长距离依赖,这对于图像分类,对象检测和语义分割等任务至关重要。这种设计使得模型在资源受限的设备上也能够高效运行,同时保持或提高预测准确性。

上图展示了iRMB的设计理念和结构,左侧是从多头自注意力和前馈网络中抽象出的统一元移动块(Meta-Moblie Block),它将不同扩展比率和高效操作符结合起来,形成特定的模块。右侧是基于iRMB构建的类似ResNet的高效模型(EMO),它仅由推导出的iRMB组成,并用于各种下游任务,如cls,det,seg。这种设计实现了模型的轻量化,同时保持了良好的性能和效率。

 

上图展示了Irmb的结构范式,Irmb是一种混合网络模块,它结合了深度可分离卷积核自注意力机制。conv1用于通道数的压缩和扩张,以此优化计算效率。深度可分离卷积用于捕捉空间特征,而注意力机制则用于捕获特征间的全局依赖关系。

4. 倒置残差块

在IRMB设计中,使用倒置残差块(IRB)的概念被扩展到了其注意力的模块中。这使得模型能够更有效的处理长距离信息,这是因为自注意力机制能够捕获输入数据汇总不同部分之间的全局依赖关系。传统的cnn通常只能捕捉到局部特征,而通过引入注意力机制,IRMB能够在提取特征时考虑到整个输入空间,增强了模型对复杂数据模式的理解能力,特别是在处理视觉和序列数据时。这种结合了传统CNN的轻量化和Transformer的长距离建模能力的设计,为在资源受限的环境中实现了高效的深度学习模型提供了新的可能性

5. 元移动块(Meta-Mobile Block)

元移动块(Meta-Mobile Block),通过不同的扩展比率和高效操作符实现模块化设计。这种方法使得模型可以根据需要调整其容量,而无需重新设计整个网络。元移动块的核心理念是通过可插拔的方式,将不同的操作如卷积、自注意力等集成到一个统一的框架中,从而提高模型的效率和灵活性。这允许模型在复杂性和计算效率之间进行更好的权衡,特别适用于那些需要在有限资源下运行的应用

上图展示的是meta mobile block的设计,在这个构件中,conv1被用来

 

 

 【yolov11框架介绍】

2024 年 9 月 30 日,Ultralytics 在其活动 YOLOVision 中正式发布了 YOLOv11。YOLOv11 是 YOLO 的最新版本,由美国和西班牙的 Ultralytics 团队开发。YOLO 是一种用于基于图像的人工智能的计算机模

Ultralytics YOLO11 概述

YOLO11 是Ultralytics YOLO 系列实时物体检测器的最新版本,以尖端的精度、速度和效率重新定义了可能性。基于先前 YOLO 版本的令人印象深刻的进步,YOLO11 在架构和训练方法方面引入了重大改进,使其成为各种计算机视觉任务的多功能选择。

Key Features 主要特点

  • 增强的特征提取:YOLO11采用改进的主干和颈部架构,增强了特征提取能力,以实现更精确的目标检测和复杂任务性能。
  • 针对效率和速度进行优化:YOLO11 引入了精致的架构设计和优化的训练管道,提供更快的处理速度并保持准确性和性能之间的最佳平衡。
  • 使用更少的参数获得更高的精度:随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),同时使用的参数比 YOLOv8m 少 22%,从而在不影响精度的情况下提高计算效率。
  • 跨环境适应性:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台以及支持NVIDIA GPU的系统,确保最大的灵活性。
  • 支持的任务范围广泛:无论是对象检测、实例分割、图像分类、姿态估计还是定向对象检测 (OBB),YOLO11 旨在应对各种计算机视觉挑战。

​​

与之前的版本相比,Ultralytics YOLO11 有哪些关键改进?

Ultralytics YOLO11 与其前身相比引入了多项重大进步。主要改进包括:

  • 增强的特征提取:YOLO11采用改进的主干和颈部架构,增强了特征提取能力,以实现更精确的目标检测。
  • 优化的效率和速度:精细的架构设计和优化的训练管道可提供更快的处理速度,同时保持准确性和性能之间的平衡。
  • 使用更少的参数获得更高的精度:YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),参数比 YOLOv8m 少 22%,从而在不影响精度的情况下提高计算效率。
  • 跨环境适应性:YOLO11可以跨各种环境部署,包括边缘设备、云平台和支持NVIDIA GPU的系统。
  • 支持的任务范围广泛:YOLO11 支持多种计算机视觉任务,例如对象检测、实例分割、图像分类、姿态估计和定向对象检测 (OBB)

【测试环境】

windows10 x64

ultralytics==8.3.0

torch==2.3.1

【改进流程】

1. 新增iEMA.py实现模块(代码太多,核心模块源码请参考改进步骤.docx)然后在同级目录下面创建一个__init___.py文件写代码

from .iEMA import *

2. 文件修改步骤

修改tasks.py文件

创建模型配置文件

yolo11-iEMA.yaml内容如下:

# 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: 2 # 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, 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, iEMA, []] # 17 (P3/8-small)  小目标检测层输出位置增加注意力机制- [-1, 1, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 2, C3k2, [512, False]] # 20 (P4/16-medium)- [-1, 1, iEMA, []] # 21 (P4/16-medium) 中目标检测层输出位置增加注意力机制- [-1, 1, Conv, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2, [1024, True]] # 24 (P5/32-large)- [-1, 1, iEMA, []] # 25 (P5/32-large) 大目标检测层输出位置增加注意力机制# 注意力机制我这里其实是添加了三个但是实际一般生效就只添加一个就可以了,所以大家可以自行注释来尝试, 上面三个仅建议大家保留一个, 但是from位置要对齐.# 具体在那一层用注意力机制可以根据自己的数据集场景进行选择。# 如果你自己配置注意力位置注意from[17, 21, 25]位置要对应上对应的检测层!- [[17, 21, 25], 1, Detect, [nc]] # Detect(P3, P4, P5)
3. 验证集成

使用新建的yaml配置文件启动训练任务:

from ultralytics import YOLOif __name__ == '__main__':model = YOLO('yolo11-iEMA.yaml')  # build from YAML and transfer weights# Train the modelresults = model.train(data='coco128.yaml',epochs=100, imgsz=640, batch=8, device=0, workers=1, save=True,resume=False)

成功集成后,训练日志中将显示iEMA模块的初始化信息,表明已正确加载到模型中。

【训练说明】

第一步:首先安装好yolov11必要模块,可以参考yolov11框架安装流程,然后卸载官方版本pip uninstall ultralytics,最后安装改进的源码pip install .
第二步:将自己数据集按照dataset文件夹摆放,要求文件夹名字都不要改变
第三步:分别打开train.py,coco128.yaml和模型参数yaml文件修改必要的参数,最后执行python train.py即可训练

【提供文件】

├── [官方源码]ultralytics-8.3.0.zip
├── train/
│   ├── coco128.yaml
│   ├── dataset/
│   │   ├── train/
│   │   │   ├── images/
│   │   │   │   ├── firc_pic_1.jpg
│   │   │   │   ├── firc_pic_10.jpg
│   │   │   │   ├── firc_pic_11.jpg
│   │   │   │   ├── firc_pic_12.jpg
│   │   │   │   ├── firc_pic_13.jpg
│   │   │   ├── labels/
│   │   │   │   ├── classes.txt
│   │   │   │   ├── firc_pic_1.txt
│   │   │   │   ├── firc_pic_10.txt
│   │   │   │   ├── firc_pic_11.txt
│   │   │   │   ├── firc_pic_12.txt
│   │   │   │   ├── firc_pic_13.txt
│   │   └── val/
│   │       ├── images/
│   │       │   ├── firc_pic_100.jpg
│   │       │   ├── firc_pic_81.jpg
│   │       │   ├── firc_pic_82.jpg
│   │       │   ├── firc_pic_83.jpg
│   │       │   ├── firc_pic_84.jpg
│   │       ├── labels/
│   │       │   ├── firc_pic_100.txt
│   │       │   ├── firc_pic_81.txt
│   │       │   ├── firc_pic_82.txt
│   │       │   ├── firc_pic_83.txt
│   │       │   ├── firc_pic_84.txt
│   ├── train.py
│   ├── yolo11-iEMA.yaml
│   └── 训练说明.txt
├── [改进源码]ultralytics-8.3.0.zip
├── 改进原理.docx
└── 改进流程.docx

 【常见问题汇总】
问:为什么我训练的模型epoch显示的map都是0或者map精度很低?
回答:由于源码改进过,因此不能直接从官方模型微调,而是从头训练,这样学习特征能力会很弱,需要训练很多epoch才能出现效果。此外由于改进的源码框架并不一定能够保证会超过官方精度,而且也有可能会存在远远不如官方效果,甚至精度会很低。这说明改进的框架并不能取得很好效果。所以说对于框架改进只是提供一种可行方案,至于改进后能不能取得很好map还需要结合实际训练情况确认,当然也不排除数据集存在问题,比如数据集比较单一,样本分布不均衡,泛化场景少,标注框不太贴合标注质量差,检测目标很小等等原因
【重要说明】
我们只提供改进框架一种方案,并不保证能够取得很好训练精度,甚至超过官方模型精度。因为改进框架,实际是一种比较复杂流程,包括框架原理可行性,训练数据集是否合适,训练需要反正验证以及同类框架训练结果参数比较,这个是十分复杂且漫长的过程。


http://www.hkcw.cn/article/mPWuAcXbWP.shtml

相关文章

深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)

大家好,我是微学AI,今天给大家介绍一下深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)。工业系统故障诊断是确保现代工业设备安全稳定运行的关键技术环节。随着工业自动化和智能化水平的不断提高,传统故障诊断方法在应对日益复杂、多变…

Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场

2025年5月29日,苏黎世 - Fluence,企业级去中心化计算平台,荣幸地揭开其2026愿景的面纱,并宣布将于6月1日起启动四大新举措。 Fluence 成功建立、推出并商业化了其去中心化物理基础设施计算网络(DePIN)&…

科学智能赋能空间科学研究(2):AI4S 范式下空间科学实验的核心挑战

中国科学院空间应用工程与技术中心在空间科学实验领域的研究覆盖了多模态空间科学实验数据模式挖掘、领域知识抽取、跨学科知识融合与认知智能等研究内容,有效促进了空间科学实验领域的数据应用生态的体系化建设,相关研究成果已正式发表于权威学术期刊《…

QML 无边框窗口翻转动画

目录 引言核心组件实现无边框翻转窗口(FlipableDemo.qml)登录页面和设置页面(省略)主界面集成(Main.qml) 下载链接 引言 接上篇 QML 滑动与翻转效果(Flickable与Flipable) 。本文通…

若依框架修改模板,添加通过excel导入数据功能

版本:我后端使用的是RuoYi-Vue-fast版本,前端是RuoYi-Vue3 需求: 我需要每个侧边栏功能都需要具有导入excel功能,但是若依只有用户才具备,我需要代码生成的每个功能都拥有导入功能。​ 每次生成一个一个改实在是太麻烦了。索性…

ECS-7000能耗监测系统能耗数据管理机

一、能耗系统介绍 能耗监测系统通过计算机和通讯网络,配电房的现场设备连接为一个有机的整体,实现电网设备运行的远程监控和集中管理。设计中充分体现系统的可用性、先进性、方便性、安全性、可靠性、可扩展性及系统性价比的合理性。 厂家:…

分层模态内相关学习用于无标签三维语义分割

摘要 Recent methods for label-free 3D semantic segmentation aim to assist 3D model training by leveraging the openworld recognition ability of pre-trained vision language models. However, these methods usually suffer from inconsistent and noisy pseudo-lab…

[C++]vc6.0在win10或者win11上下载安装和简单使用教程

VC6.0,即Microsoft Visual C 6.0,是微软公司于1998年推出的一款经典的集成开发环境(IDE),在Windows平台软件开发领域具有重要地位。 它支持C和C语言编程,功能强大且全面。其核心优势在于集成了高效的编译器…

TEC温度控制平台的核心技术解析

TEC-2580-500W-24V TEC温度控制平台是一种基于半导体制冷片(TEC)的高性能温度控制系统,该平台通常由TEC制冷片、温度传感器、控制器、散热系统等部分组成,具有高精度、快速响应、易于集成等优点。具有高精度、高稳定度、长寿命、体…

Spring MVC 框架

目录 1.MVC的定义 2.SpringMVC的实际应用 (1)建立连接 1.RequestMapping注解介绍 2.RequestMapping注解的请求方式 GET请求: POST请求: 指定GET/POST方法类型: (2)请求 传递参数 1.传…

Python+GEE+AI,从基础到实战,全面掌握遥感云大数据分析与可视化!涵盖森林监测、洪涝灾害、干旱评估、植被变化等热点领域的实际应用方案

🔍 遥感技术的飞跃与挑战 随着航空、航天以及近地空间遥感平台的持续发展,遥感技术近年来取得了显著进步。遥感数据的空间分辨率、时间分辨率、光谱分辨率以及数据量都大幅提升,呈现出典型的大数据特征。这为相关研究带来了新的机遇&#xff…

迈迪工具集添加标准件

上次介绍了外购件的选型软件,这次来介绍一下标准件选型工具-迈迪工具集。 机械设计插件-CSDN博客 比如我要给这里的法兰添加螺栓和螺母,就可以打开迈迪工具集,它有丰富的标准件库,挑选自己需要的标准件,然后双击图片&…

零硬件成本玩转嵌入式通信!嵌入式仿真实验教学平台解锁STM8S串口黑科技

一、串口通信的核心原理与教学挑战 异步串行通信(UART)作为嵌入式系统的基础通信协议,其技术内涵远超简单的数据收发。该协议通过精确的时序框架实现设备对话:起始位标志传输开始,8-9位数据位承载信息,停止…

C++ —— B/类与对象(中)

🌈个人主页:慢了半拍 🔥 创作专栏:《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》|《史上最强C讲解》 🏆我的格言:一切只是时间问题。 ​ 目录 一、类的6个默认成员…

2024 CKA模拟系统制作 | Step-By-Step | 17、题目搭建-排查故障节点

目录 免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、考点分析 1. Kubernetes 节点状态诊断 2. 节点故障修复技能 3. 持久化修复方案 4. SSH 特权操作 三、考点详细讲解 1. 节点状态机制详解 2. 常见故障原因深度分析 3. 永久修复技术方案 四、实验环境搭建步骤…

Java EE初阶——网络初识

1. 网络初始 网络互联::将多台计算机连接在⼀起,完成数据共享。 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。 1. 局…

机试 | STL | string | 统计单词数

题目: P1308 [NOIP 2011 普及组] 统计单词数 - 洛谷 输入 输入格式 共 2 行。 第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 第二行的…

nginx源码下载和测试

官网:nginx 源码包: nginx-1.19.3.tar.gz 源码包下载: wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src 进入官网 以1.27.5为例 第一步,创建nginx的文件夹 mkdir /usr/local/nginxcd ~ 第二步创立文件后拖入…

2025南师附中特长生考试 人工智能加试T1

题目描述 在 x □ 1 □ 2 □ 3 □ 4 □ 5 □ 6 □ 7 □ 8 □ 9 x\square1\square2\square3\square4\square5\square6\square7\square8\square9 x□1□2□3□4□5□6□7□8□9 的 □ \square □ 内填入 或 − - −. (1) 求证: 27 27 27 可以被这样表示&…

老旧设备数据采集破局 AI图像解析如何让质检LIMS系统焕发新生

在实验室数字化进程中,大量服役超过 10 年的老旧设备成为数据采集的 “拦路虎”:指针式仪表盘需人工读取、纸质原始记录靠手工录入、非标准接口设备数据无法自动获取…… 某化工实验室因 15 台老旧设备数据采集耗时占比达 40%,检测效率长期滞…