yolo系列中的一些评价指标说明

news2024/11/15 22:38:49

文章目录

  • 一. 混淆矩阵
  • 二. 准确度(Accuracy)
  • 三. 精确度(Precision)
  • 四. 召回率(Recall)
  • 五. F1-score
  • 六. P-R曲线
  • 七. AP
  • 八. mAP
  • 九. mAP@0.5
  • 十. mAP@[0.5:0.95]

一. 混淆矩阵

  • TP (True positives):被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
  • FP(False positives):被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
  • FN(False negatives):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
  • TN(True negatives):被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数;

在这里插入图片描述
对于yolo系列的样本,例如,coco数据集有80个类别,针对person类而言,person类别就是正例,其他79个类别就是负例;针对car类而言,car类别就是正例,其他79个类别就是负例。

二. 准确度(Accuracy)

A c c u r a c y = T P + T N T P + T N + F P + F N { Accuracy }=\frac{T P+T N}{T P+T N+F P+F N} Accuracy=TP+TN+FP+FNTP+TN
准确率的概念很好理解,就是分类正确的比例,是一个非常常用的评估指标。但是,准确率高并不代表分类算法就好,当各个类别的样本分布很不均匀时,即使准确率达到99%也没用。
举个例子,如果狗的样本数为99,猫的样本数都为1,那么,分类器只需要把结果全部置为狗,就可以获得99%的正确率。所以,只靠准确率来评价一个模型的优劣是不全面的。

三. 精确度(Precision)

P r e c i s i o n = T P T P + F P { Precision }=\frac{T P}{T P+F P} Precision=TP+FPTP
根据定义,Precision的分母是TPFP之和,TP是预测为正例,真实值也为正例的个数;FP是预测为正例,实际为负例的个数。
分析式子可知,Precision关心的是预测的正例,以及真实的正例和负例。当Precision越大时,FP越小,此时将其他类别预测为本类别的个数也就越少,可以理解为预测出的正例纯度越高。Precision越高,误检越少。

例如,在yolov5中,100个真实框,其中有50个框的类别为人,50个框的类别为车:

  • yolov5的预测结果把50个人中的47个预测为人,3个预测为车,把50个车中的42个预测为车,8个预测为人:
    在这里插入图片描述

P r e c i s i o n = T P T P + F P = 47 47 + 8 = 0.85 { Precision }=\frac{T P}{T P+F P} = \frac{47}{47+8} = 0.85 Precision=TP+FPTP=47+847=0.85

  • yolov5的预测结果把50个人中的47个预测为人,3个预测为车,把50个车中的50个预测为车,0个预测为人:
    在这里插入图片描述

P r e c i s i o n = T P T P + F P = 47 47 + 0 = 1 { Precision }=\frac{T P}{T P+F P} = \frac{47}{47+0} = 1 Precision=TP+FPTP=47+047=1

从上面的例子可以看出,精确度更关心的是,在识别的结果里,有多少的负例被识别成了正例,例如精确度为50%,则说明识别结果里,有一半的结果是将负例(其他类别)识别成了正例(本类别)

四. 召回率(Recall)

R e c a l l = T P T P + F N { Recall }=\frac{T P}{T P+F N} Recall=TP+FNTP
根据定义,Recall的分母时TPFN之和,TP是预测为正例,真实值也为正例的个数;FN是预测为负例,实际是正例的个数。
分析式子可知,Recall关心的是预测的正例和负例,以及真实的正例。当Recall越大时,FN越小,此时将正例预测为负例的个数越少,可以理解为把全部的正例挑出来的越多。Recall越高,漏检越少。

例如,在yolov5中,100个真实框,其中有50个框的类别为人,50个框的类别为车:

  • yolov5的预测结果把50个人中的47个预测为人,3个预测为车,把50个车中的42个预测为车,8个预测为人:
    在这里插入图片描述

R e c a l l = T P T P + F N = 47 47 + 3 = 0.94 { Recall }=\frac{T P}{T P+F N} = \frac{47}{47+3} = 0.94 Recall=TP+FNTP=47+347=0.94

  • yolov5的预测结果把50个人中的30个预测为人,20个预测为车,把50个车中的42个预测为车,8个预测为人:
    在这里插入图片描述
    R e c a l l = T P T P + F N = 30 30 + 20 = 0.6 { Recall }=\frac{T P}{T P+F N} = \frac{30}{30+20} = 0.6 Recall=TP+FNTP=30+2030=0.6

从上面的例子可以看出,召回率更关心的是,在识别的结果里,有多少的正例被识别成了负例,例如召回率为50%,则说明识别结果里,有一半的结果是将正例(本类别)识别成了负例(其他类别)

五. F1-score

