首页 > 其他分享 >目标检测中的“神奇指南”——平均精度(mAP)

目标检测中的“神奇指南”——平均精度(mAP)

时间:2023-04-07 15:45:49浏览次数:40  
标签:指南 mAP 检测 模型 目标 AP 性能 神奇

想象一下,你是一名私家侦探,接到一项神秘的任务,需要在一群人中找出一个罪犯。你必须仔细观察每个人的特征,比如身高、体型、发型、服装等等,从而识别出目标。

这听起来似乎很简单,但是当人群中人头攒动、各种因素干扰时,你会发现自己很难进行准确的识别。

目标检测任务也是如此。只不过,我们的“人群”是一张张复杂的图像,而我们要寻找的目标则是各种各样的物体。这时,平均精度(mAP)就像是我们的“神奇指南”,可以帮助我们从杂乱无章的图像中,准确地找到目标。

提到mAP,不得不介绍一个名词——精度(AP),想得到mAP,需先确定AP值。

AP的计算原理是将所有物体按照置信度从高到低排列,然后逐个计算它们的准确率和召回率,最终得出的相应值,该比值可以反映出目标检测算法的整体性能和准确度。

如果一个算法的AP很高,意味着它在目标检测任务中表现出色,可以得到更好的效果。

当然,AP并不是万能的。它仅仅是目标检测中的一项指标,还需要和其他指标一起综合考虑,才能真正地评估一个目标检测算法的性能。

下面,本文将围绕AP概念,简要介绍常见的模型评价语。

 

一.什么是AP、mAP?

1. 相关概念

AP值的计算需要一系列指标做铺垫,其中涉及的名词如下:

(1)IOU:IOU是一个比值,是预测框与实际框的相交部分与两者全部面积的比值;

(2)TP:被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;

(3)FP:被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;

(4)FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;

(5)TN:被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

 

 

2. 计算公式

目标检测任务中,需要两个指标衡量模型的AP值,即精确率(P)与召回率(R)。TP与FP的分类标准为IOU,P与R的分类标准为置信度。

精确率的计算公式为precision = TP/(TP+FP),即模型给出的所有正样本中,正确预测的结果所占比例。

召回率的计算公式为recal=TP / (TP + FN),即模型给出的所有预测结果中,正确预测的结果所占比例。

 

 

3. P-R曲线

P-R曲线是所有precision-recall点连成的曲线,用于计算AP值。通常来讲,P在纵轴,R在横轴,P值越高,R值越低。

 

 

AP是PR曲线下的面积,它是精度和召回率的函数,取值范围在0到1之间。AP越高,代表模型越好。如果PR曲线下的面积为1,则代表模型的性能最佳。

 

 

得到AP值后,mAP的计算就变得很简单了,就是取所有 AP 的平均值。

 

二.为什么选择mAP?

在解释这点之前,先来分析下目标检测的特性。

1. 目标检测问题

目标检测任务是对图像中的目标位置物体进行分类,是计算机视觉领域的核心技术之一。

该技术通常是在一组固定类上训练,所以模型只能定位和分类图像中已有的类别,这正是其相对不同且有趣的地方。

模型不仅要识别物体,也要精准的找到物体位置。举个例子,即使你的目标检测器检测到一张图片中有猫,但是如果你找不到这只猫在图片中的具体位置,那么这个检测器便没有任何用处。

对整个任务来说,每张图片都可能包含不同类别的不同目标。因此,精确率,这个图像分类问题中常用的标准评价度量,并不能直接用在这里,需要mAP作为目标检测算法模型的重要衡量指标。

2. mAP的用处

mAP作为预测目标位置及类别类算法的性能度量指标,对评估目标定位模型、目标检测模型以及实例分割模型非常有用。

 

 

如上文所述,IOU是预测边界框和参考边界框的交集和并集之间的比率,利用这个比值,可以知晓每个检测结果的正确性。

将IOU与阈值进行比较,最常用的阈值是0.5,如果 IoU > 0.5,那么认为这是一个正确检测,否则认为这是一错误的检测。

 

 

以此类推,计算出所有检测框的IOU值,求解其P与R,最终得出mAP值,利用这些平均精度值,便可以轻松地判断模型对任何给定类别的性能。

 

三.影响mAP值的因素分析与探讨

如果说AP 衡量的是训练好的模型在每个类别上的好坏,那么mAP 衡量的则是模型在所有类别上的好坏,

1. mAP对模型质量的影响

mAP不仅在目标检测任务中扮演着重要的角色,同时也会对模型的整体表现产生深远影响,例如模型的准确性、稳定性、普适性与优化等方面的影响。

1)模型的准确性:较高的mAP意味着模型能够更准确地检测出目标物体,提高了模型的准确性。

2)模型的稳定性:较高的mAP能够帮助评估模型在不同场景和数据集下的稳定性,从而提高模型的泛化能力和鲁棒性。

3)模型的普适性一些高精度要求的场景,如自动驾驶,需要更高的mAP来保证安全性。而在一些相对低要求的场景,如智能安防,mAP可以适度降低,以换取更高的实时性和效率。

4)模型的优化:mAP也是检验模型性能的重要指标之一,通过对mAP的监控和分析,可以发现模型的不足之处,针对性地进行模型优化和改进。

那么,mAP值的决定因素有哪些?

2. mAP值受哪些因素控制?

