如何利用cocoAPI 评估yolov3 模型,计算mAP

cocoAPI下载地址

步骤1、首先下载cocoAPI,进入pythonAPI文件夹Make一下

步骤2、使用 <./darknet detector valid cfg/coco.data cfg/yolov3-coco.cfg backup/yolov3-coco.weight>命令生成det的json文件,注意,在使用valid 这个命令的时候thresh参数应该设置第一点,可以在detector.c文件中的validate_detector这个方法中设置,另外,如果模型训练的是coco的个别类,在valid的时候需要修改detector.c最上面的coco_ids这个变量,具体怎么改自己去看看就知道了。

步骤3、jupyter notebook打开pycocoEvalDemo.ipynb把annFile和resFile这两个变量的路径修改为自己的,resFile修改为上一步valid生成的那个json文件的路径。

步骤4、修改第5个cell中的内容,原来这个cell中是去val2014中图片按images_id排完序后的前100张,这里需要修改为自己测试集的image id

import json
dts = json.load(open(resFile,'r'))
imgIds = [imid["image_id"] for imid in dts]
imgIds = sorted(list(set(imgIds)))
del dts

最后就从头run一次就可以了

另外,如果需要测试单独一个或者几个类的AP的时候,比如我要测试person+car的AP,需要在cocoEval.params.imgIds = imgIds的下一行加上———“cocoEval.params.catIds = [1,3]”,代码中程序会在evaluate这个方法一开始调用一个方法去根据imgIds和catIds在GroundTure和det里面去加载相应的数据,然后再进行下面的操作的。

 

另外,发现使用cocoAPI来计算AP的话,最后的结果都是偏低的,目前还没有具体看过里面的计算方法,好像是跟别的不一样,不过yolo的作者用的应该就是cocoAPI这个评估方法,因为coco的valid这个命令感觉就是为了cocoAPI设置的

另外可以使用kitti的那个模型评估的方法,可以用来生成PR曲线,用kitti的那个方法测出来的结果感觉比较合理一点,但是我嫌麻烦,还没有具体用过,有兴趣可以自己去研究研究。

你可能感兴趣的:(深度学习)