前言
上一篇我们已经搭建好了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分辨率最优参数、防过拟合、收敛稳、精度拉满)