目标检测常用评价指标详解

🎀个人主页: https://zhangxiaoshu.blog.csdn.net
📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️,如有错误敬请指正!
💕未来很长,值得我们全力奔赴更美好的生活!

前言

目标检测是计算机视觉领域中的一项重要任务,旨在从图像或视频中检测并定位图像中存在的目标物体,并识别它们属于哪个类别。而目标检测任务中的评价指标对于评估算法性能、比较不同方法以及指导模型优化具有重要性,因此本文对目标检测任务中的相关评价指标进行介绍。


文章目录

  • 前言
  • 一、IOU和GIOU
    • 1. IOU
    • 2. GIOU
  • 二、Precision、Recall和F1分数
    • 1. Precision
    • 2. Recall
    • 3. F1分数
  • 三、AP和mAP
    • 1. AP
    • 2.mAP
  • 总结


一、IOU和GIOU

1. IOU

IOU,即交并比(Intersection over Union),是目标检测中常用的一种评价指标,用于衡量检测框(bounding box)与真实目标框之间的重叠程度。它的计算方法如下:
在这里插入图片描述

假设有两个边界框,分别表示检测到的框(D)和真实目标框(G):

D:检测框,由左上角坐标 (x1, y1) 和右下角坐标 (x2, y2) 定义;

G:真实目标框,同样由左上角坐标 (x1’, y1’) 和右下角坐标 (x2’, y2’) 定义。

那么,交并比(IOU)的计算方法为:

  1. 计算两个边界框的交集面积(Intersection Area):

I n t e r s e c t i o n A r e a = m a x ( 0 , m i n ( x 2 , x 2 ′ ) − m a x ( x 1 , x 1 ′ ) ) × m a x ( 0 , m i n ( y 2 , y 2 ′ ) − m a x ( y 1 , y 1 ′ ) ) Intersection Area=max(0,min(x2,x2^{′})−max(x1,x1^{′} ))×max(0,min(y2,y2^{′} )−max(y1,y1^{′})) IntersectionArea=max(0,min(x2,x2)max(x1,x1))×max(0,min(y2,y2)max(y1,y1))

其中, m a x ( x 1 , x 1 ′ ) max(x1,x1^{′}) max(x1,x1) m a x ( y 1 , y 1 ′ ) max(y1,y1^{′}) max(y1,y1)分别表示两个矩形框的左上角的横坐标和纵坐标的较大值,即交集区域的左上角的坐标 m i n ( x 2 , x 2 ′ ) min(x2,x2^{′}) min(x2,x2) m i n ( y 2 , y 2 ′ ) min(y2,y2^{′}) min(y2,y2)分别表示两个矩形框的右下角的横坐标和纵坐标的较小值,即交集区域的右下角的坐标 m a x ( 0 , m i n ( x 2 , x 2 ′ ) − m a x ( x 1 , x 1 ′ ) ) max(0,min(x2,x2^{′})−max(x1,x1^{′} )) max(0,min(x2,x2)max(x1,x1)) m a x ( 0 , m i n ( y 2 , y 2 ′ ) − m a x ( y 1 , y 1 ′ ) ) max(0,min(y2,y2^{′} )−max(y1,y1^{′})) max(0,min(y2,y2)max(y1,y1))分别表示交集区域的宽度和高度。这两个值都必须大于零,否则表示两个矩形框没有交集。两个宽度和高度相乘即为交集区域的面积。

  1. 计算两个边界框的并集面积(Union Area):

U n i o n A r e a = A r e a ( D ) + A r e a ( G ) − I n t e r s e c t i o n A r e a Union Area=Area(D)+Area(G)−Intersection Area UnionArea=Area(D)+Area(G)IntersectionArea

其中, A r e a ( D ) Area(D) Area(D) A r e a ( G ) Area(G) Area(G)分别表示检测框和真是框的面积,通过将两个矩形框的面积相加,并减去它们的交集面积,得到它们的并集面积。这是因为两个矩形框的并集等于它们各自的面积之和减去它们的交集面积。

  1. 最后,将交集面积除以并集面积,即可得到 IOU 值:

