YOLOV5学习日记:目标检测性能指标

本文介绍了检测任务中的关键概念,如混淆矩阵、精度(Precision)、召回率(Recall)、F1分数、IoU以及P-R曲线。同时关注检测速度,包括前传时间、每秒帧数(FPS)和浮点运算量(FLOPS),并引用了YOLOV5目标检测的Pytorch实现教程。
摘要由CSDN通过智能技术生成

一,检测精度

混淆矩阵介绍

True/False:表示预测的对错,下文使用T/F简写

Positive/Negative:表示预测的结果,下文使用P/N简写

使用例子来进行简单的说明:actual是实际是一个什么东西,predicted是我们使用一些方法预测出来的是什么东西,我们拿苹果举例。(个人理解)

TP指的是,现在实际上拥有一个苹果,我使用方法预测出来了苹果,这是正确的预测,而且结果是苹果。

FN指的是,现在实际上拥有一个苹果,使用方法预测出来了橘子(即不是一个苹果),这是错误的预测,并且结果是橘子。

FP指的是,现在实际上没有苹果,我使用方法预测出来了苹果,这就是错误的预测,预测结果是苹果。

TN指的是,现在实际上没有苹果,使用方法预测出来了橘子,这是正确的预测,因为我没有苹果,结果是橘子。(即不是苹果,预测结果也不是苹果)

即TP和TN都是正确的预测

Precision,Recall,F1score

精度Precision:查准率,看预测的准不准,看的是预测列

  precision=\frac{TP}{TP+FP}    (预测的对的结果除以全部预测的结果)

召回率Recall:查全率,评估找的全不全,看的是实际行

recall=\frac{TP}{TP+FN}    (预测是苹果的个数除以实际上苹果的总个数)

Accuracy:预测的正确部分占比

Accuracy=\frac{TP+TN}{TP+FP+FN+TN}

F1 score=\frac{2\times Precision\times Recall}{Precision+Recall}

IoU

IoU是指边界框的回归

在检测的时候我们会把目标物体框出来,那么我们预测的范围相较于实际的范围是否准确呢,就会使用到它。也理解为交并比。

以这个3×2的表格为实际范围,P为预测范围,一个表格代表面积为1的话,那IOU就是4/6,也就是他们俩相交的部分比上相并的部分。

PP
PP

IoU=\frac{Area\ of\ Overlap}{Area\ of\ Union}

如果IOU等于1,那么预测框和实际框就完全重叠。在实际操作时,我们可以给IOU设置一个阈值,比如说设置成0.5的话,当IOU>0.5,结果就为TP,IOU<0.5,结果就为FP。如果图片中有这个物体但是没有检测到,结果就是FN,TN是指图片所有没有预测到结果的部分,一般不常用。

P-R curve

P-R曲线就是精确率precision vs 召回率recall 曲线,以recall作为横坐标轴,precision作为纵坐标轴。

AP

衡量学习出来的模型在每个类别上的好坏(比如狗,猫这样的单个类别),可以视为在P-R曲线图中线下方的区域面积。(想要具体了解可以搜一下11点计算法和积分法)

MAP

衡量学习出来的模型在所有类别上的好坏,取所有类别上AP的平均值。

二,检测速度

前传耗时

从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(图像归一化),网络前传耗时,后处理耗时(非极大值抑制)

每秒帧数FPS

每秒钟能处理的图像数量

浮点运算量FLOPS

处理一张图像所需要的浮点运算数量,跟具体软硬件没有关系,可以公平地比较不同算法之间的检测速度。

参考视频:最适合新手入门的【YOLOV5目标实战】教程!基于Pytorch搭建YOLOV5目标检测平台!环境部署+项目实战(深度学习/计算机视觉)_哔哩哔哩_bilibili

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要计算 YOLOv5检测速度 FPS (每秒处理帧数),可以在模型推理时记录每个图像的开始和结束时间,并根据时间差计算 FPS。以下是计算检测速度 FPS 的代码示例: ```python import time import cv2 import torch from PIL import Image # 加载模型 model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True) # 读取测试图像 img_path = 'test.jpg' img = cv2.imread(img_path) # 将 OpenCV 图像转换为 PIL 图像 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) pil_img = Image.fromarray(img) # 检测图像并计算 FPS total_time = 0.0 num_frames = 100 for i in range(num_frames): start_time = time.time() results = model(pil_img, size=640) end_time = time.time() total_time += end_time - start_time fps = num_frames / total_time print(f'FPS: {fps:.2f}') ``` 在上面的代码中,我们使用 `time.time()` 函数来记录每个图像的开始和结束时间。我们将检测时间累加到 `total_time` 变量中,最后计算平均每秒处理帧数。请注意,此代码使用了 `size=640` 参数,这是图像的大小。如果输入图像的大小不同,则检测速度可能会有所不同。 ### 回答2: YOLOv5是一个用于目标检测的模型,其计算检测速度fps主要取决于以下几个因素。 首先,硬件设备是影响YOLOv5计算检测速度的重要因素之一。使用高性能GPU(如NVIDIA的GeForce RTX系列)可以加速YOLOv5的计算速度。较新的GPU具有更多的CUDA核心和更高的内存带宽,这对于大规模计算密集型任务如目标检测来说是非常关键的。 其次,YOLOv5的模型结构也会影响计算速度YOLOv5相比于YOLOv4或YOLOv3等模型,采用了较轻量级的网络结构,具有更少的参数和计算量,这使得YOLOv5在计算速度方面更加高效。同时,YOLOv5引入了一些技术在保持准确性的同时提高了计算速度,如特征整合和跨阶段连接等。 最后,输入图像的分辨率也会对YOLOv5的计算速度产生影响。较高分辨率的图像需要更多的计算资源来进行处理,从而降低了计算速度。因此,在实际应用中需要权衡图像分辨率和计算速度之间的平衡。 总结来说,YOLOv5的计算检测速度fps受到硬件设备、模型结构和输入图像分辨率等因素的共同影响。为了提高YOLOv5的计算速度,可以选择较高性能的GPU设备,采用轻量级的模型结构,并根据任务需求选择适当的图像分辨率。 ### 回答3: YOLOv5是一个通过深度学习实现目标检测的模型,可以用于识别图像中的多个目标。FPS是每秒处理图像的帧数,也是衡量模型运行速度的指标之一。 YOLOv5检测速度FPS是通过将模型应用于输入图像进行推理来计算的。首先,我们需要将输入图像传递给YOLOv5模型,并调用其推理函数。推理函数将图像作为输入,并返回检测到的目标的框和类别信息。 在推理函数调用之后,我们可以通过以下步骤来计算FPS: 1. 获取开始时间:在调用推理函数之前,使用系统时间函数记录开始时间。 2. 调用推理函数:将输入图像传递给YOLOv5模型的推理函数,执行目标检测操作。 3. 获取结束时间:在推理函数调用完成后,使用系统时间函数记录结束时间。 4. 计算FPS:将结束时间减去开始时间,得到模型执行的总时间。然后,将总时间除以图像数量(每秒处理的图像帧数)来计算FPS。 需要注意的是,要准确计算FPS,应该使用足够多的图像样本进行推理,并考虑到图像加载和预处理的时间。此外,还应根据计算设备的性能和模型的规模来考虑实际的FPS。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值