YOLO — YOLO11模型以及项目详解


文章目录

  • YOLO --- YOLO11模型以及项目详解
  • 一,开源地址
  • 二,重要模块
    • 2.1 C3K2
    • 2.2 C2PSA
    • 2.3 检测头
  • 三,网络结构
    • 3.1 整体结构划分
    • 3.2 Backbone 结构分析(从下往上看)
    • 3.3 结构分析(特征融合)
    • 3.4 Head 检测头
    • 3.5 关键模块说明
    • 3.7 模型主要特点
    • 3.8 模型对比
  • 四,开源项目
    • 4.1 下载源码
    • 4.2 新建环境
    • 4.3 安装包
    • 4.4 下载推理文件
    • 4.5 数据集
    • 4.6 检测文件
    • 4.7 模型训练
  • 五,优缺点


一,开源地址

  • 官方文档:https://github.com/ultralytics/ultralytics

  • 开发文档:https://docs.ultralytics.com/

二,重要模块

2.1 C3K2

  • C3K2 模块 是基于 C2F 模块 的一种变体,它代码中有一个设置

    • C3K2 参数为 False 时,模块内部使用普通 Bottleneck
    • C3K2 参数为 True 时,模块内部使用 C3k 结构
  • 代码中的 C3K2 的使用:[-1, 2, C3k2, [256, False, 0.25]]

    • -1:该模块的输入来自哪一个模块的输出。-1 表示当前 C3k2 模块的输入 来自上一个模块的输出
    • 2:表示模块内包含 2 个 C3k 或 Bottleneck 模块(具体数量需要根据网络版本的深度系数进行调整)
    • C3K2:模块名称,等于搭建该模块的类的名称,用于找到该类去搭建模块
    • 256:输出通道数(实际输出通道数需要乘以宽度系数 width
    • False:True 表示内部使用 C3k 模块;False 表示内部使用 Bottleneck
    • 0.25:用于控制 C3K2 模块中的通道数
      请添加图片描述

2.2 C2PSA

  • C2PSA 是对 C2f 模块的扩展,它结合了 PSA(Pointwise Spatial Attention)块,用于增强特征提取与和注意力机制,C2PSA 实现了加入 PSA 块,实现了更强大的注意力机制,从而提高了模型对重要特征的捕捉能力
  • C2PSA 模块由两部分构成:C2f 分支结构PSA(Pointwise Spatial Attention)块
  • 代码中 C2PSA 的使用:[-1, 2, C2PSA, [1024]]
    • -1:该模块的输入来自哪一个模块的输出。-1表示 当前 C3k2 模块的输入 来自上一个模块的输出
    • 2:模块内需要使用几个 PSA 模块(具体数量需要根据网络版本的深度系数进行调整)
    • C2PSA:模块名称
    • 1024:输出通道数(实际输出通道数需要乘以宽度系数 width
      请添加图片描述

2.3 检测头

  • YOLO11 在原先的 2 个解耦分类检测头中,进一步增加了两个深度可分离卷积(DWConv),提高了模型的特征提取能力
  • 代码中 C2PSA 的使用:[[16, 19, 22], 1, Detect, [nc]]
    • [16, 19, 22]:第16、19、22 模块的的输出,作为 Detect 检测头的输入
    • 1:模块重复次数,检测头的重复次数一般都为 1,检测头通常不重复
    • Detect:模块名称,等于搭建该模块的类的名称,用于找到该类去搭建模块
    • nc:类别数
      请添加图片描述

三,网络结构

请添加图片描述

3.1 整体结构划分

模块名称作用备注
Backbone特征提取从输入图像中提取多尺度特征
Neck特征融合使用 FPN + PAN 结构进行多尺度特征融合
Head检测头输出分类、框回归、置信度等信息

3.2 Backbone 结构分析(从下往上看)

模块输出尺寸说明
输入Input3×640×640输入图像
1CBS16×320×320初始卷积,通道从 3 → 16
2C3K232×160×160轻量级残差模块,通道翻倍,宽高减半
3CBS64×80×80继续下采样
4C3K264×80×80保持尺寸,增强特征
5CBS128×40×40下采样
6C3K2128×40×40特征提取
7CBS256×20×20下采样
8C3K2256×20×20特征提取
9SPPF256×20×20空间金字塔池化,增强感受野

3.3 结构分析(特征融合)

模块输出尺寸说明
10C2PSA256×20×20引入注意力机制(PSA)
11Upsample256×40×40上采样
12Contact384×40×40与 Backbone 中同尺寸特征拼接
13C3K2256×40×40融合特征
14Upsample128×80×80继续上采样
15Contact192×80×80与更浅层特征拼接
16C3K2128×80×80输出 P3 层(小目标)
17CBS128×40×40下采样
18Contact384×40×40与中层特征拼接
19C3K2256×40×40输出 P4 层(中目标)
20CBS256×20×20下采样
21Contact512×20×20与深层特征拼接
22C3K2256×20×20输出 P5 层(大目标)

3.4 Head 检测头

模块输出尺寸说明
P3/P4/P5Conv2d每个尺度输出:类别数 + 4(框) + 1(置信度)对应小/中/大目标检测头

3.5 关键模块说明

模块名作用
CBSConv + BN + SiLU,标准卷积块
C3K2类似 C3,但使用更轻量的 bottleneck(K=2)
C2PSA引入 PSA(Pyramid Squeeze Attention)注意力机制
SPPF快速空间金字塔池化,提升感受野
Contact特征拼接(concatenate)操作
Upsample上采样,用于特征融合

3.7 模型主要特点

  • YOLO11采用改进的骨干和颈部架构,增强了特征提取能力,提高了物体检测的精确度

  • 针对效率和速度优化:精细的架构设计和优化的训练流程在保持准确性和性能之间最佳平衡的同时,提供更快的处理速度

  • 更少的参数,更高的准确度:YOLO11m 在 COCO 数据集上实现了比 YOLOv8m 更高的 mAP,参数减少了 22%,提高了计算效率,同时不牺牲准确度

  • 跨环境的适应性:YOLO11 可以无缝部署在边缘设备、云平台和配备 NVIDIA GPU的系统上,确保最大的灵活性

  • 支持广泛的任务范围:图像分类、目标检测、实例分割、姿态估计、定向对象检测 (OBB)、多目标跟踪等

请添加图片描述

3.8 模型对比

下图是 YOLOV11 各个模型在 COCO 数据集上的表现:

  • mAP50:IOU 阈值为 0.50 时的平均精度,评估较为宽松,主要反映模型的粗略检测能力
  • mAP50-95:在不同 IOU 阈值下(从 0.50 到 0.95,步长 0.05,共 10 个值)计算 AP 的均值,是更为严谨和全面的性能指标,在报告模型性能时,mAP50-95 能值够更好地衡量模型的总体表现,更具参考价值请添加图片描述
    和其他 YOLO 版本性能对比图请添加图片描述

四,开源项目

4.1 下载源码

第一步:下载 yolo11 源码,前面的步骤已经完成

4.2 新建环境

第二步:新建环境,见
https://blog.csdn.net/m0_73338216/article/details/146123256

4.3 安装包

  • 在 yolov11_env 虚拟环境中安装库:

    • 在 Python≥3.8 的环境中先根据计算机是否支持 GPU 安装 Pytorch>=1.8,如果没有 GPU 可以不执行这一步【这个下载命令有的有问题,尽量选择 pip 命令下载,如果 cuda 版本太低,先去更新驱动】
    # CUDA 12.1
    pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu121
    
    • 安装 ultralytics 包及其所有需求
    pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
    

4.4 下载推理文件

先下载 yolov11 的权重文件,选择下载一个即可,然后放入项目文件夹中请添加图片描述
执行检测命令:可以选择命令方式,也可以选择代码方式,可以参考网站https://docs.ultralytics.com/zh/modes/predict/#key-features-of-predict-mode

4.5 数据集

第六步:数据集标注

  • 模型训练的数据、验证的数据都是由专门的人标注制作的,常用的标注工具labelImg、labelme。 这里介绍 labelImg 的使用
    - 新建虚拟环境,略

  • 激活环境,输入命令pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple安装 labelimg 库
    在激活环境下,执行命令labelimg打开 labelimg请添加图片描述
    标注完成后的数据集,图示:

  • images:存放需要被标注的图片信息

  • labels:存放标注的图片的位置、类型信息
    在这里插入图片描述

4.6 检测文件

from ultralytics import YOLO
# 加载训练好的模型,改为自己的路径
model = YOLO('yolo11s.pt')
# 修改为自己的图片路径及文件名
source = 0
# 运行推理,并附加参数
model.predict(source, show=True, save=True)
# model.predict(source,  # 图片或视频的源目录
#               conf=0.5,  # 用于检测的 对象置信阈值,只有置信度高于此阈值的对象才会被检测出来
#               iou=0.7,  # 非极大值抑制(NMS)的交并比(loU)值
#               imgsz=160,  # 输入图像尺寸
#               half=False,  # 使用半精度(FP16)
#               device=0,  # 运行设备,如device=0或device = cpu
#               max_det=300,  # 每个图像的最大检测数
#               # vid_srtide=False,# 视频帧率步长,预测试图片需要注释
#               stream_buffer=False,  # 缓冲所有流帧( True )或 返回最近的帧( Fa1se )
#               visualize=False,  # 是否可视化模型特征
#               augment=False,  # 是否对预测源应用图像增强
#               agnostic_nms=False,  # 是否使用类别不可知(无关)的非极大值抑制(NMS)
#               classes=None,  # 按类别筛选结果,即classes=0或classes=[0,2,3]
#               retina_masks=False,  # 是否使用高分辨率的分割掩膜
#               embed=None,  # 返回给定层的特征向量/嵌入
#               show=False,  # 如果环境允许,是否显示预测的图像和视频
#               save=True,  # 是否保存预测的图像和视频
#               save_frames=False,  # 是否保存预测的单个视频帧
#               save_txt=False,  # 是否将结果保存为 .txt 文件
#               save_conf=False,  # 是否将检测结果与置信度分数一起保存
#               save_crop=False,  # 是否保存裁剪的图像与结果
#               show_labels=False,  # 是否显示预测标签
#               show_conf=False,  # 是否显示预测置信度
#               show_boxes=False,  # 是否显示预测边界框
#               line_width=None,  # 边界框的线宽(如果为 None ,则缩放为图像大小)
#               ))

4.7 模型训练

from ultralytics import YOLO
"""参数	    默认值	                说明model	None	                用于训练的模型文件的路径data	None	                数据集配置文件的路径(例如 coco8.yaml)epochs	100	                    训练历元总数batch	16	                    批量大小,可调整为整数或自动模式imgsz	640	                    用于训练的目标图像大小device	None	                用于训练的计算设备,如 cpu, 0, 0,1或 mpssave	True	                可保存训练检查点和最终模型权重project None                    保存训练结果的项目目录名称
"""
if __name__ == "__main__":# 加载模型结构和配置文件model = YOLO("yolo11s.pt")# 开始训练results = model.train(data="ultralytics/cfg/datasets/animal.yaml",epochs=25,batch=8,imgsz=640,device='0',project='runs',)

五,优缺点

维度优点缺点
检测精度• 在 COCO 上 mAP 比 YOLOv8 高 1-2 pp(小目标提升更明显)
• 引入 C2PSA(Pyramid Squeeze Attention),增强遮挡、小目标检测
• 对极端长宽比、旋转密集目标仍有漏检
• 极低分辨率输入时精度下降明显
推理速度• 仍保持单阶段架构,速度>300 FPS(YOLO11-n,T4 GPU)
• 支持 TensorRT / OpenVINO 高效部署
• 注意力模块带来 5-10 % 额外延迟
• 参数量略大于同规模 YOLOv8,边缘端需量化
模型大小• 提供 n/s/m/l/x 五级权重,可按需选择
• 引入 C3K2 轻量瓶颈,参数量控制良好
• 最小模型仍比 YOLOv8-nano 大 0.4 M 参数量
训练友好度• 沿用 YOLOv8 训练框架,超参少、易复现
• 支持自动锚框、断点续训、混合精度
• 官方仅放出新版代码,向下兼容脚本需手动调整
• anchor-free 对小目标收敛速度稍慢
部署生态• 官方导出 ONNX、Engine、RKNN、CoreML 一键完成
• 支持 NCNN / MNN 移动端量化部署
• 新版算子(C2PSA)在部分旧版推理框架上需自定义实现
代码/社区• Ultralytics 维护,文档完善,社区活跃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93934.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93934.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93934.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Debezium监听MySQL binlog并实现有状态重启

Debezium实现MySQL数据监听了解Debezium​ 本期主要内容实现步骤1. 新建Maven工程2.导入依赖3.核心代码编写4.offset的存储5.OffsetBackingStore实现jdbc模式6.运行结果总结了解Debezium 官网:https://debezium.io/ Debezium是一组分布式服务,用于捕获数…

InfluxDB 存储优化:TSM 文件管理与空间回收(一)

一、InfluxDB 与 TSM 文件初相识**在数字化时代,数据量呈爆发式增长,尤其是时间序列数据,如服务器监控指标、传感器读数、金融交易记录等,它们都带有时间戳,记录着事物随时间的变化。InfluxDB 作为一款高性能的开源时序…

macos使用FFmpeg与SDL解码并播放H.265视频

效果: 安装依赖: brew install ffmpeg brew install sdl2 brew install x265 确认x265已启用 查看x265版本 工程CMakeLists.txt

C#开源库ACadSharp读取dwg图元的示例

文章目录介绍数据示例读取图元属性介绍 开源库ACadSharp的地址:https://github.com/DomCR/ACadSharp 可以在NuGet中搜索到该库并安装。 数据示例 数据是一个绘制了以下简单图元的dwg数据: 读取图元属性 创建了.net6控制台项目,通过NuG…

【UniApp打包鸿蒙APP全流程】如何配置并添加UniApp API所需的鸿蒙系统权限

一、前言:为什么选择 UniApp 打包鸿蒙应用? 随着鸿蒙生态的快速发展,越来越多开发者希望将现有跨平台项目快速接入鸿蒙系统。而 UniApp 作为国内领先的跨平台开发框架,凭借其“一次开发,多端发布”的特性,…

STM32-FreeRTOS快速入门指南(下)

第十一章 FreeRTOS事件标志组 1. 事件标志组简介 事件标志组与信号量一样属于任务间同步的机制,但是信号量一般用于任务间的单事件同步,对于任务间的多事件同步,仅使用信号量就显得力不从心了。 FreeRTOS 提供的事件标志组可以很好的处理多事…

KTH7812磁编码器芯片完全支持ABZ和UVW输出模式

KTH7812磁编码器芯片完全支持ABZ和UVW输出模式,具体功能细节如下:🔧 1. ABZ输出特性 分辨率可编程:支持 4~4096步/圈(对应1~1024个脉冲周期/圈),用户可通过配置寄存器自定义分辨率。 输出频率…

Android为ijkplayer设置音频发音类型usage

官方文档 多区音频路由 | Android Open Source Projecthttps://source.android.google.cn/docs/automotive/audio/audio-multizone-routing?hlzh-cn 背景 车机系统开发多分区(zone)功能,可以实现同一个app通过设置,在不同分…

C++ 循环:从入门到精通的深度解析

《C++ 循环:从入门到精通的深度解析》 目录 循环的本质与编程价值 三大基础循环结构详解 循环控制语句:break与continue的魔法 嵌套循环:构建复杂逻辑的基石 现代C++循环特性(C++11+) 循环性能优化与常见陷阱 实战案例:算法与工程中的循环应用 面试题深度解析与编程技巧…

| `cat /etc/os-release` | 发行版详细信息(如 Ubuntu、CentOS) |

在 Linux 或类 Unix 系统中,最简洁的命令查看操作系统类型是: uname -s✅ 输出示例: LinuxDarwin(macOS)FreeBSD 等🔍 说明: uname:显示系统信息-s:仅显示操作系统内核名…

Maya 3D建模:点、线、面、创建多边面

目录 一 点、线、面 二 创建多边面 一 点、线、面 鼠标放在模型上 按住鼠标右键:就可以选择点 线 面 shift 加选点线面 ctrl 减选点线面 顶点面:是一个检查模式,观察有无错误 选择面,单击一个面,按住shift键 同时…

CXR-LT 2024:一场关于基于胸部X线的长尾、多标签和零样本疾病分类的MICCAI挑战赛|文献速递-深度学习人工智能医疗图像

Title题目CXR-LT 2024: A MICCAI challenge on long-tailed, multi-label, and zero-shotdisease classification from chest X-rayCXR-LT 2024:一场关于基于胸部X线的长尾、多标签和零样本疾病分类的MICCAI挑战赛01文献速递介绍CXR-LT系列是一项由社区推动的计划&a…

拆解本地组策略编辑器 (gpedit.msc) 的界面和功能

我们来详细拆解本地组策略编辑器 (gpedit.msc) 的界面和功能。打开后,你会看到一个标准的微软管理控制台 (MMC) 窗口,主要分为三个部分。 这是一个典型的本地组策略编辑器界面,我们将其分为三个主要部分进行讲解: +-----------------------------------------------+----…

[NCTF2019]True XML cookbook

TRY 尝试XML外部实体注入 <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE user[<!ENTITY flag SYSTEM "file://./doLogin.php"> ]> <user><username> &flag; </username><password>1</pa…

嵌入式硬件篇---模块使用

在电子开发、自动化控制等领域&#xff0c;“模块” 是实现特定功能的标准化组件&#xff08;可以理解为 “功能积木”&#xff09;。不同模块分工明确&#xff0c;比如有的负责感知环境&#xff08;传感器&#xff09;&#xff0c;有的负责通信&#xff08;蓝牙 / WiFi&#x…

密码管理中Null 密码

Null 密码定义&#xff1a;Null 密码是指允许用户或系统账户使用空密码&#xff08;即不输入任何字符&#xff09;进行登录或身份验证的配置。危害&#xff1a;完全绕过身份验证&#xff1a;这是最严重的危害。攻击者无需破解或窃取任何密码&#xff0c;只需输入用户名并留空密…

git新建项目如何推送到远程仓库

​ git新建项目如何推送到远程仓库 一、远程代码库操作(gitee为例) 1. 建新仓库 2. 找到地址:这里可以看到用户名等其他信息 3. 记住地址url(https) 二、本地操作 1. 安装git 2. 创建项目 3. 在当前项目下打开git bash 4. 添加远程仓库 5. 检查远程仓库地址 6. 检查当前状…

代码管理平台Gitlab如何通过 ZeroNews 实现远程访问?

Gitlab介绍1.1 GitLabGitLab 是一个基于 Web 的开源代码托管平台&#xff0c;集代码托管、项目管理、持续集成与持续部署等功能于一身。它采用 Git 作为版本控制系统&#xff0c;界面友好、功能丰富。相较于市场上的 Gitee 和 GitHub&#xff0c;GitLab 有以下优势&#xff1a;…

基于STM32F103C8T6控制A4988模块驱动2相4线步进电机

文章目录一、A4988模块简介二、A4988引脚说明三、A4988的Vref电压调节四、STM32F103C8T6控制A4988驱动2相4线步进电机准备工作引脚接线代码示例效果展示五、A4988电机驱动板常见问题一、A4988模块简介 A4988 是一款功能齐全的微步进电机驱动器&#xff0c;内置转换器&#xff0…

基于单片机智能晾衣架/智能窗户/智能窗帘设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 智能晾衣架系统基于单片机设计&#xff0c;融合传感器技术与物联网功能&#xff0c;实现衣物的自…