mAP(Mean Average Precision)均值平均准确率,即检测多个目标类别的平均准确率。在目标检测领域mAP是一个最为常用的指标。具体概念不叙述,本文主要讲如何利用Github上一些开源项目计算自己网络的mAP值等信息。首先给出两个Github链接,链接1链接2。这两个链接项目都可以帮助我们计算mAP的值,用法也差不多,链接1感觉用起来更简单点,链接2的功能更全面点(绘制的Precision-Recall曲线更准)。本文主要介绍下链接项目1的使用方法,利用项目1最终能得到如下图所示的计算结果(虽然也能绘制P-R曲线,但感觉绘制的不准确)。

使用mmdetection进行目标检测 目标检测中的map_文件复制

使用mmdetection进行目标检测 目标检测中的map_文件复制_02

项目的使用流程

使用方法流程主要分为如下几步:(1) 克隆项目代码;(2)创建ground-truth文件,并将文件复制到克隆项目的 input/ground-truth/ 文件夹中;(3)创建detection-results文件,并将文件复制到克隆项目的 input/detection-results/ 文件夹中;(4)将与detection-results对应的验证图像文件放入克隆项目 input/images-optional 文件夹中(该步骤为可选项,可以不放入图像,如果放入图像会将标注框、检测框都绘制在图像上,方便后期分析结果);(5)在项目文件夹中打开终端,并执行指令python main.py即可得到结果(结果全部保存在克隆项目的results文件夹中)。

1)克隆代码

打开项目1https://github.com/Cartucho/mAP进行克隆,或者直接使用git克隆。

2)创建ground-truth文件

在项目的readme中有给出事例:

例如图像1中的标注信息(image_1.txt),文件的命名要与图像命名相同,每一行的参数为类别名称、左上角x坐标、左上角y坐标、右下角x坐标、右下角y坐标

<class_name> <left> <top> <right> <bottom> [<difficult>]

参数difficult是可选项,每一个图像文件对应生成一个txt文件,与PASCAL VOC的xml文件一样,一一对应。

tvmonitor 2 10 173 238
book 439 157 556 241
book 437 246 518 351 difficult
pottedplant 272 190 316 259

将所有生成好的文件复制到克隆项目的 input/ground-truth/ 文件夹中

3)创建detection-results文件

同样在项目的readme中有给出事例:

对于图像1的实际预测信息(image_1.txt),文件的命名要与图像命名相同,每一行的参数为类别名称、预测概率、预测左上角x坐标、预测左上角y坐标、预测右下角x坐标、预测右下角y坐标

<class_name> <confidence> <left> <top> <right> <bottom>

每个预测图像对应生成一个txt文件

tvmonitor 0.471781 0 13 174 244
cup 0.414941 274 226 301 265
book 0.460851 429 219 528 247
chair 0.292345 0 199 88 436
book 0.269833 433 260 506 336

将所有生成好的预测文件复制到克隆项目的 input/detection-results/ 文件夹中

4)复制图像文件(可选)

将与detection-results对应的验证图像文件放入克隆项目 input/images-optional 文件夹中(该步骤为可选项,可以不放入图像,如果放入图像会将标注框、检测框都绘制在图像上,方便后期分析结果)

5)开始计算

在项目文件夹中打开终端,并执行指令python main.py即可得到结果(结果全部保存在克隆项目的results文件夹中,注:该项目的计算结果是IOU阈值取0.5的结果

 

通过以上步骤就能够得到出训练网络的预测mAP,使用起来也是非常的简单。对于需要绘制Precision-Recall曲线的同学可以使用链接2中的项目代码。项目2的使用步骤其实基本相同,且需要准备的文件也都是一样的,不同的是使用的指令。