YOLOv8目标检测实战项目(ExDark数据集)
项目概述
此项目是基于YOLOv8的目标检测实战,使用ExDark ExDark数据集进行训练。需要说明的是,本项目不包含YOLOv8的源码,源码请参考ultralytics官方实现。
项目文件包含:
- 环境配置文件
- 数据处理工具
- 训练模型参数
- 验证及测试结果等
具体环境配置、训练和测试过程,请参考我的CSDN文章或博客(方水云)获取详细说明。
数据集介绍
ExDark数据集概况
ExDark数据集是用于暗光环境下目标检测的专业数据集,由马来西亚大学计算机科学与信息技术学院图像与信号处理中心发布。
数据集特点:
- 包含7363张低光照图片
- 涵盖10种不同光照条件(从极弱光到普通弱光)
- 包含12个类别(类似PASCAL VOC标准)
数据集标注格式:原始标注采用(左上,右下)坐标形式。
数据集资源
- ExDark数据集下载地址
- ExDark数据集详细说明文档
数据集预处理
原始数据问题
原始ExDark数据集存在以下问题:
- 图像格式不统一(包含jpg、png、jpeg等多种格式)
- 颜色空间不一致(非统一RGB空间)
直接使用会导致libpng警告:
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB
预处理方案
recipy.py脚本实现了以下预处理功能:
- 统一图像格式和颜色空间
- 将原始标注(左上,右下坐标)转换为YOLOv8要求的(中心,宽,高)格式
- 按8:1:1比例划分train/test/valid数据集
最终数据结构
预处理后形成符合YOLOv8规范的datasets目录结构:
├─datasets
│ ├─ExDark
│ ├─test
│ │ images
│ │ labels
│ └─train
│ images
│ │ labels
│ └─valid
│ images
│ │ labels
实验结果
结果文件存放
所有训练、验证、测试和视频检测结果保存在runs/detect目录下。
模型权重
weights目录包含两个关键权重文件:
- last.pt:训练过程中最后保存的权重文件,可用于继续训练或推理评估
- best.pt:在验证集上表现最佳的权重文件,可避免过拟合问题
训练指标分析
关键评估指标
-
定位损失(box_loss)
- 度量预测框与真实框的误差(使用GIoU)
- 值越小表示定位越准确
-
置信度损失(obj_loss)
- 计算目标存在置信度的二元交叉熵损失
- 值越小表示目标判断越准确
-
分类损失(cls_loss)
- 计算分类正确性的交叉熵损失
- 值越小表示分类越准确
-
Precision(精度)
- 真正例占预测正例的比例
- 衡量预测正例的准确性
-
Recall(召回率)
- 真正例占实际正例的比例
- 衡量找出真实正例的能力
-
mAP(平均精度)
- Precision-Recall曲线下面积
- mAP@[.5:.95]表示不同IoU阈值下的平均性能
PR曲线分析
PR_curve展示精确率与召回率的关系:
- 横轴:召回率
- 纵轴:精确率
- 曲线越靠近右上角性能越好
- 反映精确率与召回率的权衡关系
测试结果分析
F1曲线
- 基于精确率和召回率的调和平均数
- 取值范围0-1(1表示最佳性能)
- 多分类问题中的重要评估工具
视频检测演示
包含两个实际场景的检测效果展示: