用自己的数据训练yolov11目标检测

文章目录

概要

官网:https://github.com/ultralytics/ultralytics?tab=readme-ov-file
提示:以 停车场空位检测 公开数据集示例,可直接运行本人打包代码: 百度云分享:ultralytics-8.3.2.zip 链接: https://pan.baidu.com/s/18f-9tsgajL46czn5PUcUsA?pwd=hjuk 提取码: hjuk

YOLOv11 是 Ultralytics 团队于 2024 年 9 月 30 日发布的最新目标检测模型,延续了 YOLO 系列实时推理特性,同时通过架构优化与技术创新进一步提升了检测精度、速度和多功能性。以下理论知识部分包括核心特性、改进介绍,操作实操一步步讲怎么训练自己的数据集。

理论知识

整体架构流程

参考于:https://blog.csdn.net/weixin_51832278/article/details/143631804

架构优化

  • C3K2 模块:取代了 YOLOv8 的 C2f 模块,通过分割特征图并应用 3x3 小核卷积优化计算效率,减少了参数量的同时提升了特征表达能力。
  • SPFF 模块:采用多尺度池化策略聚合不同分辨率的信息,显著增强了小目标检测能力,解决了早期版本对小物体敏感度不足的问题。
  • C2PSA 注意力机制:引入跨阶段部分空间注意力模块,通过关注特征图中的关键区域(如小目标或遮挡物体),提升了复杂场景下的检测精度。

多任务支持

  • 目标检测(无后缀):基础检测模型,支持旋转边界框(OBB)。
  • 图像分割(后缀 -seg):结合实例分割与语义分割,提升边缘精度。
  • 姿态估计(后缀 -pose):新增人体关键点检测,支持实时运动分析。
  • 图像分类(后缀 -cls):优化分类头结构,经过训练后能够对图像进行类别分类。
  • 多目标跟踪(集成 BoT-SORT 算法):支持视频流中的跨帧目标追踪。

多参数体量

灵活模型尺寸,提供 Nano(n)、Small(s)、Medium(m)、Large(l)、Extra-Large(x)五种尺寸,满足不同场景需求,以基础目标检测为例,各模型对比如下,x消耗时间是n的8倍。上述云盘代码中pretrain文件夹内已下载5类任务的m和x版。

操作实操

环境配置

在命令行安装requirements.txt即可,最容易出现不匹配的是tensorflow、pytorch、numpy,测试使用的环境如下:

yaml 复制代码
cuda11.3
torch=1.12.0
tensorflow=2.10.0
numpy=1.23.4 
pandas=1.4.3
opencv-python=4.5.5

数据准备

数据标注

见本人另外一篇博客,darklabel数据标注:

https://blog.csdn.net/qq_36112576/article/details/145686376?spm=1001.2014.3001.5502

每张影像对应一张同名txt,txt内格式如下:

python 复制代码
0 0.5623046875 0.5 0.629296875 0.9986111111111111
1 0.515625 0.42569444444444443 0.30234375 0.85

第一列为类别编号label;二列为中心横坐标与图像宽度比值;三列为中心纵坐标与图像高度比值y_center;四列为bbox宽度与图像宽度比值width;五列为bbox高度与图像高度比值height。图框计算公式为:

x_min = (x_center - width / 2) * image_width

y_min = (y_center - height / 2) * image_height

x_max = (x_center + width / 2) * image_width

y_max = (y_center + height / 2) * image_height

数据放置路径

我们创建一个统一的data文件夹来放置各类数据,注意images和labels文件名字需一一对应。

python 复制代码
data/
├── 数据集1(pklot) /
│   ├── train/
│   │        ├── images/
│   │        └── labels/
│   └── valid/
│            ├── images/
│            └── labels/
└── 数据集2 /
│   ├── train/
│   │        ├── images/
│   │        └── labels/
│   └── valid/
│            ├── images/
│            └── labels/
└── 数据集3 / ........

根目录创建一个 datapklot.yaml 文件(与data文件夹同级),内容如下:
提示:yaml格式文件用于定义数据集的配置,包括数据路径、种类数量、类别名字等信息

python 复制代码
train: data/pklot/train/images
val: data/pklot/valid/images

nc: 2
names: ['space-empty', 'space-occupied']

训练

在pycharm中运行train.py,内容如下
提示:D:\\code\\yolov11\\ultralytics-8.3.2\\datapklot.yaml需要绝对路径

python 复制代码
# -*- coding: utf-8 -*-

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':

    model = YOLO(model=r'ultralytics/cfg/models/11/yolo11.yaml')
    model.load('pretrain/yolo11m.pt')  # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升
    model.train(data=r'D:\\code\\yolov11\\ultralytics-8.3.2\\datapklot.yaml',
                imgsz=640,
                epochs=50,
                batch=4,
                workers=0,
                device='',
                optimizer='SGD',
                close_mosaic=10,
                resume=False,
                project='runs/train',
                name='exp',
                single_cls=False,
                cache=False,
                )
    # Evaluate model performance on the validation set
    metrics = model.val()

数据正常加载:

训练正常进行:

模型保存在文件夹runs/train/exp次数/weights 中

预测

在pycharm中运行detect.py,内容如下,以下model为实例分割,可替换为训练模型或上述提到的其他任务模型,检测结果同样保存在runs/中。

python 复制代码
# -*- coding: utf-8 -*-

from ultralytics import YOLO

if __name__ == '__main__':

    # Load a model
    model = YOLO(model=r'pretrain/yolo11n-seg.pt')
    model.predict(source=r'123.mp4',
                  save=True,
                  show=True,
                  )


相关推荐
North_D9 小时前
ML.NET库学习008:使用ML.NET进行心脏疾病预测模型开发
人工智能·深度学习·神经网络·目标检测·机器学习·自然语言处理·数据挖掘
阿_旭9 小时前
如何在C++中使用YOLO模型进行目标检测
人工智能·yolo·目标检测
量子-Alex14 小时前
【目标检测】【YOLOv12】YOLOv12:Attention-Centric Real-Time Object Detectors
人工智能·目标检测·计算机视觉
向哆哆14 小时前
动态蛇形卷积在YOLOv8中的探索与实践:提高目标识别与定位精度
深度学习·yolo·目标跟踪·yolov8
Black_Rock_br15 小时前
仿 Sora 之形,借物理模拟之技绘视频之彩
人工智能·目标检测·计算机视觉
itom190015 小时前
Luckfox Pico Max运行RKNN-Toolkit2中的Yolov5 adb USB仿真
人工智能·yolo
红色的山茶花18 小时前
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-augment.py
笔记·深度学习·yolo
North_D18 小时前
ML.NET库学习011:基于YOLO目标检测算法的图像处理系统
人工智能·深度学习·神经网络·目标检测·机器学习·自然语言处理·数据挖掘
go546315846518 小时前
python实现将RGB相机与事件相机的照片信息进行融合以进行目标检测
python·数码相机·目标检测
我是一个对称矩阵1 天前
YOLOv5-Seg 深度解析:与 YOLOv5 检测模型的区别
人工智能·yolo·目标跟踪