前言

上一篇我们已经搭建好了100%可用的YOLOv8训练环境,正式进入实战阶段。

做YOLO目标检测项目,环境只占20%,数据集占80%。模型精度高不高、会不会漏检、会不会误检、现场稳不稳定,全部取决于数据集质量

很多新手训练模型效果差,不是参数不对,而是:

  • 数据集杂乱

  • 标注不规范

  • 没有划分训练集/验证集

  • 图片标签不对应

  • yaml配置错误直接训练报错

本篇给大家一套工业级、标准化、零踩坑的YOLO数据集制作全流程,从原始图片 → 清洗 → 标注 → 自动划分 → 生成完整数据集结构,全程手把手。

一、YOLO数据集标准结构(必须严格遵守)

YOLOv8 只认这一套结构,文件夹错一个字母就跑不起来


dataset ├── images │ ├── train │ └── val ├── labels │ ├── train │ └── val └── data.yaml

images 放图片,labels 放对应txt标签。

二、采集图片规范(工业检测专用)

以你的氢化服、安全帽、人员检测场景举例:

  • 分辨率推荐:1280×720 / 960×544(你之前训练的最优尺寸)

  • 包含:正常穿戴、未穿戴、遮挡、光线亮/暗、远近角度

  • 图片清晰、不要模糊、不要过度压缩

  • 图片名无中文、无空格、无特殊符号

三、数据集清洗(必做)

拿到原始图片先清洗,避免脏数据影响模型:

  • 删除模糊、黑屏、反光严重图片

  • 删除重复、高度相似图片

  • 删除没有目标的无效图

可用上一篇教的Python批量文件处理代码统一筛选、改名、整理。

四、标注工具推荐(新手首选)

工业项目通用:LabelImg

优点:免费、轻量、支持YOLO txt格式、上手简单。

标注输出格式选择:YOLO (.txt)

五、标准标注规范(决定模型精度)

新手90%标错的地方:

  • 框不要留太大空白

  • 不要框不全、不要只框一半身体

  • 遮挡目标能看见主体就标

  • 小目标尽量精细标注

标注越精细,mAP、召回率越高,你的模型能达到0.99就是标注规范。

六、自动划分训练集/验证集(代码一键完成)

手动分文件夹太慢,我给你新手万能划分代码:

自动按 8:2 划分 train/val,图片标签自动对应、不乱序。


import os import random import shutil # 配置路径 img_path = "./all_images" label_path = "./all_labels" train_img = "./dataset/images/train" val_img = "./dataset/images/val" train_label = "./dataset/labels/train" val_label = "./dataset/labels/val" # 创建文件夹 os.makedirs(train_img, exist_ok=True) os.makedirs(val_img, exist_ok=True) os.makedirs(train_label, exist_ok=True) os.makedirs(val_label, exist_ok=True) # 获取所有图片 imgs = [f for f in os.listdir(img_path) if f.endswith((".jpg",".png"))] random.shuffle(imgs) # 8:2划分 split = int(len(imgs)*0.8) train_set = imgs[:split] val_set = imgs[split:] # 复制文件 for img in train_set: shutil.copy(os.path.join(img_path,img), os.path.join(train_img,img)) txt = img.replace(".jpg",".txt").replace(".png",".txt") shutil.copy(os.path.join(label_path,txt), os.path.join(train_label,txt)) for img in val_set: shutil.copy(os.path.join(img_path,img), os.path.join(val_img,img)) txt = img.replace(".jpg",".txt").replace(".png",".txt") shutil.copy(os.path.join(label_path,txt), os.path.join(val_label,txt)) print("数据集划分完成!")

七、生成标准 data.yaml(训练核心文件)

yaml 是 YOLO 读取类别、路径的唯一配置文件。

直接复制修改即可:


path: ./dataset train: images/train val: images/val nc: 2 names: ["person","hydrogen_suit"]

nc:代表类别数量

names:对应你的标签名称

八、数据集最终自检清单(训练前必看)

满足以下条件,训练必稳、精度必高:

  • 图片、标签数量完全对应,无缺失

  • 无中文、无乱码、无重名文件

  • 训练集80%、验证集20%

  • yaml路径、类别数完全正确

  • 图片分辨率统一 1280/960 高清格式

九、结尾

到这里,你已经掌握了工业级YOLO数据集完整制作流程

图片采集 → 数据清洗 → 规范标注 → 自动划分 → 生成yaml配置

数据集是模型的底子,底子打好,后面训练出来的模型精度高、不翻车、可落地

下一篇:YOLO高清数据集专属训练教程(1280/960分辨率最优参数、防过拟合、收敛稳、精度拉满)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