目标检测ultralytics-YOLOv8学习笔记(持续更新)

avatar
作者
筋斗云
阅读量:0

目录

  • YOLOV8
    • 官方文档
    • 示例
      • 命令格式
      • 各项参数解释
      • 总结
    • 上述命令输出
      • 性能指标输出
      • 类别性能指标
      • 速度指标输出
      • 总结
  • IOU阈值
    • 1. mAP50
    • 2. mAP50-95
    • 区别总结:
    • 实际应用中的选择:
    • 示例:
  • 精度与召回率
    • 精度(Precision)
    • 召回率(Recall)
    • 区别总结:
    • 示例:
    • 计算示例:
    • 平衡精度与召回率:

以下知识点大部分由阿里AI语言大模型 通义千问 生成,本帖只做问题的发现和答案的整理工作。

YOLOV8

官方文档

Ultralytics yolo commands use the following syntax:

yolo TASK MODE ARGS 
  • TASK (optional) is one of (detect, segment, classify, pose)
  • MODE (required) is one of (train, val, predict, export, track)
  • ARGS (optional) are arg=value pairs like imgsz=640 that override defaults.

See all ARGS in the full Configuration Guide or with the yolo cfg CLI command.

示例

yolo val model=yolov8n.pt data=coco8.yaml batch=1 imgsz=640 

这条命令是用来运行 YOLOv8 模型进行验证的。让我们逐个解析命令中的各个选项:

命令格式

yolo val model=<path_to_model> data=<path_to_data_config> batch=<batch_size> imgsz=<image_size> 

各项参数解释

  1. yolo val

    • 这是运行 YOLOv8 模型进行验证的命令。val 是验证模式的命令。
  2. model=yolov8n.pt

    • model 参数指定了要使用的模型文件路径。在这里,yolov8n.pt 是一个预训练的 YOLOv8 模型文件。yolov8n 表示的是 YOLOv8 的 nano 版本,这是一个较小的模型,适合快速推理和较小的数据集。
  3. data=coco8.yaml

    • data 参数指定了数据配置文件的路径。coco8.yaml 是一个 YAML 文件,包含了关于数据集的信息,比如类别名称、训练集路径、验证集路径等。这个文件告诉模型如何加载和使用数据集。
  4. batch=1

    • batch 参数指定了每个批次(batch)中图像的数量。这里设置为 1,意味着每次只处理一张图像。
  5. imgsz=640

    • imgsz 参数指定了输入图像的大小。在这里,640 表示输入图像会被缩放至 640x640 的尺寸。这有助于标准化输入,使模型能够在相同的尺寸下进行推理。

总结

这条命令将使用预训练的 YOLOv8 nano 模型 (yolov8n.pt) 对 COCO 数据集的一个验证集进行验证。它将使用单张图像作为每个批次的输入,并将输入图像的尺寸调整为 640x640。数据集的配置信息存储在 coco8.yaml 文件中。

如果你需要运行这条命令,确保你已经安装了 YOLOv8 的相应版本,并且拥有正确的模型文件和数据配置文件。如果你有任何疑问或需要进一步的帮助,请随时告诉我。

这条输出信息提供了关于YOLOv8模型在验证集上的性能指标,以及每张图像处理的速度。下面是各项指标的解释:

上述命令输出

       Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:02<00:00,  1.63it/s]       person          3         10          1      0.449      0.555      0.279          dog          1          1      0.865          1      0.995      0.497        horse          1          2      0.771          1      0.995      0.747     elephant          1          2          1      0.912      0.995      0.415     umbrella          1          1       0.68          1      0.995      0.995 potted plant          1          1      0.871          1      0.995      0.895 yolo val model=yolov8n.pt data=coco8.yaml batch=1 imgsz=640yolo val model=yolov8n.pt data=coco8.yaml batch=1 imgsz=640Speed: 6.1ms preprocess, 125.9ms inference, 0.0ms loss, 20.8ms postprocess per image 

