Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.314
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.559
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.318
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.142
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.341
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.464
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.278
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.420
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.442
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.240
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.482
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.611
以上是我利用官方给出的yolov3.weights通过计算5k.txt里图片计算出的ap值,已经很贴近论文里作者给出的分辨率为416x416的前提下的31%的值。计算步骤如下:
1、确定测试集:https://pjreddie.com/media/files/coco/5k.part内部含有val2014的5000张图片
2、通过darknet自带的valid命令计算生成被比较的json文件
3、./darknet detector valid cfg/coco.data cfg/yolov3.cfg backup/yolov3.weight注意运行此命令的时候coco.data里的必须添加eval = coco不然生成的文件是class类个txt文件,结果会自动生成在result文件夹下。
4、利用以下python脚本计算ap值
#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval
import numpy as np
import skimage.io as io
import pylab,json
pylab.rcParams['figure.figsize'] = (10.0, 8.0)
def get_img_id(file_name):
ls = []
myset = []
annos = json.load(open(file_name, 'r'))
for anno in annos:
ls.append(anno['image_id'])
myset = {}.fromkeys(ls).keys()
return myset
if __name__ == '__main__':
annType = ['segm', 'bbox', 'keypoints']#set iouType to 'segm', 'bbox' or 'keypoints'
annType = annType[1] # specify type here
cocoGt_file = '/home/ss/data/coco2014/annotations/instances_val2014.json'
cocoGt = COCO(cocoGt_file)#取得标注集中coco json对象
cocoDt_file = '/home/ss/darknet/results/coco_results.json'
imgIds = get_img_id(cocoDt_file)
print len(imgIds)
cocoDt = cocoGt.loadRes(cocoDt_file)#取得结果集中image json对象
imgIds = sorted(imgIds)#按顺序排列coco标注集image_id
imgIds = imgIds[0:5000]#标注集中的image数据
cocoEval = COCOeval(cocoGt, cocoDt, annType)
cocoEval.params.imgIds = imgIds#参数设置
cocoEval.evaluate()#评价
cocoEval.accumulate()#积累
cocoEval.summarize()#总结
改代码添加的路径信息需要根据自己的实际路径添加,计算出来的信息如顶部。
输出信息的具体含义可以参考链接:
https://blog.youkuaiyun.com/u014734886/article/details/78831884
https://blog.youkuaiyun.com/u014734886/article/details/78831382