Оценка 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)
Другие вопросы по тегам