zoukankan      html  css  js  c++  java
  • COCOeval接口使用

    COCOeval类简介

    class COCOeval:
        # Interface for evaluating detection on the Microsoft COCO dataset.
        #
        # The usage for CocoEval is as follows:
        #  cocoGt=..., cocoDt=...       # load dataset and results
        #  E = CocoEval(cocoGt,cocoDt); # initialize CocoEval object
        #  E.params.recThrs = ...;      # set parameters as desired
        #  E.evaluate();                # run per image evaluation
        #  E.accumulate();              # accumulate per image results
        #  E.summarize();               # display summary metrics of results
        # For example usage see evalDemo.m and http://mscoco.org/.
        #
        # The evaluation parameters are as follows (defaults in brackets):
        #  imgIds     - [all] N img ids to use for evaluation
        #  catIds     - [all] K cat ids to use for evaluation
        #  iouThrs    - [.5:.05:.95] T=10 IoU thresholds for evaluation
        #  recThrs    - [0:.01:1] R=101 recall thresholds for evaluation
        #  areaRng    - [...] A=4 object area ranges for evaluation
        #  maxDets    - [1 10 100] M=3 thresholds on max detections per image
        #  iouType    - ['segm'] set iouType to 'segm', 'bbox' or 'keypoints'
        #  iouType replaced the now DEPRECATED useSegm parameter.
        #  useCats    - [1] if true use category labels for evaluation
        # Note: if useCats=0 category labels are ignored as in proposal scoring.
        # Note: multiple areaRngs [Ax2] and maxDets [Mx1] can be specified.
        #
        # evaluate(): evaluates detections on every image and every category and
        # concats the results into the "evalImgs" with fields:
        #  dtIds      - [1xD] id for each of the D detections (dt)
        #  gtIds      - [1xG] id for each of the G ground truths (gt)
        #  dtMatches  - [TxD] matching gt id at each IoU or 0
        #  gtMatches  - [TxG] matching dt id at each IoU or 0
        #  dtScores   - [1xD] confidence of each dt
        #  gtIgnore   - [1xG] ignore flag for each gt
        #  dtIgnore   - [TxD] ignore flag for each dt at each IoU
        #
        # accumulate(): accumulates the per-image, per-category evaluation
        # results in "evalImgs" into the dictionary "eval" with fields:
        #  params     - parameters used for evaluation
        #  date       - date evaluation was performed
        #  counts     - [T,R,K,A,M] parameter dimensions (see above)
        #  precision  - [TxRxKxAxM] precision for every evaluation setting
        #  recall     - [TxKxAxM] max recall for every evaluation setting
        # Note: precision and recall==-1 for settings with no gt objects.
        #
        # See also coco, mask, pycocoDemo, pycocoEvalDemo
        #
        # Microsoft COCO Toolbox.      version 2.0
        # Data, paper, and tutorials available at:  http://mscoco.org/
        # Code written by Piotr Dollar and Tsung-Yi Lin, 2015.
        # Licensed under the Simplified BSD License [see coco/license.txt]
        def __init__(self, cocoGt=None, cocoDt=None, iouType='segm'):
            '''
            Initialize CocoEval using coco APIs for gt and dt
            :param cocoGt: coco object with ground truth annotations
            :param cocoDt: coco object with detection results
            :return: None
            '''
            if not iouType:
                print('iouType not specified. use default iouType segm')
            self.cocoGt   = cocoGt              # ground truth COCO API
            self.cocoDt   = cocoDt              # detections COCO API
            self.evalImgs = defaultdict(list)   # per-image per-category evaluation results [KxAxI] elements
            self.eval     = {}                  # accumulated evaluation results
            self._gts = defaultdict(list)       # gt for evaluation
            self._dts = defaultdict(list)       # dt for evaluation
            self.params = Params(iouType=iouType) # parameters
            self._paramsEval = {}               # parameters for evaluation
            self.stats = []                     # result summarization
            self.ious = {}                      # ious between all gts and dts
            if not cocoGt is None:
                self.params.imgIds = sorted(cocoGt.getImgIds())
                self.params.catIds = sorted(cocoGt.getCatIds())

    调用方法如下

    # running evaluation
    cocoEval = COCOeval(cocoGt,cocoDt,annType)
    cocoEval.evaluate()
    cocoEval.accumulate()
    cocoEval.summarize()

    cocoGt和cocoDt为COCO对象,初始化函数参数为标注json文件

    class COCO:
        def __init__(self, annotation_file=None):
            """
            Constructor of Microsoft COCO helper class for reading and visualizing annotations.
            :param annotation_file (str): location of annotation file
            :param image_folder (str): location to the folder that hosts images.
            :return:
            """
            # load dataset
            self.dataset,self.anns,self.cats,self.imgs = dict(),dict(),dict(),dict()
            self.imgToAnns, self.catToImgs = defaultdict(list), defaultdict(list)
            if not annotation_file == None:
                print('loading annotations into memory...')
                tic = time.time()
                dataset = json.load(open(annotation_file, 'r'))
                assert type(dataset)==dict, 'annotation file format {} not supported'.format(type(dataset))
                print('Done (t={:0.2f}s)'.format(time.time()- tic))
                self.dataset = dataset
                self.createIndex()
  • 相关阅读:
    python __init__.py
    估算小结
    ssh vim中不小心按下ctrl+s
    估算方法
    SSH 下使vim语法高亮显示 && 终端下vim配置
    not enough arguments for format string搞死人
    函数的形参 实参
    Linux 共享内存机制
    select函数参数及其使用
    找出两个字符串最长公共子串
  • 原文地址:https://www.cnblogs.com/guo-xiang/p/11194697.html
Copyright © 2011-2022 走看看