I O U = U n i o n A r e a I n t e r s e c t i o n A r e IOU= \frac{ Union Area}{Intersection Are} IOU=IntersectionAreUnionArea

  • IOU 值的范围在 0 到 1 之间,值越大表示检测框与真实目标框的重叠程度越高,检测效果越好。通常,IOU 值大于等于某个阈值(如 0.5 或 0.75)的检测框会被视为正确检测到了真实目标。

2. GIOU

GIOU(Generalized Intersection over Union)是一种改进的交并比(IOU)衡量方法,它考虑了检测框和真实目标框之间的包围框的大小和位置关系。GIOU 综合了 IOU 计算中对交集和并集的考虑,并添加了一个关于包围框的正则化项,使得 GIOU 更好地反映了检测框与真实目标框之间的重叠程度。

GIOU 的计算方法如下:

  1. 计算两个边界框的交集面积(Intersection Area)和并集面积(Union Area),与 IOU 计算方法相同。
  2. 计算两个边界框的包围框(Bounding Box):

令 B min ⁡ = min ⁡ ( x 1 , x 1 ′ ) , min ⁡ ( y 1 , y 1 ′ ) , max ⁡ ( x 2 , x 2 ′ ) , max ⁡ ( y 2 , y 2 ′ ) 令B_{\min }=\min \left(x 1, x 1^{\prime}\right), \min \left(y 1, y 1^{\prime}\right), \max \left(x 2, x 2^{\prime}\right), \max \left(y 2, y 2^{\prime}\right) Bmin=min(x1,x1),min(y1,y1),max(x2,x2),max(y2,y2)

令 B max ⁡ = max ⁡ ( x 1 , x 1 ′ ) , max ⁡ ( y 1 , y 1 ′ ) , min ⁡ ( x 2 , x 2 ′ ) , min ⁡ ( y 2 , y 2 ′ ) 令B_{\max }=\max \left(x 1, x 1^{\prime}\right), \max \left(y 1, y 1^{\prime}\right), \min \left(x 2, x 2^{\prime}\right), \min \left(y 2, y 2^{\prime}\right) Bmax=max(x1,x1),max(y1,y1),min(x2,x2),min(y2,y2)

  1. 计算包围框 B min ⁡ B_{\min } Bmin B max ⁡ B_{\max } Bmax的面积并计算包围框的面积差(Bounding Box Area Difference):

A B B D = A r e a ( B min ⁡ ) − A r e a ( B max ⁡ ) A_{BBD} = Area(B_{\min }) -Area(B_{\max }) ABBD=Area(Bmin)Area(Bmax)

  1. 最后,使用交并比和包围框面积差来计算 GIOU:

G I O U = I O U − A B B D A r e a ( B min ⁡ ) GIOU=IOU- \frac{ A_{BBD} }{Area(B_{\min })} GIOU=IOUArea(Bmin)ABBD

  • GIOU 的值范围也在 0 到 1 之间,与 IOU 相同。与 IOU 不同的是,GIOU 考虑了检测框和真实目标框之间的包围框,因此更全面地反映了两个边界框之间的重叠情况。
    该处使用的url网络请求的数据。

二、Precision、Recall和F1分数

一些定义:

  • 真正例(True Positives,TP):检测框与真实目标框的 IOU 大于等于阈值的检测框。
  • 假正例(False Positives,FP):检测框与真实目标框的 IOU 小于阈值的检测框,或者未能与任何真实目标框匹配的检测框。
  • 假反例(False Negatives,FN):未被检测到的真实目标框。

1. Precision

在目标检测任务中,准确率通常指的是检测框的准确率,即在所有检测到的框中,与真实目标框具有足够高的重叠度(例如IOU大于等于某个阈值)的检测框所占的比例。以下是目标检测中准确率的计算公式:

P r e c i s i o n = T P T P + F P Precision=\frac{ TP}{TP+ FP} Precision=TP+FPTP

准确率表示检测框中真实目标框的比例,即被检测到的目标中确实是真实目标的比例。一些时候会使用Pr@0.5、Pr@0.6、Pr@0.7等来表示模型在不同的IOU阈值下的准确率

2. Recall

在目标检测任务中,召回率(Recall)是另一个重要的评估指标,用于衡量检测器检测到的目标数量占所有真实目标数量的比例。具体计算公式为:

