Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,450 Bytes
61c2d32 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
import unittest
from densepose.data.datasets.builtin import COCO_DATASETS, DENSEPOSE_ANNOTATIONS_DIR, LVIS_DATASETS
from densepose.data.datasets.coco import load_coco_json
from densepose.data.datasets.lvis import load_lvis_json
from densepose.data.utils import maybe_prepend_base_path
from densepose.structures import DensePoseDataRelative
class TestDatasetLoadedAnnotations(unittest.TestCase):
COCO_DATASET_DATA = {
"densepose_coco_2014_train": {"n_instances": 39210},
"densepose_coco_2014_minival": {"n_instances": 2243},
"densepose_coco_2014_minival_100": {"n_instances": 164},
"densepose_coco_2014_valminusminival": {"n_instances": 7297},
"densepose_coco_2014_train_cse": {"n_instances": 39210},
"densepose_coco_2014_minival_cse": {"n_instances": 2243},
"densepose_coco_2014_minival_100_cse": {"n_instances": 164},
"densepose_coco_2014_valminusminival_cse": {"n_instances": 7297},
"densepose_chimps": {"n_instances": 930},
"posetrack2017_train": {"n_instances": 8274},
"posetrack2017_val": {"n_instances": 4753},
"lvis_v05_train": {"n_instances": 5186},
"lvis_v05_val": {"n_instances": 1037},
}
LVIS_DATASET_DATA = {
"densepose_lvis_v1_train1": {"n_instances": 3394},
"densepose_lvis_v1_train2": {"n_instances": 1800},
"densepose_lvis_v1_val": {"n_instances": 1037},
"densepose_lvis_v1_val_animals_100": {"n_instances": 89},
}
def generic_coco_test(self, dataset_info):
if dataset_info.name not in self.COCO_DATASET_DATA:
return
n_inst = self.COCO_DATASET_DATA[dataset_info.name]["n_instances"]
self.generic_test(dataset_info, n_inst, load_coco_json)
def generic_lvis_test(self, dataset_info):
if dataset_info.name not in self.LVIS_DATASET_DATA:
return
n_inst = self.LVIS_DATASET_DATA[dataset_info.name]["n_instances"]
self.generic_test(dataset_info, n_inst, load_lvis_json)
def generic_test(self, dataset_info, n_inst, loader_fun):
datasets_root = DENSEPOSE_ANNOTATIONS_DIR
annotations_fpath = maybe_prepend_base_path(datasets_root, dataset_info.annotations_fpath)
images_root = maybe_prepend_base_path(datasets_root, dataset_info.images_root)
image_annotation_dicts = loader_fun(
annotations_json_file=annotations_fpath,
image_root=images_root,
dataset_name=dataset_info.name,
)
num_valid = sum(
1
for image_annotation_dict in image_annotation_dicts
for ann in image_annotation_dict["annotations"]
if DensePoseDataRelative.validate_annotation(ann)[0]
)
self.assertEqual(num_valid, n_inst)
def coco_test_fun(dataset_info):
return lambda self: self.generic_coco_test(dataset_info)
for dataset_info in COCO_DATASETS:
setattr(
TestDatasetLoadedAnnotations,
f"test_coco_builtin_loaded_annotations_{dataset_info.name}",
coco_test_fun(dataset_info),
)
def lvis_test_fun(dataset_info):
return lambda self: self.generic_lvis_test(dataset_info)
for dataset_info in LVIS_DATASETS:
setattr(
TestDatasetLoadedAnnotations,
f"test_lvis_builtin_loaded_annotations_{dataset_info.name}",
lvis_test_fun(dataset_info),
)
|