性能指标输出

Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:02<00:00,  1.63it/s] 
  • Class:表示类别名称。
  • Images:表示该类别在验证集中出现的图像数量。
  • Instances:表示该类别在验证集中出现的实例数量。
  • Box:表示针对该类别的检测结果。
    • P (Precision):表示精确度,即正确预测的比例。
    • R (Recall):表示召回率,即实际存在的实例中有多少被正确预测到了。
    • mAP50:表示平均精度均值(mean Average Precision),IoU阈值设为0.5。
    • mAP50-95:表示不同IoU阈值(0.5到0.95之间,步长为0.05)下的平均精度均值。

类别性能指标

  • person:该类别出现在3张图像中,共有10个实例。精确度为0.449,召回率为0.555,mAP50为0.279,mAP50-95为0.279。
  • dog:该类别出现在1张图像中,共有1个实例。精确度为0.865,召回率为1.000,mAP50为0.995,mAP50-95为0.497。
  • horse:该类别出现在1张图像中,共有2个实例。精确度为0.771,召回率为1.000,mAP50为0.995,mAP50-95为0.747。
  • elephant:该类别出现在1张图像中,共有2个实例。精确度为1.000,召回率为0.912,mAP50为0.995,mAP50-95为0.415。
  • umbrella:该类别出现在1张图像中,共有1个实例。精确度为0.680,召回率为1.000,mAP50为0.995,mAP50-95为0.995。
  • potted plant:该类别出现在1张图像中,共有1个实例。精确度为0.871,召回率为1.000,mAP50为0.995,mAP50-95为0.895。

速度指标输出

Speed: 6.1ms preprocess, 125.9ms inference, 0.0ms loss, 20.8ms postprocess per image 
  • preprocess:表示对每张图像进行预处理所需的时间,这里是6.1毫秒。
  • inference:表示模型进行一次推理所需的时间,这里是125.9毫秒。
  • loss:在验证过程中,通常不会计算损失,这里显示为0.0毫秒,因为验证模式并不涉及反向传播。
  • postprocess:表示对模型输出进行后处理所需的时间,这里是20.8毫秒。

总结

  • 这段输出显示了YOLOv8模型在COCO数据集验证集上的性能指标,包括精确度、召回率、mAP50和mAP50-95。
  • 模型对不同的类别有不同的性能,例如对于“person”类别的性能较差,而对于“dog”、“horse”等类别的性能较好。
  • 每张图像的处理速度显示模型在单张图像上的预处理、推理和后处理时间。

IOU阈值

不同IoU(Intersection over Union)阈值的平均精度均值(mAP,mean Average Precision)是评估目标检测算法性能的重要指标之一。mAP 是衡量检测算法在不同 IoU 阈值下平均精度的综合指标。下面详细介绍不同IoU阈值的mAP之间的区别:

1. mAP50

  • 定义:mAP50 是指 IoU 阈值固定为 0.5 时计算得到的平均精度均值。
  • 特点:mAP50 更关注于检测框与真实框之间的重叠程度大于等于 50% 的情况。这意味着即使检测框与真实框的重叠程度较低,只要超过 50%,也会被视为正确检测。
  • 应用场景:mAP50 常用于快速评估模型的基本性能,因为它计算简单且速度快。

2. mAP50-95

  • 定义:mAP50-95 是指在 IoU 阈值从 0.5 到 0.95 之间,每隔 0.05 计算一次 AP(Average Precision),然后取这些 AP 的平均值。
  • 特点:mAP50-95 更全面地考虑了不同重叠程度下的检测质量,这要求模型不仅能够检测出目标,还要确保检测框与真实框之间的重叠足够高。
  • 应用场景:mAP50-95 经常被用作评估目标检测算法性能的标准,因为它更严格地评估了模型的整体性能,特别是在小目标和大目标上的表现。

区别总结:

  • 严格程度:mAP50-95 比 mAP50 更严格,因为它考虑了更高IoU阈值下的性能。
  • 计算复杂度:mAP50-95 的计算更为复杂,因为它涉及到多个IoU阈值的计算。
  • 性能评估:mAP50-95 提供了更全面的性能评估,因为它覆盖了从较宽松到较严格的重叠标准。

实际应用中的选择:

  • 如果你希望快速评估模型的基本性能,可以选择 mAP50。
  • 如果你希望进行更严格的性能评估,特别是对于那些需要高精度的应用场景,应选择 mAP50-95。

示例:

在你提供的输出中,我们看到了不同类别的 mAP50 和 mAP50-95 的值。例如,对于 “person” 类别:

  • mAP50:0.279
  • mAP50-95:0.279

这表明 “person” 类别的 mAP50 和 mAP50-95 相同,这可能是因为该类别在所有 IoU 阈值下的 AP 值变化不大,或者模型在 IoU 高于 0.5 时的表现并不好。

对于 “dog” 类别:

  • mAP50:0.995
  • mAP50-95:0.497

这表明 “dog” 类别的 mAP50 很高,但 mAP50-95 较低,这可能是因为模型在 IoU 低于 0.5 时的性能很好,但在更高的 IoU 阈值下性能下降。

精度与召回率

精度(Precision)和召回率(Recall)是评估分类器或信息检索系统性能的两个重要指标。它们分别衡量了分类器或检索系统的不同方面:

精度(Precision)

  • 定义:精度是检索出的相关文档数与检索出的所有文档数的比率。
  • 计算公式 Precision = True Positives True Positives + False Positives \text{Precision} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Positives}} Precision=True Positives+False PositivesTrue Positives
  • 含义:在所有被分类器标记为正例的样本中,有多少比例实际上是正例。
  • 应用场景:精度常用于需要减少误报(False Positives)的场合,例如在医学诊断中,我们希望减少不必要的后续检查。

召回率(Recall)

  • 定义:召回率是检索出的相关文档数与文档库中所有的相关文档数的比率。
  • 计算公式 Recall = True Positives True Positives + False Negatives \text{Recall} = \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}} Recall=True Positives+False NegativesTrue Positives
  • 含义:在所有实际为正例的样本中,有多少比例被正确地识别出来。
  • 应用场景:召回率常用于需要尽量找出所有正例的场合,例如在搜索引擎中,我们希望尽可能多地返回相关结果。

区别总结:

  • 精度关注的是:在所有被分类为正例的样本中,有多少是真正的正例。
  • 召回率关注的是:在所有实际为正例的样本中,有多少被正确地识别出来。

示例:

假设我们有一个垃圾邮件分类器,用于将邮件分类为垃圾邮件(正例)或非垃圾邮件(负例):

  • True Positives (TP):分类器正确识别出的垃圾邮件数量。
  • False Positives (FP):分类器错误地将非垃圾邮件识别为垃圾邮件的数量。
  • False Negatives (FN):分类器错误地将垃圾邮件识别为非垃圾邮件的数量。
  • True Negatives (TN):分类器正确识别出的非垃圾邮件数量。

计算示例:

  • 假设 TP = 90,FP = 10,FN = 5。
  • 精度 P r e c i s i o n = 90 ÷ ( 90 + 10 ) = 90 ÷ 100 = 0.9 Precision = 90 \div (90 + 10)= 90 \div 100 = 0.9 Precision=90÷(90+10)=90÷100=0.9
  • 召回率 R e c a l l = 90 ÷ ( 90 + 5 ) = 90 ÷ 95 = 0.95 Recall = 90 \div (90 + 5)= 90 \div 95 = 0.95 Recall=90÷(90+5)=90÷95=0.95

平衡精度与召回率:

  • 在实际应用中,通常需要在精度和召回率之间寻找平衡点。提高精度可能会降低召回率,反之亦然。
  • 一个好的模型应该在精度和召回率之间取得良好的平衡,以便既能准确识别正例,又能尽量减少误报。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!