| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 从零讲解目标检测的评价指标map及实现 -> 正文阅读 |
|
[人工智能]从零讲解目标检测的评价指标map及实现 |
前言map是** map最早出现在信息检索系统,引入AP是为了衡量相关条目出现在不同位置时搜索结果的差异性。对于目标检测来说,其GT数量不定(一张图片可能有多类多个label),网络输出也不确定(经过NMS输出数量可能大不相同),在这种情况下如何去评价检测模型的性能?肯定不能用分类问题的Accuracy,最直观的想法就是计算PR曲线。 map的定义经过一系列的训练过后,怎么才能判断我们目标检测训练模型的效果呢,首先我们要有包含标签的验证集,没有标签就没办法评价;其次知道目标检测任务是用来干嘛的,如在植物大战僵尸中,坚果+地雷是绝佳配合。 1.预测框与gt框的匹配假设预测出的框如下(红色),先做单一类别的ap计算,抽出坚果的预测框(红色1,2,3,4, 5,6,7)和坚果的真实框。 2. 指标计算这里先了解下混淆矩阵,这块有点绕,对目标检测来说: 所有大于置信度阈值的框均为预测正样本(P),与gt的iou高于iou阈值的为TP,反之为FP。没有预测出来的框都是N,目标检测一般不区分TN和FN。因为目标检测预测对应的框为背景是正确的似乎也没多大意义。因此,目标检测中,一般不考虑TN。 对于坚果类别: 3. ap 的计算如何计算每个类别的ap呢,首先ap的定义是PR曲线围成的面积,所以我们需要先求PR曲线,对于PR曲线的采样点,voc10前后有两种不同的方式,voc08只选取Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值,称为Interplolated AP。如我们上面预测的坚果: voc08是如下这样的图: 4. map 计算在计算完每个类别的ap后,对于整个数据集的map,采用对各类别ap的平均值,这里面有人考虑对整个数据的计算(GT, TP,FP)后,获得整个数据集的ap作为map,这里实际上是不合理的。 举个例子,数据集有A、B两个类,样本量分别占90%、10%;有两个待评估模型①和②, 同时在coco数据集上,使用的也是Interplolated AP的计算方式[1]。与Voc 2008不同的是,为了提高精度,在PR曲线上采样了** recall = 0.00, 0.01, 0.02 , ?, 1.00 时对应的最大precision值,然后计算这101个值得平均值,就得到了该验证集上某类的ap值。 第二个map为不同尺寸的物体的mAP。包括小物体、中等物体、大物体,后面描述了物体对应的像素值的大小。 第三为平均召回率,和AP相似,但这个不太常用。 3. map的实现map的实现网上有很多实现方式,这里使用简单的方法:
最终得到一系列的precision和recall值,并且这些值是按照置信度降低排列统计的,可以认为是取不同的置信度阈值(或者rank值)得到的。然后据此可以计算AP:
结语根据 mAP 的高低,我们只能较为概括地知道网络整体性能的好坏,但比较难分析问题具体在哪。举个例子:如果网络输出的框很贴合,选择合适的 Confidence 阈值时,检出和召回也较均衡,但是目标的类别判断错误较多。由于首先根据类别结果分类处理,只要类别错了,定位、检出和召回都很好,mAP 指标也不会高。但从结果观察,并不能很明确知道,问题出在类别判断上还是定位不准确上面。 mAP 指标关注的点,与实际应用时关注的点,并不完全吻合,mAP 会统计所有 Confidence 值下的 PR值,而实际使用时,会设定一个 Confidence 阈值,低于该阈值的目标会被丢弃,这部分目标在统计 mAP 时也会有一定的贡献。部分针对比赛刷榜的涨点技巧,会关注这部分检测结果对 mAP 的影响。 所以针对具体的目标检测项目需求,map仅仅只能大概的评估模型性能,还需要其他的评价指标。 参考:参考: [1] https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocotools/cocoeval.py |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:57:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |