YOLO11+自定义数据集:打造专属检测模型

YOLO11+自定义数据集:打造专属检测模型

在计算机视觉领域,目标检测是核心任务之一。随着YOLO系列算法的持续演进,YOLO11作为最新一代版本,在精度、速度和灵活性方面实现了显著提升。本文将围绕如何使用YOLO11结合自定义数据集训练专属目标检测模型展开,涵盖从数据标注、格式转换、环境配置到模型训练与推理的完整流程。

通过本教程,你将掌握构建一个高精度定制化检测系统的全流程方法,并可将其应用于工业质检、智能监控、自动驾驶等实际场景。


1. 数据准备与标注

1.1 使用Labelme进行图像标注

高质量的数据是模型性能的基础。我们推荐使用开源工具Labelme进行手动标注。

操作步骤如下:

  1. 安装Labelme:
    pip install labelme
  2. 启动工具并加载图像目录。
  3. 选择“创建矩形”模式,框选目标物体。
  4. 每个标注需指定类别名称(如carbus)。
  5. 保存后生成与图片同名的JSON文件。

提示:确保所有图像尺寸一致或相近,避免极端缩放影响模型学习效果。

1.2 标注结果示例

Labelme生成的JSON文件包含图像元信息和多边形/矩形坐标。例如:

{ "imageWidth": 640, "imageHeight": 480, "shapes": [ { "label": "car", "points": [[100, 150], [300, 350]], "shape_type": "rectangle" } ] }

该结构记录了每个对象的位置和类别,但YOLO11需要特定格式的文本标签。


2. Labelme JSON转YOLO TXT格式

2.1 YOLO11标签格式规范

YOLO系列统一采用归一化的边界框表示法。每张图对应一个.txt标签文件,内容格式为:

<class_id> <x_center> <y_center> <width> <height>

其中:

  • class_id:类别索引(从0开始)
  • 坐标与尺寸均相对于图像宽高的比例值(0~1)

例如:

0 0.5192 0.4512 0.3985 0.7572 3 0.5061 0.5921 0.2631 0.4561

2.2 转换脚本实现

以下Python代码可批量将Labelme的JSON标注转换为YOLO兼容格式:

import json import os # 类别映射表(根据实际项目修改) label_map = { "car": 0, "bus": 1, "person": 2 } def convert_labelme_to_yolo(json_path, output_dir): with open(json_path, 'r') as f: data = json.load(f) img_w = data['imageWidth'] img_h = data['imageHeight'] annotations = [] for shape in data['shapes']: label_name = shape['label'] if label_name not in label_map: continue class_id = label_map[label_name] points = shape['points'] if shape['shape_type'] == 'rectangle': (x1, y1), (x2, y2) = points elif shape['shape_type'] == 'polygon': x1 = min(p[0] for p in points) y1 = min(p[1] for p in points) x2 = max(p[0] for p in points) y2 = max(p[1] for p in points) else: continue # 归一化计算 xc = ((x1 + x2) / 2) / img_w yc = ((y1 + y2) / 2) / img_h w = (x2 - x1) / img_w h = (y2 - y1) / img_h annotations.append(f"{class_id} {xc:.6f} {yc:.6f} {w:.6f} {h:.6f}") # 写入输出文件 base_name = os.path.splitext(os.path.basename(json_path))[0] output_file = os.path.join(output_dir, base_name + '.txt') os.makedirs(output_dir, exist_ok=True) with open(output_file, 'w') as f: f.write('\n'.join(annotations)) def process_folder(input_folder, output_folder): for file_name in os.listdir(input_folder): if file_name.endswith('.json'): json_path = os.path.join(input_folder, file_name) convert_labelme_to_yolo(json_path, output_folder) # 执行转换 input_folder = "/mnt/data/json_labels" output_folder = "/mnt/data/yolo11_txt_labels" process_folder(input_folder, output_folder)

运行后将在指定路径下生成对应的.txt标签文件,供后续训练使用。


3. 配置YOLO11工程环境

3.1 获取YOLO11源码

YOLO11由Ultralytics团队维护,可通过GitHub获取最新代码:

git clone https://github.com/ultralytics/ultralytics.git cd ultralytics pip install -e .

或者直接下载ZIP包解压使用。

3.2 项目目录结构规划

建议组织如下目录结构以保持清晰:

ultralytics-8.3.9/ ├── datasets/ │ ├── train/images/ │ ├── train/labels/ │ ├── val/images/ │ └── val/labels/ ├── weights/ # 存放预训练权重 ├── runs/ # 训练输出目录 ├── ultralytics/ # 核心库 ├── train.py # 自定义训练脚本 └── infer.py # 推理脚本

将转换后的图像和标签分别放入datasets/traindatasets/val中。


