如何使用目标检测深度学习框架yolov8训练钢管管道表面缺陷VOC+YOLO格式1159张3类别的检测数据集步骤和流程

【数据集介绍】

数据集中有很多增强图片,大约300张为原图剩余为增强图片

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)

图片数量(jpg文件个数):1159

标注数量(xml文件个数):1159

标注数量(txt文件个数):1159

标注类别数:3

所在仓库:firc-dataset

标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):["Crack","corrosion","weld-defect"]

每个类别标注的框数:

Crack 框数 = 985

corrosion 框数 = 2295

weld-defect 框数 = 369

总框数:3649

使用标注工具:labelImg

标注规则:对类别进行画矩形框

重要说明:暂无

特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

图片预览:

标注例子:

【训练步骤】

首先获取到数据集后截图如下:

然后将数据集压缩包解压到一个非中文和空格路径下面,比如我解压的到C:\Users\Administrator\Downloads,由于使用yolo训练数据集,因此Annotations文件夹用不上可以放一边。

解压后目录为:

在data文件夹下面新建train和val一共2个文件夹,然后分别在train和val文件夹再新建images和labels文件夹,如下图

然后将JPEGImages文件夹下面前100张图片和对应标注移动到val文件夹对应目录中,当然您也可以随便选择指定数量图片移动或者复制都行。最后把剩余图片和标注txt文件复制到train文件夹指定目录。

参考coco128.yaml配置写自己训练配置文件,如果没有yaml文件可以按照下面格式书写配置文件

复制代码
train: C:\Users\Administrator\Downloads\data\train\images
val: C:\Users\Administrator\Downloads\data\val\images
nc: 3
names:
  0: Crack
  1: corrosion
  2: weld-defect

写好后这里我叫data.yaml,注意上面类别一定要和labels文件夹里面classes.txt类别要一致

之后就是开始训练了,注意训练yolov8模型需要自己提前安装好环境。

使用预训练模型开始训练

yolo task=detect mode=train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640 batch=8

参数说明:

model: 使用的模型类型,如 yolov8s.pt(小模型)、yolov8m.pt(中)、yolov8l.pt(大)

data: 指定数据配置文件

epochs: 训练轮数

imgsz: 输入图像尺寸

batch: 批量大小(根据显存调整)

训练完成后,最佳权重保存路径为:runs/detect/train/weights/best.pt,如果多次运行命令runs/detect/train2,runs/detect/train3文件夹生成只需要到数字最大文件夹查看就可以找到模型

图片预测:

复制代码
from ultralytics import YOLO

# 加载训练好的模型
model = YOLO('runs/detect/train/weights/best.pt')

# 图像预测
results = model('path_to_your_image.jpg')

视频或摄像头预测

复制代码
results = model('path_to_video.mp4')  # 视频
#results = model(0)  # 摄像头

验证集评估

复制代码
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=data.yaml

输出指标图像,一般在模型训练后生成,文件位置在runs/detect/train/results.png:

上面训练结果图片常用评估参数介绍

在目标检测任务中,评估模型的性能是至关重要的。你提到的几个术语是评估模型性能的常用指标。下面是对这些术语的详细解释:

Class:

这通常指的是模型被设计用来检测的目标类别。例如,一个模型可能被训练来检测车辆、行人或动物等不同类别的对象。

Images:

表示验证集中的图片数量。验证集是用来评估模型性能的数据集,与训练集分开,以确保评估结果的公正性。

Instances:

在所有图片中目标对象的总数。这包括了所有类别对象的总和,例如,如果验证集包含100张图片,每张图片平均有5个目标对象,则Instances为500。

P(精确度Precision):

精确度是模型预测为正样本的实例中,真正为正样本的比例。计算公式为:Precision = TP / (TP + FP),其中TP表示真正例(True Positives),FP表示假正例(False Positives)。

R(召回率Recall):

召回率是所有真正的正样本中被模型正确预测为正样本的比例。计算公式为:Recall = TP / (TP + FN),其中FN表示假负例(False Negatives)。

mAP50:

表示在IoU(交并比)阈值为0.5时的平均精度(mean Average Precision)。IoU是衡量预测框和真实框重叠程度的指标。mAP是一个综合指标,考虑了精确度和召回率,用于评估模型在不同召回率水平上的性能。在IoU=0.5时,如果预测框与真实框的重叠程度达到或超过50%,则认为该预测是正确的。

mAP50-95:

表示在IoU从0.5到0.95(间隔0.05)的范围内,模型的平均精度。这是一个更严格的评估标准,要求预测框与真实框的重叠程度更高。在目标检测任务中,更高的IoU阈值意味着模型需要更准确地定位目标对象。mAP50-95的计算考虑了从宽松到严格的多个IoU阈值,因此能够更全面地评估模型的性能。

这些指标共同构成了评估目标检测模型性能的重要框架。通过比较不同模型在这些指标上的表现,可以判断哪个模型在实际应用中可能更有效。

将模型导出为ONNX、TensorRT等格式以用于部署:

yolo export model=runs/detect/train/weights/best.pt format=onnx

支持格式包括:onnx, engine, tflite, pb, torchscript 等。

经过上面训练可以使用模型做一步部署,比如使用Onnx模型在嵌入式部署,使用engine模型在jetson上deepstream部署,使用torchscript模型可以在C++上部署等等。

相关推荐
铭keny19 分钟前
YOLO11 目标检测从安装到实战
人工智能·目标检测·目标跟踪
网安INF10 小时前
深度学习中批标准化与神经网络调优
人工智能·深度学习·神经网络·机器学习
归去_来兮12 小时前
Transformer模型原理概述
人工智能·深度学习·transformer
酌沧12 小时前
深度学习 必然用到的 微积分知识
人工智能·深度学习
码字的字节12 小时前
深入理解Transformer架构:从理论到实践
深度学习·架构·transformer
Dymc14 小时前
【目标检测之Ultralytics预测框颜色修改】
人工智能·yolo·目标检测·计算机视觉
神经星星15 小时前
AI 论文周报 | Chai-2刷新抗体设计效率,命中率提高100倍;多篇ICML入围论文一键速览
人工智能·深度学习·机器学习
昵称是6硬币16 小时前
(DETR)End-to-End Object Detection with Transformers论文精读(逐段解析)
人工智能·深度学习·目标检测·计算机视觉·transformer
AndrewHZ16 小时前
【图像处理基石】如何检测到画面中的ppt并对其进行增强?
图像处理·人工智能·pytorch·opencv·目标检测·计算机视觉·图像增强