Оценка COCO API для подмножества классов - PullRequest
1 голос
/ 22 мая 2019

Я использую Python Coco API для запуска оценки для обнаружения объектов. У меня есть два файла, основную правду JSON и результаты JSON. coco notebook demo показывает только запуск 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()

1 Ответ

1 голос
/ 04 июня 2019

Я ссылаюсь на эту страницу (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

Результат, как показано ниже.

Категория: 0: 0,410733757610904 #person AP
Категория: 1: 0,20226150054237374 # Птица AP
....
категория: 79: 0.04993736566987926
(все категории) mAP: 0.27999824034118914 # мои результаты
Средняя точность (AP) @ [IoU = 0.50: 0.95 | area = all | maxDets = 100] = 0.280 #оригинал

...