目标检测的目的_小目标检测问题

目标检测的目的_小目标检测问题我们在评价一个目标检测算法的“好坏”程度的时候,往往采用的是pascalvoc2012的评价标准mAP。网上一些资料博客参差不齐,缺乏直观易懂的正确说明。希望这篇博文能够给大家一点帮助。mAP历史目标检测的mAP计算方式在2010年的voc上发生过变化,目前基本都是采用新的mAP评价标准。(我有个小疑问就是明明是2010年修改的,但是貌似现在大家都称这种计算方式为2012)所…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

我们在评价一个目标检测算法的“好坏”程度的时候,往往采用的是pascal voc 2012的评价标准mAP。

网上一些资料博客参差不齐,缺乏直观易懂的正确说明。希望这篇博文能够给大家一点帮助。

 

mAP历史

目标检测的mAP计算方式在2010年的voc上发生过变化,目前基本都是采用新的mAP评价标准。(我有个小疑问就是明明是2010年修改的,但是貌似现在大家都称这种计算方式为2012)所以你查到的有一些博客上记录的是之前的mAP评价标准。

但是,知乎上有一个回答,是完全错误的。而且很多评论已经指出来了,但是回答者一直没有修改。这个回答也曾经误导过我。目标检测中的mAP是什么含义? – 许博雅的回答 – 知乎 https://www.zhihu.com/question/53405779/answer/382974995

下面也放出官方论文里的定义,但是我光看这个感觉还是有点抽象

The computation of the average precision (AP) measure was changed in 2010 to improve precision and ability to measure differences between methods with low AP. It is computed as follows:

1. Compute a version of the measured precision/recall curve with precision monotonically decreasing, by setting the precision for recall r to the maximum precision obtained for any recall r′ ≥ r.

2. Compute the AP as the area under this curve by numerical integration. No approximation is involved since the curve is piecewise constant.

Note that prior to 2010 the AP is computed by sampling the monotonically

decreasing curve at a fixed set of uniformly-spaced recall values 0, 0.1, 0.2, . . . , 1. By contrast, VOC2010–2012 effectively samples the curve at all unique recall values.

准备知识(为新人准备)

1.IOU的概念

IOU的概念应该比较简单,就是衡量监测框和标签框的重合程度。一张图就能解释,做目标检测小伙伴应该都清楚,我这里不赘述。

目标检测的目的_小目标检测问题

 

2.TP TN FP FN的概念

T或者N代表的是该样本是否被分类分对,P或者N代表的是该样本被分为什么

TP(True Positives)意思我们倒着来翻译就是“被分为正样本,并且分对了”,TN(True Negatives)意思是“被分为负样本,而且分对了”,FP(False Positives)意思是“被分为正样本,但是分错了”,FN(False Negatives)意思是“被分为负样本,但是分错了”。

按下图来解释,左半矩形是正样本,右半矩形是负样本。一个2分类器,在图上画了个圆,分类器认为圆内是正样本,圆外是负样本。那么左半圆分类器认为是正样本,同时它确实是正样本,那么就是“被分为正样本,并且分对了”即TP,左半矩形扣除左半圆的部分就是分类器认为它是负样本,但是它本身却是正样本,就是“被分为负样本,但是分错了”即FN。右半圆分类器认为它是正样本,但是本身却是负样本,那么就是“被分为正样本,但是分错了”即FP。右半矩形扣除右半圆的部分就是分类器认为它是负样本,同时它本身确实是负样本,那么就是“被分为负样本,而且分对了”即TN

目标检测的目的_小目标检测问题

 

3.Precision(精度)和Recall(召回率)的概念

有了上面TP TN FP FN的概念,这个Precision和Recall的概念一张图就能说明。

目标检测的目的_小目标检测问题

Precision =\frac{TP}{TP+FP},翻译成中文就是“分类器认为是正类并且确实是正类的部分占所有分类器认为是正类的比例”,衡量的是一个分类器分出来的正类的确是正类的概率。两种极端情况就是,如果精度是100%,就代表所有分类器分出来的正类确实都是正类。如果精度是0%,就代表分类器分出来的正类没一个是正类。光是精度还不能衡量分类器的好坏程度,比如50个正样本和50个负样本,我的分类器把49个正样本和50个负样本都分为负样本,剩下一个正样本分为正样本,这样我的精度也是100%,但是傻子也知道这个分类器很垃圾。

Recall =\frac{TP}{TP+FN},翻译成中文就是“分类器认为是正类并且确实是正类的部分占所有确实是正类的比例”,衡量的是一个分类能把所有的正类都找出来的能力。两种极端情况,如果召回率是100%,就代表所有的正类都被分类器分为正类。如果召回率是0%,就代表没一个正类被分为正类。

 

举例计算mAP

有3张图如下,要求算法找出face。蓝色框代表标签label,绿色框代表算法给出的结果pre,旁边的红色小字代表置信度。设定第一张图的检出框叫pre1,第一张的标签框叫label1。第二张、第三张同理。