4. 数据集配置文件(YAML)

ultralytics/cfg/datasets/目录下新建自定义数据集配置文件,如auto-parts-det.yaml

# 数据集根路径 path: ./datasets/det_auto_parts_20241020 # 训练集与验证集路径(相对于path) train: train/images val: val/images # 类别名称列表 names: 0: car 1: bus 2: person

⚠️ 注意:path应指向包含trainval子目录的根目录,路径支持相对或绝对形式。

此文件将在训练时被模型加载器读取,用于定位数据和解析类别。


5. YOLO11模型结构配置

5.1 模型配置文件位置

YOLO11的网络架构定义位于:

ultralytics/cfg/models/11/yolo11.yaml

该文件描述了Backbone、Neck和Head的完整结构,包括卷积层、CSP模块、上采样与拼接操作等。

5.2 关键参数说明

参数含义
nc类别数量(需根据数据集调整)
scales不同规模模型(n/s/m/l/x)的深度与宽度系数
backbone主干网络结构
head检测头结构,含FPN/PAN结构

若新增类别,务必更新nc字段。例如三分类任务应设为:

nc: 3

也可基于此文件创建自定义变体,如yolo11-custom.yaml


6. 编写训练脚本

6.1 加载模型与预训练权重

使用YOLO类初始化模型,并加载官方提供的预训练权重以加速收敛:

from ultralytics import YOLO # 加载模型配置并注入预训练权重 model = YOLO("yolo11m.yaml").load("weights/yolo11m.pt")

✅ 推荐使用中等规模模型(如yolo11m),兼顾性能与效率。

6.2 设置训练参数

通过字典方式传入训练超参数,便于管理和复现:

