Оценка COCO API для подмножества классов
Я использую Python Coco API для запуска оценки для обнаружения объектов. У меня есть два файла, основную правду JSON и результаты JSON. Демонстрация Coco Notebook показывает только запуск eval для всех классов. Как я могу запустить его только для одного определенного класса или подмножества классов? В настоящее время я делаю это:
from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval
annType = 'bbox'
cocoGt=COCO(gt_json)
cocoDt=cocoGt.loadRes(results_json)
imgIds=sorted(cocoGt.getImgIds())
# running evaluation
cocoEval = COCOeval(cocoGt,cocoDt,annType)
cocoEval.params.imgIds = imgIds
cocoEval.evaluate()
cocoEval.accumulate()
cocoEval.summarize()
0 ответов
Я ссылаюсь на эту страницу (http://www.programmersought.com/article/3065285708/)
cocoEval = COCOeval(cocoGt,cocoDt,annType)
coco_eval.params.catIds = [1] #person id : 1
cocoEval.params.imgIds = imgIds
cocoEval.evaluate()
cocoEval.accumulate()
cocoEval.summarize()
Кроме того, я модифицировал cocoapi / PythonAPI/pycocotools/cocoeval.py для расчета AP для каждой категории.
строка 458-464 в https://github.com/kimyoon-young/centerNet-deep-sort/blob/master/tools/cocoeval.py
Результат как ниже.
category: 0: 0.410733757610904 #person AP
category: 1: 0.20226150054237374 #bird AP
....
категория: 79: 0.04993736566987926
(все категории) mAP: 0.27999824034118914 # мои результаты
Средняя точность (AP) @[ IoU=0.50:0.95 | площадь = все | maxDets=100 ] = 0,280 #original
В строках 458-464 https://github.com/kimyoon-young/centerNet-deep-sort/blob/master/tools/cocoeval.py для поддержки гибкого количества категорий вы можете заменить строку 458 (num_classes = 80
) с участием
num_classes = len(p.catIds)