目标检测的目的_小目标检测问题目标检测的目的_小目标检测问题目标检测的目的_小目标检测问题

1.根据IOU计算TP,FP

首先我们计算每张图的pre和label的IOU,根据IOU是否大于0.5来判断该pre是属于TP还是属于FP。显而易见,pre1是TP,pre2是FP,pre3是TP。

 

2.排序

根据每个pre的置信度进行从高到低排序,这里pre1、pre2、pre3置信度刚好就是从高到低。

3.在不同置信度阈值下获得Precision和Recall

首先,设置阈值为0.9,无视所有小于0.9的pre。那么检测器检出的所有框pre即TP+FP=1,并且pre1是TP,那么Precision=1/1。因为所有的label=3,所以Recall=1/3。这样就得到一组P、R值。

然后,设置阈值为0.8,无视所有小于0.8的pre。那么检测器检出的所有框pre即TP+FP=2,因为pre1是TP,pre2是FP,那么Precision=1/2=0.5。因为所有的label=3,所以Recall=1/3=0.33。这样就又得到一组P、R值。

再然后,设置阈值为0.7,无视所有小于0.7的pre。那么检测器检出的所有框pre即TP+FP=3,因为pre1是TP,pre2是FP,pre3是TP,那么Precision=2/3=0.67。因为所有的label=3,所以Recall=2/3=0.67。这样就又得到一组P、R值。

4.绘制PR曲线并计算AP值

根据上面3组PR值绘制PR曲线如下。然后每个“峰值点”往左画一条线段直到与上一个峰值点的垂直线相交。这样画出来的红色线段与坐标轴围起来的面积就是AP值。

在这里AP=1*0.33+0.67*0.33\approx 0.55

目标检测的目的_小目标检测问题

5.计算mAP

AP衡量的是对一个类检测好坏,mAP就是对多个类的检测好坏。就是简单粗暴的把所有类的AP值取平均就好了。比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么mAP=(0.5+0.2)/2=0.35

 

Github

在这里提供一个计算mAP的github地址,上面那张AP图就是它生成的。我觉得还蛮好用的。但是不知道为什么star有点少。。。

https://github.com/Cartucho/mAP

 

怎么增加AP值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182615.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月12日 下午11:16
下一篇 2022年10月12日 下午11:16


相关推荐

  • 究竟什么是Java虚拟机(JVM)?

    究竟什么是Java虚拟机(JVM)?我们都知道,在Windows上,软件包后缀有exe,而苹果的MacOSX系统上没有安装exe。类似地,MacOSX系统上的软件安装包是dmg后缀,不能安装在Windows系统上。为什么不能安装不同系统上的软件,因为操作系统的底层实现是不同的。对于Windows系统,exe后缀的软件代码被编译成能被Windows系统识别的机器代码。对于MacOSX系统,最后将DMG后缀的软件代码编译为M…

    2022年7月8日
    20
  • avalondock章节二

    avalondock章节二用avalondock写的界面布局,但是对好多东西还是不懂,最起码布局是懵懵懂懂的,先用VS2010自带的工具文档大纲工具看下它的布局再说,布局如下图所示:看下源代码中的DockingManager:publicclassDockingManager:Control,IOverlayWindowHost//,ILogicalChildrenContainer照代码理解的意思

    2022年7月20日
    22
  • 硬核,字节一口气开源了两个类Manus智能体项目

    硬核,字节一口气开源了两个类Manus智能体项目

    2026年3月15日
    1
  • Agent到底是什么,一文搞懂智能体相关概念及原理【建议收藏】

    Agent到底是什么,一文搞懂智能体相关概念及原理【建议收藏】

    2026年3月16日
    2
  • CloudFlare免费CDN加速使用方法

    CloudFlare免费CDN加速使用方法前言 cloudflare 是一家国外的 CDN 加速服务商 还是很有名气的 提供免费和付费的加速和网站保护服务 百度云加速的国外节点就是和 cloudflare 合作使用的 cloudflare 的节点 cloudflare 提供了不同类型的套餐 即使是免费用户 cloudflare 提供的功能也是很全面的 对于访客来自于国外的网站很不错 对于访客来自于国内的网站加速效果有限 有些甚至会变慢 不过其安全防护功能也很不错 添加网站官网 www cloudflare com 使用

    2026年3月18日
    2
  • python面试常问问题_面试的十个问题及回答

    python面试常问问题_面试的十个问题及回答整理了关于人工智能pytorch、python基础、图像处理opencv/自然语言处理、机器学习、数学基础等工具型资料,对于想学习人工智能或者转行到高薪行业的打工人或大学生都非常实用,无任何套路免费提供,进群966367816免费领取哦~1、到底什么是Python?你可以在回答中与其他技术进行对比下面是一些关键点:Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。Python是动态类型语言,指的是你在声明变

    2022年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号