目录

1数据集构建

1.1训练集是什么

1.2验证集是什么

1.3 测试集又是什么

1.4 产生的txt文件表示什么

2 进行训练

3对结果进行简单分析

 3.1验证集性能详解

整体性能(all类别)

各类别性能分析

3.2关键发现与建议

1. insulator(绝缘子)表现完美

2. flashover(闪络)需要重点关注 ⚠️

4借助测试集进行分析

1数据集构建

我们先下载一个数据集标注工具

打开vscode在激活yolo环境之后下载此插件

pip install labelimg

安装完之后,启动 labelimg ,输入

labelimg

输入之后会弹出abelimg的程序

但是abelimg面临的问题是我们需要手动标注,会比较麻烦,因此我们选择更方便的方式,自己从网络上下载开源数据集--电线杆绝缘子缺陷检测

创建新的文件夹,在文件夹里面加进去训练集 验证集

这里我们先明确一下这两个是什么?

1.1训练集是什么

🎓 训练集 (Training Set) - “课本与习题”

  • 核心作用:教模型认识什么是缺陷。

  • 工作方式:你把带有标注框的图片(比如告诉模型“这个是绝缘子,那个是闪络”)喂给它。模型通过不断“做习题”(计算损失Loss)和“对答案”(反向传播)来调整自己的参数,学习如何从图片中提取特征、定位和分类目标。

  • 你的情况:你用来训练的图片(比如之前推断出的约900-1400张)就是训练集。模型75轮的迭代,主要就是在这个数据集上完成的。

1.2验证集是什么

📝 验证集 (Validation Set) - “模拟考试”

  • 核心作用:客观评估模型的表现,并监控训练过程。

  • 工作方式:这部分图片模型从未在训练中见过。每完成一轮(或几轮)学习,我们就让模型在验证集上“考一次试”。通过计算它在验证集上的精确率(P)、召回率(R)、mAP等指标,我们才能知道模型是真的学会了,还是仅仅把训练集的题目背下来了(过拟合)。

  • 你的情况:你那601张验证集图片就是“模拟考卷”。你看到的mAP50=0.872、各类别的P、R值,都是模型在验证集这个“模拟考”中取得的真实成绩。

1.3 测试集又是什么

测试集就是“最终大考”,用来评估模型训练好之后的真实泛化能力

它的核心原则是:模型在训练过程中,绝对不能“看到”或“接触”到测试集中的任何一张图片,就像学生在期末考试前,绝对不能提前看到考题一样。

1.4 产生的txt文件表示什么

但是我们又注意到lables文件夹里面全是txt文件,这又是什么呢?

这些TXT文件并不是普通的文本,而是一种特定格式的坐标数据。每行代表图片中的一个目标(比如一个缺陷),格式如下:

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

  • <class_id>: 目标的类别编号,例如 0 代表 daitu1 代表 mingren

  • <x_center> <y_center>: 目标中心点的位置,相对于图片的宽度和高度进行归一化后得到的坐标。

  • <width> <height>: 目标边界框的宽度和高度,同样是相对于图片的宽度和高度进行归一化后的值。

为什么不用其他格式(如JSON、XML)?

TXT格式简单、轻量,解析速度极快。对于YOLO这种需要每秒处理成百上千张图片的训练任务来说,速度至关重要。相比之下,JSON或XML这种结构化文件会增加不必要的解析开销。

文件之间的“一一对应”关系

这是最关键的一点。假设你的数据集里有一张名为 image_001.jpg 的图片,那么它的“答案”文件必须命名为 image_001.txt,并且放在labels文件夹下对应的子目录(train 或 val)中。

2 进行训练

创建yaml文件,输入以下内容

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ...]
path: bvn  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes
names: 
  0: flashover     
  1: insulator 
  2: lose
  3: damaged

在终端里面输入以下内容

yolo task=detect mode=train model=./yolov8n.pt data=yolo-bvn.yaml epochs=75 workers=1 batch=16

Deepseek表示好一点的显卡可以增加workers和batch大小

出现以下表示开始训练

3对结果进行简单分析

 3.1验证集性能详解

整体性能(all类别)

指标 数值 含义 评价
Images 601 验证集图片数量 说明你的1500张图中约40%用于验证
Instances 1777 验证集中的标注目标总数 平均每张图约3个缺陷
Box(P) 0.895 精确率 = 89.5% 优秀!预测为正样本中有89.5%是对的
R 0.828 召回率 = 82.8% 良好!82.8%的真实缺陷被检出
mAP50 0.872 IoU=0.5时的平均精度 87.2%,非常好的成绩
mAP50-95 0.563 严格阈值下的平均精度 56.3%,这是正常范围

各类别性能分析

你的数据集有 4个类别(从输出看是4类):

类别 Images Instances P(精确率) R(召回率) mAP50 mAP50-95 问题分析
flashover 155 498 0.852 0.663 0.756 0.333 ⚠️ 召回率偏低,漏检较多
insulator 601 750 0.945 0.983 0.987 0.898 ✅ 表现完美,检测非常准确
lose 318 333 0.887 0.820 0.868 0.548 ✅ 表现良好
damaged 138 196 0.897 0.846 0.879 0.472 ✅ 表现良好

3.2关键发现与建议

1. insulator(绝缘子)表现完美

  • mAP50高达 98.7%,几乎零错误

  • 说明该类缺陷特征非常明显,模型学得很好

2. flashover(闪络)需要重点关注 ⚠️

  • 召回率仅66.3%,意味着超过1/3的闪络缺陷被漏检

  • 可能原因

    • 训练样本不足(只有155张图包含该类)

    • 闪络缺陷特征不明显或变化多样

    • 标注可能存在遗漏

我们打开train5文件夹,可以查到结果保存的数据,可以观测出精度的变化

4借助测试集进行分析

启动了yolo之后,在CMD输入以下命令,包括-要选择的最佳模型-检测的图片地址-保存的位置

yolo detect predict model=runs/detect/train5/weights/best.pt source="C:\Users\Administrator\Desktop\ultralytics-main\datasets\bvn\images\test" save=True project=my_detect_results name=detection_results

运行结束之后有如下结果!

观测电脑处理性能 可见进行模型检测主要还是依赖GPU和内存

打开my_detect_results文件夹,观察训练好的图片

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