F 1 S c o r e = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l { F1 Score }=\frac{2 * { Precision } * { Recall }}{{ Precision }+ { Recall }} F1Score=Precision+Recall2PrecisionRecall
精确率和召回率是一对矛盾的指标,因此需要放到一起综合考虑。F1-score是精确率和召回率的调和平均值。故:
F 1 = 2 P R P + R = 2 T P 2 T P + F P + F N \mathrm{F}_{1}=\frac{2 \mathrm{PR}}{\mathrm{P}+\mathrm{R}}=\frac{2 \mathrm{TP}}{2 \mathrm{TP}+\mathrm{FP}+\mathrm{FN}} F1=P+R2PR=2TP+FP+FN2TP

上式是当精确率和召回率的权值都为1的情况,也可以加上一个不为1的权值β :
F β = 1 1 + β 2 ( 1 P + β 2 R ) = ( 1 + β 2 ) P R β 2 P + R \mathrm{F}_{\beta}=\frac{1}{1+\beta^{2}}\left(\frac{1}{\mathrm{P}}+\frac{\beta^{2}}{\mathrm{R}}\right)=\frac{\left(1+\beta^{2}\right) \mathrm{PR}}{\beta^{2} \mathrm{P}+\mathrm{R}} Fβ=1+β21(P1+Rβ2)=β2P+R(1+β2)PR

六. P-R曲线

P-R曲线即为分别以Precision与Recall为坐标围成的曲线。不同颜色的线代表不同类别的PR曲线,蓝色的粗线条表示所有类别平均的PR曲线
P-R曲线与坐标轴围成的面积,可作为衡量一个模型预测结果的参考。若一个模型的P-R曲线完全将另一模型的P-R曲线包裹,那么这个模型预测结果一定优于另一模型。
在这里插入图片描述

七. AP

AP(average precision 平均精度):虽然名为平均精度,但AP的计算方法并不是计算Precision的平均值,而是计算每个类别的PR曲线与坐标轴围成的面积,可以用积分的方法进行计算。如果一个模型的AP越大,也就是说PR曲线与坐标轴围成的面积越大,Precision与Recall在整体上也相对较高。

八. mAP

mAP(mean of Average Precision) : 对所有类别的AP值求平均值。AP可以反映每个类别预测的准确率,mAP就是对所有类的AP求平均值,用于反映整个模型的准确率。mAP越大,PR曲线与坐标轴围城的面积越大。平时我们说的,某一目标检测算法的准确率达到了多少,这个准确率就泛指mAP。

九. mAP@0.5

在YOLO模型中,你会见到mAP@0.5这样的表现形式,这种形式表示在IOU阈值为0.5的情况下,mAP的值为多少。当预测框与标注框的IOU大于0.5时,就认为这个对象预测正确,在这个前提下再去计算mAP。一般来说,mAP@0.5即为评价YOLO模型的指标之一。

十. mAP@[0.5:0.95]

YOLO模型中还存在mAP@[0.5:0.95]这样一种表现形式,这形式是多个IOU阈值下的mAP,会在q区间[0.5,0.95]内,以0.05为步长,取10个IOU阈值,分别计算这10个IOU阈值下的mAP,再取平均值。mAP@[0.5:0.95]越大,表示预测框越精准,因为它去取到了更多IOU阈值大的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1252091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ModuleNotFoundError: No module named ‘torch_sparse‘

1、卸载 先把torch-geometric、torch-sparse、torch-scatter、torch-cluster、 torch-spline-conv全部卸载了 pip uninstall torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv 2.conda list确定PyTorch的版本,我的是1.10 3、确定下载地…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 3 Finding Similar Items

来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT It is therefore a pleasant surprise to learn of a family of techniques called locality-sensitive hashing, or LSH, that allows us to focus on pairs that are likely to be similar, without hav…

使用bard分析视频内容

11月21日的bard update 更新了分析视频的功能,使用方法如下: 1、打开bard网站。https://bard.google.com/ 2、点击插件。 3、点击YouTube中的 research a topic 选项。 4、输入需要分析的内容: Please analyze how many technologies are in…

五种多目标优化算法(MOGWO、MOLPB、MOJS、NSGA3、MOPSO)求解微电网多目标优化调度(MATLAB代码)

一、多目标优化算法简介 (1)多目标灰狼优化算法MOGWO 多目标应用:基于多目标灰狼优化算法MOGWO求解微电网多目标优化调度(MATLAB代码)-CSDN博客 (2)多目标学习者行为优化算法MOLPB 多目标学习…

win10+ vs2017用cmake编译geos3.5.1

