目标检测map达到多少比较好,目标检测map理想值
本文主要为大家介绍地图计算目标检测精度的实现源代码。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
目录
GITHUB代码下载1。IOU 2的概念。TP TN FP FN 3的概念。精度(precision)和召回(recall) 4。概念示例5。单一指标的局限性。什么是AP映射?很多人想计算目标检测的精度。虽然地图的概念不好理解,但是很容易理解。
GITHUB代码下载
这是用来绘制地图曲线的。
这是用来获取绘制地图曲线所需的txt。
1、IOU的概念
IOU的概念应该比较简单,就是衡量预测框和真实框的重合度。下图就是一个例子:图中的绿框是实际框(好像不是很绿……),红框是预测框。当我们需要判断两个盒子的关系时,主要是判断两个盒子的重合程度。
IOU的计算公式为:
可以看出,IOU是一个比值,即交比。
分子部分,值是预测帧和实际帧的重叠面积;
在分母部分,该值是预测框和实际框所占的总面积。
相交面积与合并面积之比为IOU。
2、TP TN FP FN的概念
TP FP FN中有四个字母,分别是T F P N。
t为真;
f是假的;
p为正;
它是阴性的。
或者t f代表样本是否被正确分类。
或者p n表示样本被预测为正样本还是负样本。
TP(真阳性)是指已经被分成了阳性样本,而且已经被正确的分成了。
TN(真阴性)就是分阴性样本,而且是成对分的。
FP(假阳性)是指分成阳性样本,但是是错的(实际上这个样本是阴性的)。
FN(假阴性)的意思是分成阴性样本,但是错了(其实这个样本是这样的)。
在mAP计算的过程中,主要用到TP、FP、FN三个概念。
3、precision(精确度)和recall(召回率)
TP是分类器认为是正样本且确实是正样本的例子,FP是分类器认为是正样本但实际不是的例子,Precision翻译成中文就是“分类器认为是正类且是正类的部分占所有分类器认为是正类的比例”。
TP是分类器认为是正样本且确实是正样本的例子,FN是分类器认为是负样本但实际不是负样本的例子。回忆翻译成中文的意思是“分类器认为是正类并且是正类的部分占所有正类的比例”。
4、概念举例
如图,蓝色的盒子才是真正的盒子。绿色和红色框是预测框,绿色框是正样本,红色框是负样本。一般来说,当预测帧和真实帧IOU=0.5时,被认为是正样本。
所以对于这张图。
有3个真正的盒子,2个阳性样品和2个阴性样品。
此刻
5、单个指标的局限性
目标检测算法中有一个非常重要的概念:置信度。如果置信度设置得较高,则预测结果与实际情况非常吻合。如果置信度低,就会有很多误检。
假设一个图片有三个正样本,目标检测这个图片有十个预测结果,其中三个实际上是正样本,七个实际上是负样本。对应的置信度如下。
如果我们能回答这个问题
受的置信度设置为0.95的话,那么目标检测算法就会将序号为1的样本作为正样本,其它的都是负样本。此时TP = 1,FP = 0,FN = 2。
此时Precision非常高,但是事实上我们只检测出一个正样本,还有两个没有检测出来,因此只用Precision就不合适。
这个时候如果我们将可以接受的置信度设置为0.35的话,那么目标检测算法就会将序号为1的样本作为正样本,其它的都是负样本。此时TP = 3,FP = 3,FN = 0。
此时Recall非常高,但是事实上目标检测算法认为是正样本的样本里面,有3个样本确实是正样本,但有三个是负样本,存在非常严重的误检测,因此只用Recall就不合适。
二者进行结合才是评价的正确方法。
什么是AP
AP事实上指的是,利用不同的Precision和Recall的点的组合,画出来的曲线下面的面积。如下面这幅图所示。
当我们取不同的置信度,可以获得不同的Precision和不同的Recall,当我们取得置信度够密集的时候,就可以获得非常多的Precision和Recall。
此时Precision和Recall可以在图片上画出一条线,这条线下部分的面积就是某个类的AP值。
mAP就是所有的类的AP值求平均。
绘制mAP
我们首先在下载绘制mAP所需的代码。
在这个代码中,如果想要绘制mAP则需要三个内容。分别是:
detection-results:指的是预测结果的txt。
ground-truth:指的是真实框的txt。
image-optional:指的是图片,有这个可以可视化,但是这个可以没有。
我们需要生成这三个内容,此时下载第二个库,这个是我拿我制作的ssd代码写的一个可以生成对应txt的例子。
点击下载
我们首先将整个VOC的数据集放到VOCdevikit中
然后修改voc2ssd.py里面的trainval_percent,一般用数据集的10%或者更少用于测试。如果大家放进VOCdevikit的数据集不是全部数据,而是已经筛选好的测试数据集的话,那么就把trainval_percent设置成0,表示全部的数据都用于测试。
然后运行voc2ssd.py。此时会生成test.txt,存放用于测试的图片的名字。
然后依次运行主目录下的get_dr_txt.py和get_gt_txt.py获得预测框对应的txt和真实框对应的txt。get_dr_txt.py是用来检测测试集里面的图片的,然后会生成每一个图片的检测结果,我重写了detect_image代码,用于生成预测框的txt。利用for循环检测所有的图片。
get_dr_txt.py是用来获取测试集中的xml,然后根据每个xml的结果生成真实框的txt。利用for循环检测所有的xml。
完成后我们会在input获得三个文件夹。
此时把input内部的文件夹复制到mAP的代码中的input文件夹内部就可以了,然后我们运行mAP的代码中的main.py,运行结束后,会生成mAP相关的文件。
结果生成在Result里面。
以上就是mAP计算目标检测精确度实现源码的详细内容,更多关于mAP目标检测的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。