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

news/2024/11/15 6:17:10/

目录

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

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

YOLOV8_2">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模型在验证集上的性能指标,以及每张图像处理的速度。下面是各项指标的解释:

上述命令输出

python">       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.279dog          1          1      0.865          1      0.995      0.497horse          1          2      0.771          1      0.995      0.747elephant          1          2          1      0.912      0.995      0.415umbrella          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

平衡精度与召回率:

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

http://www.ppmy.cn/news/1504200.html

相关文章

SpringMVC和Spring

1.AOP 1.基础内容 AOP是面向切面的的编程&#xff0c;AOP 是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&#xff09;的一种补充。 面向切面编程&#xff0c;实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术&#xff08;增强代码&#xff09;&…

高级java每日一道面试题-2024年8月03日-web篇-session和cookie有什么区别?

如果有遗漏,评论区告诉我进行补充 面试官: session和cookie有什么区别? 我回答: 在Java Web开发中&#xff0c;session和cookie是两种常用的状态管理技术&#xff0c;它们主要用于跟踪用户的会话状态&#xff0c;但它们在存储位置、安全性、数据量和生命周期等方面存在显著…

C语言——自定义函数求短信计费问题

用手机发短信&#xff0c;一条短信资费为0.1元&#xff0c;但限定一条短信的内容在70个字以内&#xff08;包括70个字&#xff09;。如果你一次所发送的短信超过了70个字&#xff0c;则会按照每70个字一条短信的限制把它分割成多条短信发送。假设已经知道你当月所发送的短信的字…

药明康德:头顶达摩克利斯之剑

头顶达摩克里斯之剑&#xff0c;CXO龙头——药明康德的日子好过吗&#xff1f; 在行业下行周期、美国法案阴霾压力之下&#xff0c;药明康德交出今年上半年的成绩单&#xff0c;营收净利双双下滑&#xff0c;净利润更是同比减少20.2%。 看起来情况糟糕&#xff0c;但显然让被法…

【Rust光年纪】探索Rust语言中的音视频处理库:功能与应用概述

Rust语言下的多媒体利器&#xff1a;音视频处理库概览 前言 随着多媒体应用在现代软件开发中的广泛应用&#xff0c;针对音视频处理的Rust语言库不断涌现。本文将对数个用于Rust语言的音视频处理库进行概览与分析&#xff0c;旨在帮助开发人员选择最适合其项目需求的工具。 欢…

vmware ubuntu虚拟机网络联网配置

介绍vmware虚拟机配置基础网络环境&#xff0c;同时连接外网&#xff08;通过桥接模式&#xff09;&#xff0c;以及ubuntu下输入法等基础工具安装。 本文基于ubuntu22.04&#xff0c;前提虚拟机已经完成安装。本文更多是针对vmware虚拟机的设置&#xff0c;之前有一篇针对ubun…

JavaScript:void(0) 用法及常见问题解析

JavaScript:void(0) 用法及常见问题解析 javascript:void(0); 是一种在JavaScript和网页开发中经常使用的技术&#xff0c;尤其在处理链接的行为时。本文将深入探讨 javascript:void(0); 的用法&#xff0c;以及在使用过程中可能遇到的常见问题和解决方法。 什么是 javascrip…

Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接

目录 报错 解决办法 报错 在redis文件夹的路径栏中输入 cmd 命令&#xff0c;打开控制栏窗口界面 报错说是 redis-cli.exe打开就显示Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝&#xff0c;无法连接。 解决办法 &#xff08;1&#xff09;cmd…