P r e c i s i o n = T P T P + F N Precision=\frac{ TP}{TP+ FN} Precision=TP+FNTP

召回率表示所有真实目标中被正确检测到的比例。

  • 在实际应用中,通常希望召回率尽可能高,以确保尽可能多的真实目标被检测到,即降低漏检率。然而,增加召回率可能会导致误报率增加,即错误检测的目标数量也增加,因此在召回率和准确率之间需要进行权衡
  • 此外,需要根据具体的需求和场景选择合适的 IOU 阈值来计算准确率和召回率。通常情况下,较高的 IOU 阈值可以提高准确率,但可能会降低召回率,因为更严格的匹配条件会导致一些真实目标框未被检测到。相反,较低的 IOU 阈值可以提高召回率,但可能会降低准确率,因为更宽松的匹配条件会导致更多的错误检测。
    在这里插入图片描述

3. F1分数

在目标检测任务中,F1 分数是精确率和召回率的调和平均值,F1 分数综合了精确率(Precision)和召回率(Recall),用于综合衡量模型的准确性和全面性。计算公式为:

F 1 = 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=\frac{2\times Precision \times Recall}{Precision+Recall} F1=Precision+Recall2×Precision×Recall

F1 分数的取值范围在 0 到 1 之间,数值越高表示模型的性能越好。F1 分数是一个综合性的评价指标,它能够同时考虑到模型的准确性和全面性,因此在目标检测任务中得到了广泛的应用。

三、AP和mAP

1. AP

目标检测中的AP(Average Precision)是一种用于衡量模型性能的重要指标,它综合考虑了模型在不同类别上的检测准确率和召回率。AP的计算方法如下:

  1. 准备数据:首先,需要对模型的检测结果进行评估。每个检测结果通常包括检测框的坐标信息、置信度分数以及所属类别。

  2. 对检测结果排序:根据检测框的置信度分数,按照降序对所有检测结果进行排序。

  3. 计算精度和召回率:对于每个类别,根据排序后的检测结果,逐步降低置信度阈值,计算对应的精度(Precision)和召回率(Recall)。

    • 精度(Precision):在当前置信度阈值下,被正确检测为正例的检测结果数量与总的检测结果数量之比。
    • 召回率(Recall):在当前置信度阈值下,被正确检测为正例的检测结果数量与总的真实正例数量之比。
  4. 插值:对于每个类别的精度-召回率曲线,可以使用插值方法对精度值进行平滑处理,以减少曲线的抖动。

  5. 计算AP:计算精度-召回率曲线下的面积,即为该类别的平均精度(AP)。通常使用的方法是积分(如下式所示)或离散求和。

A P = ∫ 0 1 P ( R ) d R A P= \int_{0}^{1} P(R) d R AP=01P(R)dR

2.mAP

在目标检测中,mAP(mean Average Precision)是一种用于衡量模型在多个类别上的检测性能的平均精度。mAP的计算方法如下:

  1. 计算每个类别的AP:对于数据集中的每个类别,都计算其对应的AP,即该类别的平均精度。AP的计算方法已在前面提到过,通常通过计算精度-召回率曲线下的面积来得到。

2.计算mAP:将所有类别的AP进行平均,即可得到模型在整个数据集上的平均精度。

m A P = 1 C ∑ i = 1 C A P = 1 C ∑ i = 1 C ∫ 0 1 P i ( R i ) d R i m A P=\frac{1}{C} \sum_{i=1}^{C} A P=\frac{1}{C} \sum_{i=1}^{C} \int_{0}^{1} P_{i}\left(R_{i}\right) d R_{i} mAP=C1i=1CAP=C1i=1C01Pi(Ri)dRi