参考教程:使用CMake编译Geos3.5.0_cmake geos-CSDN博客 注意事项: 报错:在使用cmake编译geos-3.5.1的时候,会出现报错: CMake Error at CMakeLists.txt:330 (include): include could not find load file GenerateSou…

map和set的底层结构 --- AVL树的实现(万字图文详解)

AVL树的实现 底层结构1. AVL的概念2. AVL树节点的定义3. AVL树的插入分析 4. AVL树的旋转4.1 新节点插入较高右子树的右侧---右右:左单旋4.2 新节点插入较高左子树的左侧---左左:右单旋4.3 新节点插入较高右子树的左侧---右左:先右单旋再左单…

postman和Jmeter做接口测试的区别(经验之谈)

接口测试的目的 API 测试作为集成测试的一部分,经过被测应用的接口(API)来确定是否在功能、可靠性、性能和安全方面达到预期的软件测试。因为 API 都没有 GUI 界面,API 测试都是在通信层进行的。 1.建立接口用例集 Postman功能…

redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】

redis数据结构介绍 redis是一个key-value的数据库,key一般是String类型,但是value的类型多种多样。 redis 通用命令 keys : 查看符合模板的所有key (keys partten ,匹配表达式支持一些特殊字符 * ?)del:删…

【可编程串行接口8251A】:用处、内部结构、各引脚的解释、工作方式

8251A的作用 微机内部的数据传送方式为并行方式。 若外设采用串行方式,则微机与外设之间需加串行接口。 串行接口基本功能就是:输入数据时,进行串/并转换;输出数据时,进行并/串转换。Intel8251A是一种可编程的通用同步…

【数据结构】树与二叉树(廿五):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…

基于单片机压力传感器MPX4115检测-报警系统proteus仿真+源程序

一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPX4115采集压力值、DS18B20采集温度值送到液晶1602显示。 3、按键设置报警值。 4、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /*********************************…

js中map和forEach的区别

forEach只是遍历数组的元素;map映射遍历,除了遍历数组的元素,还会返回一个新的数组。map本身是映射的意思。 若我们平时开发中只是遍历元素的话,用forEach,千万别用map。 注意: 他们俩若遍历的数组元素是基…

暴雷!Shopee佣金再度上调,入驻还需要保证金?—站斧浏览器

近段时间以来,Shopee陆陆续续地上调了多个站点地佣金费率、交易手续费以及FSS&CCB费率等,不仅如此,Shopee还官宣了入驻需要缴纳保证金!甚至已入驻商家未交保证金或会被冻结风险!这一些列操作让不少Shopee卖家有些措…

1、分布式锁实现原理与最佳实践(一)

在单体的应用开发场景中涉及并发同步时,大家往往采用Synchronized(同步)或同一个JVM内Lock机制来解决多线程间的同步问题。而在分布式集群工作的开发场景中,就需要一种更加高级的锁机制来处理跨机器的进程之间的数据同步问题&…

linux 账号管理实例一,stdin,passwd复习

需求 账号名称全名次要用户组是否可登录主机密码 myuser1 1st usermygroup1yespasswordmyuser22st usermygroup1yespasswordmyuser33st user无nopassword 第一:用户,和用户组创建,并分配有效用户组(初始用户组是passwd里…

Leetcode—45.跳跃游戏II【中等】

2023每日刷题&#xff08;四十&#xff09; Leetcode—45.跳跃游戏II 贪心法思想 实现代码 #define MAX(a, b) (a > b ? (a) : (b))int jump(int* nums, int numsSize) {int start 0;int end 1;int ans 0;int maxStride 0;while(end < numsSize) {maxStride 0;fo…

Mybatis-Plus 租户使用

Mybatis-Plus 租户使用 文章目录 Mybatis-Plus 租户使用一. 前言1.1 租户存在的意义1.2 租户框架 二. Mybatis-plus 租户2.1 租户处理器2.2 前置准备1. 依赖2. 表及数据准备3. 代码生成器 2.3 使用 三. 深入使用3.1 前言3.2 租户主体设值&#xff0c;取值3.3 部分表全量db操作3…

C++11【上】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb; 统一的列表初始化&#x1…

用AI工具3分钟整理并制作出一本书的思维导图

本期教大家快速用AI工具制作出精美的思维导图。 1.用ChatGPT总结出书本内容 首先打开ChatGPT&#xff0c;在对话框中输入你想要它生成的内容&#xff0c;并且要求他以markdown代码的格式输出&#xff0c;只需要几十秒的时间。整本书的框架思维导图就生成了&#xff0c;你还可以…

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记

Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记 一、Abstract二、引言三、相关工作实例感知通过类别名进行检索通过语言表达式的检索通过指代标注的检索 统一的视觉模型Unified Learning ParadigmsUnified Model Architectures 四、方法4.1 Pr…