【问题标题】:COCO api evaluation for subset of classes类子集的 COCO api 评估
【发布时间】:2019-05-21 23:01:04
【问题描述】:

我正在使用 python coco api 运行对象检测评估。我有两个文件,一个基本事实 json 和一个结果 json。 coco notebook demo 仅显示所有类的运行评估。我怎样才能只为一个特定的类或类的子集运行它?目前我正在这样做:

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()

【问题讨论】:

    标签: python subset mscoco pycocotools


    【解决方案1】:

    我参考了这个页面 (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。
    https://github.com/kimyoon-young/centerNet-deep-sort/blob/b694fc52f880dfbba481d43a7d5284a29f386ca7/tools/cocoeval.py#L458-L464

    结果如下。

    类别:0:0.410733757610904 #person AP
    类别:1:0.20226150054237374 #bird AP
    ....
    类别 : 79 : 0.04993736566987926
    (所有类别)mAP : 0.27999824034118914 # 我的结果
    平均精度 (AP) @[ IoU=0.50:0.95 |面积=全部| maxDets=100 ] = 0.280 #原始

    【讨论】:

      【解决方案2】:

      https://github.com/kimyoon-young/centerNet-deep-sort/blob/master/tools/cocoeval.py 的第 458-464 行,为了支持灵活数量的类别,您可以将第 458 行 (num_classes = 80) 替换为

      num_classes = len(p.catIds)
      

      【讨论】:

        猜你喜欢
        • 2020-04-05
        • 2019-03-21
        • 2021-03-28
        • 1970-01-01
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 2020-11-10
        • 2020-01-13
        相关资源
        最近更新 更多