超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解 | 您所在的位置:网站首页 › 目标识别流程有哪些 › 超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解 |
目录 yolov8导航 YOLOv8(附带各种任务详细说明链接) 搭建环境说明 不同版本模型性能对比 不同版本对比 模型参数解释 不同版本说明 训练 训练示意代码 训练用数据集与 .yaml 配置方法 .yaml配置 数据说明 数据集路径 训练参数说明 训练过程示意 训练结果文件说明 weights文件夹 best.pt:损失值最小的模型文件 last.pt:训练到最后的模型文件 args.yaml confusion_matrix.png - 混淆矩阵 confusion_matrix_normalized.png - 标准化混淆矩阵: F1_curve.png - F1-置信度曲线 labels.jpg - 标签分布图和边界框分布图 labels_correlogram.jpg - 标签相关图 P_curve.png - 精确度-置信度曲线 PR_curve.png - 精确度-召回曲线 R_curve.png - 召回-置信度曲线 results.png 和 results.csv - 训练结果图表和数据 验证 验证示意代码 验证结果 验证参数 预测 预测示意代码 box输出结果示意 xywh输出示意 cls输出示意 输出参数含义解释 预测参数说明 总结 yolov8导航如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。 YOLOv8(附带各种任务详细说明链接) 搭建环境说明如果不知道如何搭建的小伙伴可以参考这个博文: 超级详细的!多种方式YOLOV8安装及测试 操作系统:win10 x64 编程语言:python3.9 开发环境:Anaconda 示例项目下载地址: 计算机视觉-YOLOv8目标检测-COCO128数据集应用分析 不同版本模型性能对比 不同版本对比 模型尺寸 (像素)准确率 Top1准确率 Top5速度 CPU ONNX (ms)速度 A100 TensorRT (ms)参数 (M)FLOPs (B) at 640YOLOv8n-cls22466.687.012.90.312.74.3YOLOv8s-cls22472.391.123.40.356.413.5YOLOv8m-cls22476.493.285.40.6217.042.7YOLOv8l-cls22478.094.1163.00.8737.599.7YOLOv8x-cls22478.494.3232.01.0157.4154.8 模型参数解释尺寸(size): 模型处理的图像尺寸,这里所有模型的输入分辨率均为224x224像素。 准确率(accuracy): top1: 模型在ImageNet验证集上预测最可能类别的正确率。top5: 模型在ImageNet验证集上预测的前五个最可能类别中包含正确类别的概率。速度: 衡量模型处理单张图像所需时间的指标,单位是毫秒(ms)。 CPU ONNX: 在CPU上使用ONNX格式时的处理速度。A100 TensorRT: 在NVIDIA A100 GPU上使用TensorRT加速时的处理速度。参数数量(params (M)): 模型中的参数总数,以百万(M)为单位。 浮点运算次数(FLOPs (B) at 640): 执行一次前向传播所需的浮点运算次数,以十亿(B)为单位,这里基于640像素的输入计算。 不同版本说明YOLOv8n-cls: 这是系列中最轻量的模型,拥有最快的处理速度但准确率相对较低。适合资源有限或对速度要求较高的场景。 YOLOv8s-cls: 相比YOLOv8n,它在保持较高速度的同时,准确率有所提升。适合需要在速度和准确度之间取得平衡的应用。 YOLOv8m-cls: 在准确率上有显著提升,适合对准确度有更高要求,但仍然需要考虑处理速度的场景。 YOLOv8l-cls: 更高的准确率使其适用于对准确度要求较高的应用,但处理速度较慢。 YOLOv8x-cls: 在这个系列中,它提供了最高的准确率,但速度最慢,需要较强的硬件支持。适合在准确度至关重要的高端应用。 训练 训练示意代码 from ultralytics import YOLO # 加载模型 model = YOLO('yolov8n.yaml').load('yolov8n.pt') # 从YAML构建并转移权重 if __name__ == '__main__': # 训练模型 results = model.train(data='coco128.yaml', epochs=10, imgsz=512) metrics = model.val()这个代码和图像分类任务中数据指定方式略有不同,图像分类中直接指向数据的文件夹即可,在目标检测中需要你指向配置好的 .yaml 文件。 训练用数据集与 .yaml 配置方法 .yaml配置 # 这里的path需要指向你项目中数据集的目录 path: C:/Users/admin/Desktop/CSDN/YOLOV8_DEF/ultralytics-detect/datasets/coco128/ # 这里分别指向你训练、验证、测试的文件地址,只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应 train: images/train2017 # train images (relative to 'path') 128 images val: images/test2017 # val images (relative to 'path') 128 images test: images/test2017 # test images (optional) # Classes names: 0: person 1: bicycle 2: car 3: motorcycle 4: airplane ...... 75: vase 76: scissors 77: teddy bear 78: hair drier 79: toothbrush上面的则是 yaml文件的配置示意方法。注意这里我直接把测试集和验证集都指向了一个文件夹,正式项目的时候建议这两个数据集都单独准备。 数据说明在使用YOLOv8进行目标检测时,每个图像通常都伴随一个.txt文件,该文件包含了关于图像中对象的标注信息。这些.txt文件中的每一行都代表图像中的一个对象,包含以下信息: 类别ID:这是一个整数,代表了对象所属的类别。例如,如果你的数据集有“人”、“车”和“狗”三个类别,那么可能分别用0、1和2来表示这些类别。 中心X坐标:这是一个归一化后的值,代表对象边界框中心的X坐标(水平方向)。这个值是相对于整个图像宽度的比例。 中心Y坐标:这是一个归一化后的值,代表对象边界框中心的Y坐标(垂直方向)。这个值是相对于整个图像高度的比例。 边界框宽度:这也是一个归一化后的值,代表对象边界框的宽度。这个值是相对于整个图像宽度的比例。 边界框高度:这同样是一个归一化值,代表对象边界框的高度。这个值是相对于整个图像高度的比例。 举例来说,如果一个.txt文件中的一行是1 0.5 0.5 0.2 0.3,这意味着该对象属于类别1(例如“车”),其边界框的中心位于图像中心(X和Y坐标均为0.5),边界框的宽度是图像宽度的20%,高度是图像高度的30%。 数据集路径
这里需要注意,训练集测试集的图片和标签都要一一对应。同时,注意观察这里面的路径是和 .yaml文件中都是对应的关系。 训练参数说明 参数默认值描述设置建议modelNone模型文件路径,如 yolov8n.pt, yolov8n.yaml根据需要选择合适的预训练模型文件dataNone数据文件路径,如 coco128.yaml选择合适的数据集配置文件epochs100训练的周期数根据数据集大小和模型复杂度调整timeNone训练时间(小时),如果提供,将覆盖epochs参数根据实际训练时间需求设置patience50早停的周期数,等待无显著改进的周期数根据模型训练动态调整batch16每个批次的图像数量根据硬件资源调整imgsz640输入图像的尺寸根据硬件和模型性能要求调整saveTrue是否保存训练检查点和预测结果通常保持默认save_period-1每x周期保存检查点,如果 |
CopyRight 2018-2019 实验室设备网 版权所有 |