总结

  • IOU(Intersection over Union):是目标检测任务中常用的评价指标,用于衡量检测框与真实目标框之间的重叠程度。计算方法为目标检测框与真实目标框的交集面积除以它们的并集面积。

  • GIOU(Generalized Intersection over Union):是 IOU 的一种改进版本,考虑了检测框和真实目标框的位置关系。除了考虑交集和并集面积外,还考虑了两个框的外接矩形框之间的距离。这样可以更准确地衡量检测框与真实目标框的重叠情况。

  • 精确率(Precision):是一个用于衡量分类模型或目标检测模型准确性的指标。它表示模型正确预测为正例的样本数量与所有被预测为正例的样本数量之比。

  • 召回率(Recall):是一个用于衡量分类模型或目标检测模型的全面性的指标。它表示模型正确预测为正例的样本数量与所有真实正例的样本数量之比。

  • F1分数:F1 分数是精确率和召回率的调和平均值,用于综合衡量模型的准确性和全面性。

  • AP(Average Precision):是目标检测中常用的一个评价指标,用于衡量模型在单个类别上的检测准确度。它是精确率-召回率曲线下的面积,表示模型在不同置信度阈值下的平均精度。

  • mAP(mean Average Precision):是多个类别的平均精度,是目标检测任务中常用的评价指标之一。mAP考虑了模型在所有类别上的检测准确度,是衡量模型整体性能的重要指标。

文中图片大多来自论文和网络,如有侵权,联系删除,文中有不对的地方欢迎指正、补充。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字孪生—物联网技术

数字孪生涉及到诸多技术领域,物联网技术在数据孪生项目中具有重要的应用价值,主要体现在以下几个方面: 1.数据采集和实时监测:物联网技术可以用于实时采集各种设备、传感器和设施的数据,包括温度、湿度、压力、振动等…

CMakeLists.txt语法规则:foreach循环的关键字

一. 简介 前一篇文章学习了 CMakeLists.txt语法中 foreach循环的基本用法。文章如下: CMakeLists.txt语法规则:foreach 循环基本用法-CSDN博客 本文继续 CMakeLists.txt语法中 foreach循环语句,主要学习 foreach循环中的关键字。 二. CM…

【OceanBase诊断调优】—— SQL 执行报错而不能计入 SQL_AUDIT 的情况

通常,执行成果的 SQL 都会计入 SQL_AUDIT 中,而执行报错的 SQL 则需要依据其执行报错的阶段来决定是否计入 SQL_AUDIT 中。 在 OceanBase 数据库中,SQL 请求的执行流程如图所示。 如果 SQL 在进入 Executor 阶段前发生报错,则该 …

java-Spring-Lombok-讲解-(一文一言)创伤是成熟的途径

高手都在孤独前进-致敬我们不悔的青春 我打算每篇文章下找一下文言警句-说不那天会用上😁😁😁😁 每篇一言 创伤是成熟的途径 希望经历过创伤的人,能更好享受当下, 爱自己胜过爱别人呀 目录 🎻Lombok简介 &#…

KIE关键信息抽取——SDMG-R

https://arxiv.org/pdf/2103.14470https://arxiv.org/pdf/2103.14470 1.概述 背景:传统的关键信息提取方法依赖于模板匹配,这使它们难以泛化到未见过的模板,且对文本识别错误不够鲁棒。SDMG-R方法:提出一种端到端的双模态图推理方法,通过构建双模态图(视觉和文本特征),…

Celery(分布式任务队列)入门学习笔记

Celery 的简单介绍 用 Celery 官方的介绍:它是一个分布式任务队列; 简单,灵活,可靠的处理大量消息的分布式系统; 它专注于实时处理,并支持任务调度。 Celery 如果使用 RabbitMQ 作为消息系统的话,整个应用体系就是下…

GStreamer日志调试笔记

1、查询所有分类 #gst-launch-1.0 --gst-debug-help 2、查询videotestsrc的日志 #gst-launch-1.0 --gst-debug-help | findstr videotestsrc 结果: 3、使用--gst-debug设置相应日志类型的相应等级,越大显示日志越多,排查内存泄露可以设置为9 …

【iOS】多线程

文章目录 前言一、多线程的选择方案二、GCD和NSOperation的比较二、多线程相关概念任务队列 三、死锁情况主队列加同步任务 四、任务队列组合主队列异步并发队列异步 前言 这两天将iOS的多线程的使用都看了一遍,iOS的多线程方案有许多,本篇博客主要总结…

打开深度学习的锁:(0)什么是神经网络?