train_params = { 'data': 'auto-parts-det.yaml', # 数据集配置 'epochs': 100, # 总训练轮数 'imgsz': 640, # 输入图像大小 'batch': 8, # 批次大小 'device': 0, # GPU设备ID(None自动选择) 'workers': 8, # 数据加载线程数 'optimizer': 'AdamW', # 优化器类型 'lr0': 0.001, # 初始学习率 'weight_decay': 0.0005, 'warmup_epochs': 3.0, 'box': 7.5, 'cls': 0.5, 'dfl': 1.5, 'save': True, 'save_period': -1, 'project': 'runs/train', 'name': 'exp_auto_parts', 'exist_ok': False, 'resume': False, 'amp': True, # 启用混合精度 'verbose': True, 'seed': 42, 'plots': True, # 数据增强 'hsv_h': 0.015, 'hsv_s': 0.7, 'hsv_v': 0.4, 'degrees': 10.0, 'translate': 0.1, 'scale': 0.5, 'flipud': 0.0, 'fliplr': 0.5, 'mosaic': 1.0, 'mixup': 0.1, 'copy_paste': 0.0, }

6.3 开始训练

调用train()方法启动训练过程:

results = model.train(**train_params)

训练日志将实时显示损失、mAP等指标,最佳模型自动保存至runs/train/exp_auto_parts/weights/best.pt


7. 模型训练执行与监控

7.1 启动训练命令

进入项目根目录后运行:

cd ultralytics-8.3.9/ python train.py

7.2 训练输出示例

Ultralytics 8.3.7 🚀 Python-3.9.16 torch-1.13.1 CUDA:0 (NVIDIA A30, 24062MiB) Starting training for 100 epochs... Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/100 4.68G 2.238 1.691 2.426 80 640: 100%|███████| 16/16 [00:02<00:00, 5.91it/s] Class Images Instances Box(P R mAP50 mAP50-95): 100%|███████| 8/8 [00:00<00:00, 12.18it/s] all 128 929 0.77 0.728 0.798 0.615 ... 100/100 4.49G 1.171 0.7135 1.319 41 640: 100%|███████| 16/16 [00:01<00:00, 8.80it/s] Class Images Instances Box(P R mAP50 mAP50-95): 100%|███████| 8/8 [00:00<00:00, 13.42it/s] all 128 929 0.847 0.845 0.891 0.577

最终模型在验证集上达到较高mAP50值,表明具备良好检测能力。


8. 模型推理与结果可视化

8.1 加载训练好的模型

使用保存的最佳权重进行推理:

from ultralytics import YOLO model = YOLO("runs/detect/train5/weights/best.pt")

8.2 执行预测

支持图像、视频、摄像头等多种输入源:

results = model.predict( source="datasets/test_images/", conf=0.45, iou=0.6, imgsz=640, device=0, save=True, save_txt=True, show_labels=True, show_conf=True )

8.3 输出内容

  • 检测框图像(带标签与置信度)
  • 文本格式的检测结果(.txt
  • 可视化分析图表(PR曲线、混淆矩阵等)

可在runs/detect/predict/目录查看输出结果。


9. 总结

本文系统介绍了基于YOLO11构建自定义目标检测模型的全流程:

  1. 数据标注:使用Labelme完成高质量人工标注;
  2. 格式转换:编写脚本将JSON转为YOLO标准TXT格式;
  3. 环境搭建:配置Ultralytics开发环境及项目结构;
  4. 数据集定义:编写YAML配置文件明确路径与类别;
  5. 模型配置:选用合适规模的YOLO11架构;
  6. 训练脚本:设置合理超参数并启动训练;
  7. 模型评估:观察训练日志与验证指标;
  8. 推理应用:部署模型于新数据进行检测。

通过这一完整流程,你可以快速构建适用于特定场景的高性能检测系统。YOLO11凭借其简洁API和强大性能,极大降低了深度学习落地门槛。

未来可进一步探索自动标注、增量学习、ONNX导出与边缘部署等进阶方向,持续优化模型实用性。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

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

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

相关文章

Hunyuan MT1.5-1.8B开源亮点解析:在线策略蒸馏技术揭秘

Hunyuan MT1.5-1.8B开源亮点解析&#xff1a;在线策略蒸馏技术揭秘 1. 背景与核心价值 随着多语言交流需求的快速增长&#xff0c;轻量级、高效率的神经机器翻译&#xff08;NMT&#xff09;模型成为边缘设备和移动端应用的关键基础设施。传统大模型虽具备强大翻译能力&#…

Qwen2.5-7B-Instruct科研论文:文献综述自动生成

Qwen2.5-7B-Instruct科研论文&#xff1a;文献综述自动生成 1. 技术背景与应用场景 随着人工智能在自然语言处理领域的持续突破&#xff0c;大型语言模型&#xff08;LLM&#xff09;正逐步成为科研辅助工具的核心组件。尤其在学术写作中&#xff0c;文献综述的撰写是一项耗时…

NotaGen vs 人类作曲家对比实测:云端GPU 3小时省万元

NotaGen vs 人类作曲家对比实测&#xff1a;云端GPU 3小时省万元 你是不是也遇到过这样的困境&#xff1f;作为独立游戏开发者&#xff0c;项目进度卡在背景音乐上——请专业作曲家报价动辄上万&#xff0c;自己又不懂编曲&#xff1b;用现成的免版税音乐吧&#xff0c;又怕风…

DeepSeek-OCR实战:10分钟搭建文档识别系统,成本不到3块钱

DeepSeek-OCR实战&#xff1a;10分钟搭建文档识别系统&#xff0c;成本不到3块钱 你是不是也遇到过这样的情况&#xff1f;公司每天收到几十份合同扫描件&#xff0c;手动录入信息又慢又容易出错。你想用AI来自动识别这些文档内容&#xff0c;结果在本地电脑上折腾了两天&…

通俗解释Multisim14.3中虚拟仪器的使用方式

Multisim14.3虚拟仪器实战指南&#xff1a;像搭积木一样玩转电路仿真你有没有过这样的经历&#xff1f;想测试一个放大电路&#xff0c;手头却没有示波器&#xff1b;调试滤波器时&#xff0c;函数发生器频率调不准&#xff1b;做数字实验&#xff0c;逻辑分析仪太贵买不起………

IndexTTS-2-LLM部署实战:物联网设备语音集成

IndexTTS-2-LLM部署实战&#xff1a;物联网设备语音集成 1. 引言 随着智能硬件和边缘计算的快速发展&#xff0c;语音交互已成为物联网&#xff08;IoT&#xff09;设备提升用户体验的核心能力之一。在众多语音技术中&#xff0c;文本转语音&#xff08;Text-to-Speech, TTS&…

高速信号PCB设计中使用 Altium Designer 进行串扰抑制方法

高速信号PCB设计中如何用 Altium Designer 抑制串扰&#xff1f;实战全解析 在今天的高速数字系统设计中&#xff0c;GHz级信号已不再是实验室里的“前沿科技”&#xff0c;而是嵌入式、通信和计算平台的标配。从FPGA到DDR5内存&#xff0c;从PCIe Gen4到千兆以太网&#xff0c…

科哥开发的WebUI好用吗?用户真实反馈汇总

科哥开发的WebUI好用吗&#xff1f;用户真实反馈汇总 1. 引言&#xff1a;Z-Image-Turbo WebUI 的定位与价值 在AI图像生成工具快速迭代的当下&#xff0c;一个易用、稳定且高效的前端界面&#xff08;WebUI&#xff09;往往决定了模型能否真正落地于实际创作场景。由开发者“…

Qwen3-VL产品识别精度测试:电商图像搜索功能部署实测

Qwen3-VL产品识别精度测试&#xff1a;电商图像搜索功能部署实测 1. 背景与场景需求 随着电商平台商品数量的爆炸式增长&#xff0c;传统基于文本标签的图像检索方式已难以满足用户对“以图搜图”精准度和语义理解深度的需求。尤其是在服饰、家居、数码配件等视觉特征复杂、品…

如何用Image-to-Video为电商产品制作高质量展示视频

如何用Image-to-Video为电商产品制作高质量展示视频 1. 引言 在电商领域&#xff0c;商品展示方式直接影响用户的购买决策。传统的静态图片虽然能呈现产品外观&#xff0c;但缺乏动态感和沉浸式体验。随着AI生成技术的发展&#xff0c;Image-to-Video&#xff08;图像转视频&…

AI印象派艺术工坊性能对比:云部署与本地部署差异

AI印象派艺术工坊性能对比&#xff1a;云部署与本地部署差异 1. 技术背景与选型动机 随着AI在图像处理领域的广泛应用&#xff0c;越来越多的开发者和创作者开始关注轻量化、可解释性强、部署便捷的艺术风格迁移方案。传统的基于深度学习的风格迁移模型&#xff08;如StyleGA…

Qwen1.5-0.5B-Chat性能优化实战:CPU推理加速技巧

Qwen1.5-0.5B-Chat性能优化实战&#xff1a;CPU推理加速技巧 1. 引言 1.1 轻量级对话模型的工程价值 随着大模型在各类应用场景中的普及&#xff0c;如何在资源受限的设备上实现高效推理成为关键挑战。Qwen1.5-0.5B-Chat作为通义千问系列中参数量最小的对话模型之一&#xf…

uboot—1.概述

1. 概述2. 用什么版本

OpenCV扫描仪在房地产行业的应用:合同电子化管理

OpenCV扫描仪在房地产行业的应用&#xff1a;合同电子化管理 1. 引言 1.1 行业背景与痛点 在房地产行业中&#xff0c;合同管理是核心业务流程之一。从购房意向书、租赁协议到产权转让文件&#xff0c;每天都会产生大量纸质文档。传统的人工归档方式不仅效率低下&#xff0c…

Qwen All-in-One冷备方案:灾备集群部署架构设计

Qwen All-in-One冷备方案&#xff1a;灾备集群部署架构设计 1. 引言 1.1 业务背景与灾备需求 在AI服务日益普及的今天&#xff0c;模型推理系统的稳定性直接决定了用户体验和业务连续性。尤其对于基于大语言模型&#xff08;LLM&#xff09;构建的智能服务&#xff0c;一旦主…

SolidWorks2024_装配体实例(桌下抽屉)

文章目录一、设计思路二、抽屉建模   1、插入零件   2、构建草图   3、拉伸凸台   4、挖空抽屉   5、添加挖空隔断   6、增加限位槽   7、拉伸切除   8、保存抽屉模型三、导轨建模   1、插入新零件&#xff0c;并基于抽屉前面绘制草图。   2、拉伸凸台  …

通义千问3-14B电商应用案例:智能客服系统部署实操手册

通义千问3-14B电商应用案例&#xff1a;智能客服系统部署实操手册 1. 引言&#xff1a;为什么选择 Qwen3-14B 构建电商智能客服&#xff1f; 随着电商平台用户咨询量的持续增长&#xff0c;传统人工客服面临响应延迟、服务成本高、多语言支持难等问题。尽管市场上已有多种大模…

实战案例:在面包板上搭建二输入异或门电路

动手搭建一个二输入异或门&#xff1a;从逻辑到面包板的完整实践你有没有试过&#xff0c;只用几个基本逻辑芯片&#xff0c;就在面包板上“造”出一个完整的数字功能单元&#xff1f;今天我们就来干一件看起来简单、但极具教学价值的事——亲手搭建一个二输入异或门电路。别小…

SAM 3部署架构:高可用服务设计模式

SAM 3部署架构&#xff1a;高可用服务设计模式 1. 引言&#xff1a;图像与视频可提示分割的技术演进 随着计算机视觉技术的不断进步&#xff0c;图像和视频中的对象分割已从传统的语义分割、实例分割逐步发展为更具交互性和泛化能力的可提示分割&#xff08;Promptable Segme…

一键部署SenseVoice Small语音识别系统|支持情感与事件标签

一键部署SenseVoice Small语音识别系统&#xff5c;支持情感与事件标签 1. 引言 1.1 语音识别技术的演进与需求升级 随着人工智能在语音交互领域的深入应用&#xff0c;传统的自动语音识别&#xff08;ASR&#xff09;已无法满足复杂场景下的理解需求。用户不仅希望“听清”…