用自己的数据训练yolov11目标检测
- 创业
- 2025-09-04 05:39:02

文章目录 概要理论知识整体架构流程架构优化多任务支持多参数体量 操作实操环境配置数据准备数据标注数据放置路径 训练预测 概要
官网: github /ultralytics/ultralytics?tab=readme-ov-file 提示:以 停车场空位检测 公开数据集示例,可直接运行本人打包代码: 百度云分享:ultralytics-8.3.2.zip 链接: pan.baidu /s/18f-9tsgajL46czn5PUcUsA?pwd=hjuk 提取码: hjuk
YOLOv11 是 Ultralytics 团队于 2024 年 9 月 30 日发布的最新目标检测模型,延续了 YOLO 系列实时推理特性,同时通过架构优化与技术创新进一步提升了检测精度、速度和多功能性。以下理论知识部分包括核心特性、改进介绍,操作实操一步步讲怎么训练自己的数据集。
理论知识 整体架构流程参考于: 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,测试使用的环境如下:
cuda11.3 torch=1.12.0 tensorflow=2.10.0 numpy=1.23.4 pandas=1.4.3 opencv-python=4.5.5 数据准备 数据标注见本人另外一篇博客,darklabel数据标注: blog.csdn.net/qq_36112576/article/details/145686376?spm=1001.2014.3001.5502 每张影像对应一张同名txt,txt内格式如下:
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文件名字需一一对应。
data/ ├── 数据集1(pklot) / │ ├── train/ │ │ ├── images/ │ │ └── labels/ │ └── valid/ │ ├── images/ │ └── labels/ └── 数据集2 / │ ├── train/ │ │ ├── images/ │ │ └── labels/ │ └── valid/ │ ├── images/ │ └── labels/ └── 数据集3 / ........根目录创建一个 datapklot.yaml 文件(与data文件夹同级),内容如下: 提示:yaml格式文件用于定义数据集的配置,包括数据路径、种类数量、类别名字等信息
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需要绝对路径
# -*- 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/中。
# -*- 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, )
用自己的数据训练yolov11目标检测由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“用自己的数据训练yolov11目标检测”