PS:每每温故必而知新 什么是神经网络? 一、一个单神经元的神经网络二、多个单神经元的神经网络三、到底什么是机器学习?(重点)1:什么是机器学习的训练?2:什么是模型?权重…

python数据分析所需要的语法基础

Python语言基础——语法基础 前言语法基础变量标识符数据类型输入与输出代码缩进与注释 总结 前言 对于学过C语言的人来说,python其实很简单。学过一种语言,学习另一种语言,很显然的能感觉到,语言大体上都是相通的。当然&#xf…

【docker】常用的把springboot打包为docker镜像的maven插件

Spring Boot Maven Plugin: Spring Boot 自带的 Maven 插件 (spring-boot-maven-plugin) 支持直接生成 Docker 镜像。通过配置,可以在 Maven 构建过程中自动构建 Docker 镜像,而无需单独编写 Dockerfile。这种方法简化了将应用打包为 Docker 镜像的过程。…

武汉理工大学python123实验——流程控制结构

1.百分制成绩转换五分制#1707 n int(input())if n>90:print(A) elif n>80:print(B) elif n>70:print(C) elif n>60:print(D) else:print(E) 2.角古猜想#73963 n eval(input()) if n<0:print(ERROR) elif . in str(n):print(ERROR) else:print(n,end" …

Qt扫盲-Qt D-Bus概述

Qt D-Bus概述 一、概述二、总线三、相关概念1. 消息2. 服务名称3. 对象的路径4. 接口5. 备忘单 四、调试五、使用Qt D-Bus 适配器1. 在 D-Bus 适配器中声明槽函数1. 异步槽2. 只输入槽3. 输入输出槽4. 自动回复5. 延迟回复 一、概述 D-Bus是一种进程间通信(IPC)和远程过程调用…

Java面试题:多线程2

如何停止正在运行的线程 1,使用退出标志,使线程正常退出(run方法中循环对退出标志进行判断) 2,使用stop()方法强行终止(不推荐) 3,调用interrupt()方法中断线程 打断阻塞线程(sleep,wait,join),线程会抛出InterruptedException异常 打断正常的线程,可以根据打断状态来标记…

继承知识及扩展(C++)

1. 继承是什么&#xff1f; 继承是面向对象编程的三大特征之一&#xff0c;也是代码复用的手段之一。之前我们在很多的地方尝试函数的复用&#xff0c;而继承是为了类的复用提供了很好的方式。 &#xff08;1&#xff09;继承的代码怎么写 在一个类后面使用 &#xff1a;继承方…

知识图谱融入RAG模型:LinkedIn重塑智能客服新范式【附LeCun哈佛演讲PPT】

原文&#xff1a;Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering 一、研究背景与问题 在客服领域,快速准确地匹配用户问题与历史工单,是提供优质回答的关键。传统的检索增强生成(Retrieval-Augmented Generation, RAG)方法虽…

IDEA-控制台日志过滤插件 - Grep Console

IDEA-控制台日志过滤插件 - Grep Console 当idea控制台日志较多时&#xff0c;为了方便查找关键字&#xff0c;使用Grep Console插件&#xff0c;指定控制台中关键字高亮显示 1.安装 2.使用 2.1 高亮显示 控制台中指定颜色高亮显示指定字符 效果: 重启项目后还是会高亮显示 取…

【软考高项】三十三、质量管理

一、管理基础 质量定义 国际标准&#xff1a;反映实体满足主体明确和隐含需求的能力的特性总和。 国家标准&#xff1a;一组固有特性满足要求的程度。固有特性是指在某事或某物中本来就有的&#xff0c;尤其是那种永久的可区分的特征。 ➢ 对产品来说&#xff0c;例如…

缓存菜品操作

一&#xff1a;问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 二&#xff1a;实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; 每个分…

k8s保持pod健康

存活探针 Kubemetes 可以通过存活探针 (liveness probe) 检查容器是否还在运行。可以为 pod 中的每个容器单独指定存活探针。如果探测失败&#xff0c;Kubemetes 将定期执行探针并重新启动容器。 Kubemetes 有以下三种探测容器的机制&#xff1a; HTTP GET 探针对容器的 IP 地…
最新文章