mAP值是评估目标检测算法性能的重要指标之一,它可以受到多个因素的影响。以下是常见的六种影响因素:

1)目标类别数量:目标类别数量对mAP值有着显著影响,当数量较少时,模型通常可以获得较高的mAP值,而当数量增加时,模型的mAP值可能会降低。

2)目标大小:较小的目标通常更难以被准确检测,因此模型在处理小目标时会出现性能下降的情况,从而导致mAP值的下降。

3)目标遮挡程度:目标被其他物体遮挡的程度也会影响mAP值的大小。如果目标被遮挡的程度较大,模型就更难以准确地检测出目标。

4)数据集质量:数据集对模型的训练和测试有着重要影响,如果数据集的质量和多样性较差,会直接影响模型的泛化能力和检测准确性,导致mAP值下降。

5)模型结构与参数:模型结构和参数设置也会影响mAP值,如果模型结构不合理或参数设置不当,便会影响模型的检测性能,从而影响mAP值的大小。

5)检测阈值:在目标检测中,设置检测阈值可以调整模型的召回率和准确率,从而影响的mAP值的变化。

以上五点,便是影响mAP的常见因素,在建立模型时需着重注意这些因素,以提高模型的预测准确性。

 

总结

掌握评估机器学习模型的能力与掌握训练模型一样重要。本文主要阐述了mAP对目标检测算法性能检测的重要性,作为目标检测的常用评估指标,mAP可以衡量不同阈值下的模型性能表现、帮助调整模型参数、优化模型表现等。

不仅如此,mAP的计算方法难度适中,易于理解和使用。因此,在进行目标检测算法性能评估时,应尽可能地提高对mAP的理解和应用能力,以便更好地评估模型性能,进一步提高模型的精度和实用性。

 

标签:指南,mAP,检测,模型,目标,AP,性能,神奇
From: https://www.cnblogs.com/manfukeji/p/17296379.html

相关文章

  • Maya 初学者:Maya 3D 动画完整指南
    Maya初学者:Maya3D动画完整指南了解在AutodeskMaya中制作3D动画所需的一切:建模、纹理、照明、索具、动画、动力学课程英文名:MayaforBeginnersCompleteGuideto3DAnimationinMaya此视频教程共22.5GB,中英双语字幕,画质清晰无水印,源码附件全课程地址:https://xuesh......
  • sqlmap基本使用教程
    转载于https://blog.csdn.net/m0_46230316/article/details/105290227如有侵权,联系删除,感谢......
  • ONLYOFFICE 安装对接指南
    ONLYOFFICE文档是一个在线办公套件,包括文本文档、电子表格和演示文稿的查看器和编辑器,与包括.docx、.xlsx、.pptx在内的OfficeOpenXML格式完全兼容,并支持实时协作编辑。为了安装这系统,也踩了不少坑,以下将我的安装过程分享下Docker安装添加docker下载仓库sudoyum-conf......
  • jackson序列化报 Null key for a Map not allowed in JSON (use a converting NullKey
    报错:"requestParam":null,"errorMsg":"org.springframework.http.converter.HttpMessageNotWritableException:CouldnotwriteJSON:NullkeyforaMapnotallowedinJSON(useaconvertingNullKeySerializer?);nestedexceptionisc......
  • C 牛哥与AI (双hash,map处理 )2023年“华为”杯广东工业大学第十七届程序设计竞赛
     思路:从时间复杂度入手,就可以考虑暴力枚举每一种情况,然后利用数据结构去保存这些信息如何保存捏?自己想的是利用map<bitset>去做,真sb直接利用双hash,转化为数值然后map存就彳于了, 记住hash并不是只有字符串才用,01序列甚至图上,或者其他很多抽象的东西要去转......
  • 【C#】Npoi.Mapper 具体操作方法
    前言    我们在日常开发中对Excel的操作可能会比较频繁,好多功能都会涉及到Excel的操作。在.NetCore中大家可能使用Npoi比较多,这款软件功能也十分强大,而且接近原始编程。但是直接使用Npoi大部分时候我们可能都会自己封装一下,毕竟根据二八原则,我们百分之八十的场景可能都是进......
  • HashMap排序方法,少见的toArray转为Array 泛型数组 排序,而非ArrayList
        HashMap<String,Integer>hm=newHashMap<>();    hm.put("a",1);    hm.put("c",2);    hm.put("b",3);         Set<Entry<String,Integer>>entrySet=hm.entrySet();      ......
  • map和bean转换工具类
    bean转Map:Map转bean:完整代码:点击查看代码importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.lang.reflect.Field;importjava.lang.reflect.Modifier;importjava.util.HashMap;importjava.util.Map;/***map转bean*@authorSappy*@......
  • map的两种遍历方式是什么
    学了Map后,我们都知道Map有两种遍历方式,keySet遍历个entrySet遍历,这里简单介绍一下这两种遍历方式。首先对于一个Map来说,右key列和value列组成,想遍历这个Map,有两种选择第一种keyset的想法是先得到其key列,使用Map的get(key)方法来获取其对应的值,如下图:对应的代码是:第二种思......
  • kubernetes ConfigMap只挂载一个文件
    1.概述挂载一整个目录的方式详见<<kubernetesConfigMap的使用>>这里特别说明如何挂载目录和挂载一个文件详见官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-pod-configmap/2.环境2.1.配置文件目录/var/app/mage-go-device/conf/......