From 8adfbc5f0763ccde4648c65705507aa35d882c09 Mon Sep 17 00:00:00 2001 From: stacezhou Date: Wed, 21 Jul 2021 12:57:41 +0000 Subject: [PATCH] [Fix] fix cocoapi in parser * [Fix] fix cocoapi in parser * fix a bug --- mmtrack/datasets/parsers/coco_api.py | 46 +++++++++++++++++++ mmtrack/datasets/parsers/coco_video_parser.py | 3 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 mmtrack/datasets/parsers/coco_api.py diff --git a/mmtrack/datasets/parsers/coco_api.py b/mmtrack/datasets/parsers/coco_api.py new file mode 100644 index 000000000..57077f9ba --- /dev/null +++ b/mmtrack/datasets/parsers/coco_api.py @@ -0,0 +1,46 @@ +# This file add snake case alias for coco api + +import warnings + +import pycocotools +from pycocotools.coco import COCO as _COCO +from pycocotools.cocoeval import COCOeval as _COCOeval + + +class COCO(_COCO): + """This class is almost the same as official pycocotools package. + + It implements some snake case function aliases. So that the COCO class has + the same interface as LVIS class. + """ + + def __init__(self, annotation_file=None): + if getattr(pycocotools, '__version__', '0') >= '12.0.2': + warnings.warn( + 'mmpycocotools is deprecated. Please install official pycocotools by "pip install pycocotools"', # noqa: E501 + UserWarning) + super().__init__(annotation_file=annotation_file) + self.img_ann_map = self.imgToAnns + self.cat_img_map = self.catToImgs + + def get_ann_ids(self, img_ids=[], cat_ids=[], area_rng=[], iscrowd=None): + return self.getAnnIds(img_ids, cat_ids, area_rng, iscrowd) + + def get_cat_ids(self, cat_names=[], sup_names=[], cat_ids=[]): + return self.getCatIds(cat_names, sup_names, cat_ids) + + def get_img_ids(self, img_ids=[], cat_ids=[]): + return self.getImgIds(img_ids, cat_ids) + + def load_anns(self, ids): + return self.loadAnns(ids) + + def load_cats(self, ids): + return self.loadCats(ids) + + def load_imgs(self, ids): + return self.loadImgs(ids) + + +# just for the ease of import +COCOeval = _COCOeval diff --git a/mmtrack/datasets/parsers/coco_video_parser.py b/mmtrack/datasets/parsers/coco_video_parser.py index 21f48afe2..f7bdafcba 100644 --- a/mmtrack/datasets/parsers/coco_video_parser.py +++ b/mmtrack/datasets/parsers/coco_video_parser.py @@ -1,7 +1,8 @@ from collections import defaultdict import numpy as np -from pycocotools.coco import COCO, _isArrayLike +from .coco_api import COCO +from pycocotools.coco import _isArrayLike class CocoVID(COCO):