Spaces:
Runtime error
Runtime error
# coding=utf-8 | |
# Copyright 2021 The Deeplab2 Authors. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
"""File containing the meta info of COCO dataset. | |
""" | |
import copy | |
from typing import Sequence, Mapping, Any | |
_COCO_META = [ | |
{ | |
'color': [220, 20, 60], | |
'isthing': 1, | |
'id': 1, | |
'name': 'person' | |
}, | |
{ | |
'color': [119, 11, 32], | |
'isthing': 1, | |
'id': 2, | |
'name': 'bicycle' | |
}, | |
{ | |
'color': [0, 0, 142], | |
'isthing': 1, | |
'id': 3, | |
'name': 'car' | |
}, | |
{ | |
'color': [0, 0, 230], | |
'isthing': 1, | |
'id': 4, | |
'name': 'motorcycle' | |
}, | |
{ | |
'color': [106, 0, 228], | |
'isthing': 1, | |
'id': 5, | |
'name': 'airplane' | |
}, | |
{ | |
'color': [0, 60, 100], | |
'isthing': 1, | |
'id': 6, | |
'name': 'bus' | |
}, | |
{ | |
'color': [0, 80, 100], | |
'isthing': 1, | |
'id': 7, | |
'name': 'train' | |
}, | |
{ | |
'color': [0, 0, 70], | |
'isthing': 1, | |
'id': 8, | |
'name': 'truck' | |
}, | |
{ | |
'color': [0, 0, 192], | |
'isthing': 1, | |
'id': 9, | |
'name': 'boat' | |
}, | |
{ | |
'color': [250, 170, 30], | |
'isthing': 1, | |
'id': 10, | |
'name': 'traffic light' | |
}, | |
{ | |
'color': [100, 170, 30], | |
'isthing': 1, | |
'id': 11, | |
'name': 'fire hydrant' | |
}, | |
{ | |
'color': [220, 220, 0], | |
'isthing': 1, | |
'id': 13, | |
'name': 'stop sign' | |
}, | |
{ | |
'color': [175, 116, 175], | |
'isthing': 1, | |
'id': 14, | |
'name': 'parking meter' | |
}, | |
{ | |
'color': [250, 0, 30], | |
'isthing': 1, | |
'id': 15, | |
'name': 'bench' | |
}, | |
{ | |
'color': [165, 42, 42], | |
'isthing': 1, | |
'id': 16, | |
'name': 'bird' | |
}, | |
{ | |
'color': [255, 77, 255], | |
'isthing': 1, | |
'id': 17, | |
'name': 'cat' | |
}, | |
{ | |
'color': [0, 226, 252], | |
'isthing': 1, | |
'id': 18, | |
'name': 'dog' | |
}, | |
{ | |
'color': [182, 182, 255], | |
'isthing': 1, | |
'id': 19, | |
'name': 'horse' | |
}, | |
{ | |
'color': [0, 82, 0], | |
'isthing': 1, | |
'id': 20, | |
'name': 'sheep' | |
}, | |
{ | |
'color': [120, 166, 157], | |
'isthing': 1, | |
'id': 21, | |
'name': 'cow' | |
}, | |
{ | |
'color': [110, 76, 0], | |
'isthing': 1, | |
'id': 22, | |
'name': 'elephant' | |
}, | |
{ | |
'color': [174, 57, 255], | |
'isthing': 1, | |
'id': 23, | |
'name': 'bear' | |
}, | |
{ | |
'color': [199, 100, 0], | |
'isthing': 1, | |
'id': 24, | |
'name': 'zebra' | |
}, | |
{ | |
'color': [72, 0, 118], | |
'isthing': 1, | |
'id': 25, | |
'name': 'giraffe' | |
}, | |
{ | |
'color': [255, 179, 240], | |
'isthing': 1, | |
'id': 27, | |
'name': 'backpack' | |
}, | |
{ | |
'color': [0, 125, 92], | |
'isthing': 1, | |
'id': 28, | |
'name': 'umbrella' | |
}, | |
{ | |
'color': [209, 0, 151], | |
'isthing': 1, | |
'id': 31, | |
'name': 'handbag' | |
}, | |
{ | |
'color': [188, 208, 182], | |
'isthing': 1, | |
'id': 32, | |
'name': 'tie' | |
}, | |
{ | |
'color': [0, 220, 176], | |
'isthing': 1, | |
'id': 33, | |
'name': 'suitcase' | |
}, | |
{ | |
'color': [255, 99, 164], | |
'isthing': 1, | |
'id': 34, | |
'name': 'frisbee' | |
}, | |
{ | |
'color': [92, 0, 73], | |
'isthing': 1, | |
'id': 35, | |
'name': 'skis' | |
}, | |
{ | |
'color': [133, 129, 255], | |
'isthing': 1, | |
'id': 36, | |
'name': 'snowboard' | |
}, | |
{ | |
'color': [78, 180, 255], | |
'isthing': 1, | |
'id': 37, | |
'name': 'sports ball' | |
}, | |
{ | |
'color': [0, 228, 0], | |
'isthing': 1, | |
'id': 38, | |
'name': 'kite' | |
}, | |
{ | |
'color': [174, 255, 243], | |
'isthing': 1, | |
'id': 39, | |
'name': 'baseball bat' | |
}, | |
{ | |
'color': [45, 89, 255], | |
'isthing': 1, | |
'id': 40, | |
'name': 'baseball glove' | |
}, | |
{ | |
'color': [134, 134, 103], | |
'isthing': 1, | |
'id': 41, | |
'name': 'skateboard' | |
}, | |
{ | |
'color': [145, 148, 174], | |
'isthing': 1, | |
'id': 42, | |
'name': 'surfboard' | |
}, | |
{ | |
'color': [255, 208, 186], | |
'isthing': 1, | |
'id': 43, | |
'name': 'tennis racket' | |
}, | |
{ | |
'color': [197, 226, 255], | |
'isthing': 1, | |
'id': 44, | |
'name': 'bottle' | |
}, | |
{ | |
'color': [171, 134, 1], | |
'isthing': 1, | |
'id': 46, | |
'name': 'wine glass' | |
}, | |
{ | |
'color': [109, 63, 54], | |
'isthing': 1, | |
'id': 47, | |
'name': 'cup' | |
}, | |
{ | |
'color': [207, 138, 255], | |
'isthing': 1, | |
'id': 48, | |
'name': 'fork' | |
}, | |
{ | |
'color': [151, 0, 95], | |
'isthing': 1, | |
'id': 49, | |
'name': 'knife' | |
}, | |
{ | |
'color': [9, 80, 61], | |
'isthing': 1, | |
'id': 50, | |
'name': 'spoon' | |
}, | |
{ | |
'color': [84, 105, 51], | |
'isthing': 1, | |
'id': 51, | |
'name': 'bowl' | |
}, | |
{ | |
'color': [74, 65, 105], | |
'isthing': 1, | |
'id': 52, | |
'name': 'banana' | |
}, | |
{ | |
'color': [166, 196, 102], | |
'isthing': 1, | |
'id': 53, | |
'name': 'apple' | |
}, | |
{ | |
'color': [208, 195, 210], | |
'isthing': 1, | |
'id': 54, | |
'name': 'sandwich' | |
}, | |
{ | |
'color': [255, 109, 65], | |
'isthing': 1, | |
'id': 55, | |
'name': 'orange' | |
}, | |
{ | |
'color': [0, 143, 149], | |
'isthing': 1, | |
'id': 56, | |
'name': 'broccoli' | |
}, | |
{ | |
'color': [179, 0, 194], | |
'isthing': 1, | |
'id': 57, | |
'name': 'carrot' | |
}, | |
{ | |
'color': [209, 99, 106], | |
'isthing': 1, | |
'id': 58, | |
'name': 'hot dog' | |
}, | |
{ | |
'color': [5, 121, 0], | |
'isthing': 1, | |
'id': 59, | |
'name': 'pizza' | |
}, | |
{ | |
'color': [227, 255, 205], | |
'isthing': 1, | |
'id': 60, | |
'name': 'donut' | |
}, | |
{ | |
'color': [147, 186, 208], | |
'isthing': 1, | |
'id': 61, | |
'name': 'cake' | |
}, | |
{ | |
'color': [153, 69, 1], | |
'isthing': 1, | |
'id': 62, | |
'name': 'chair' | |
}, | |
{ | |
'color': [3, 95, 161], | |
'isthing': 1, | |
'id': 63, | |
'name': 'couch' | |
}, | |
{ | |
'color': [163, 255, 0], | |
'isthing': 1, | |
'id': 64, | |
'name': 'potted plant' | |
}, | |
{ | |
'color': [119, 0, 170], | |
'isthing': 1, | |
'id': 65, | |
'name': 'bed' | |
}, | |
{ | |
'color': [0, 182, 199], | |
'isthing': 1, | |
'id': 67, | |
'name': 'dining table' | |
}, | |
{ | |
'color': [0, 165, 120], | |
'isthing': 1, | |
'id': 70, | |
'name': 'toilet' | |
}, | |
{ | |
'color': [183, 130, 88], | |
'isthing': 1, | |
'id': 72, | |
'name': 'tv' | |
}, | |
{ | |
'color': [95, 32, 0], | |
'isthing': 1, | |
'id': 73, | |
'name': 'laptop' | |
}, | |
{ | |
'color': [130, 114, 135], | |
'isthing': 1, | |
'id': 74, | |
'name': 'mouse' | |
}, | |
{ | |
'color': [110, 129, 133], | |
'isthing': 1, | |
'id': 75, | |
'name': 'remote' | |
}, | |
{ | |
'color': [166, 74, 118], | |
'isthing': 1, | |
'id': 76, | |
'name': 'keyboard' | |
}, | |
{ | |
'color': [219, 142, 185], | |
'isthing': 1, | |
'id': 77, | |
'name': 'cell phone' | |
}, | |
{ | |
'color': [79, 210, 114], | |
'isthing': 1, | |
'id': 78, | |
'name': 'microwave' | |
}, | |
{ | |
'color': [178, 90, 62], | |
'isthing': 1, | |
'id': 79, | |
'name': 'oven' | |
}, | |
{ | |
'color': [65, 70, 15], | |
'isthing': 1, | |
'id': 80, | |
'name': 'toaster' | |
}, | |
{ | |
'color': [127, 167, 115], | |
'isthing': 1, | |
'id': 81, | |
'name': 'sink' | |
}, | |
{ | |
'color': [59, 105, 106], | |
'isthing': 1, | |
'id': 82, | |
'name': 'refrigerator' | |
}, | |
{ | |
'color': [142, 108, 45], | |
'isthing': 1, | |
'id': 84, | |
'name': 'book' | |
}, | |
{ | |
'color': [196, 172, 0], | |
'isthing': 1, | |
'id': 85, | |
'name': 'clock' | |
}, | |
{ | |
'color': [95, 54, 80], | |
'isthing': 1, | |
'id': 86, | |
'name': 'vase' | |
}, | |
{ | |
'color': [128, 76, 255], | |
'isthing': 1, | |
'id': 87, | |
'name': 'scissors' | |
}, | |
{ | |
'color': [201, 57, 1], | |
'isthing': 1, | |
'id': 88, | |
'name': 'teddy bear' | |
}, | |
{ | |
'color': [246, 0, 122], | |
'isthing': 1, | |
'id': 89, | |
'name': 'hair drier' | |
}, | |
{ | |
'color': [191, 162, 208], | |
'isthing': 1, | |
'id': 90, | |
'name': 'toothbrush' | |
}, | |
{ | |
'color': [255, 255, 128], | |
'isthing': 0, | |
'id': 92, | |
'name': 'banner' | |
}, | |
{ | |
'color': [147, 211, 203], | |
'isthing': 0, | |
'id': 93, | |
'name': 'blanket' | |
}, | |
{ | |
'color': [150, 100, 100], | |
'isthing': 0, | |
'id': 95, | |
'name': 'bridge' | |
}, | |
{ | |
'color': [168, 171, 172], | |
'isthing': 0, | |
'id': 100, | |
'name': 'cardboard' | |
}, | |
{ | |
'color': [146, 112, 198], | |
'isthing': 0, | |
'id': 107, | |
'name': 'counter' | |
}, | |
{ | |
'color': [210, 170, 100], | |
'isthing': 0, | |
'id': 109, | |
'name': 'curtain' | |
}, | |
{ | |
'color': [92, 136, 89], | |
'isthing': 0, | |
'id': 112, | |
'name': 'door-stuff' | |
}, | |
{ | |
'color': [218, 88, 184], | |
'isthing': 0, | |
'id': 118, | |
'name': 'floor-wood' | |
}, | |
{ | |
'color': [241, 129, 0], | |
'isthing': 0, | |
'id': 119, | |
'name': 'flower' | |
}, | |
{ | |
'color': [217, 17, 255], | |
'isthing': 0, | |
'id': 122, | |
'name': 'fruit' | |
}, | |
{ | |
'color': [124, 74, 181], | |
'isthing': 0, | |
'id': 125, | |
'name': 'gravel' | |
}, | |
{ | |
'color': [70, 70, 70], | |
'isthing': 0, | |
'id': 128, | |
'name': 'house' | |
}, | |
{ | |
'color': [255, 228, 255], | |
'isthing': 0, | |
'id': 130, | |
'name': 'light' | |
}, | |
{ | |
'color': [154, 208, 0], | |
'isthing': 0, | |
'id': 133, | |
'name': 'mirror-stuff' | |
}, | |
{ | |
'color': [193, 0, 92], | |
'isthing': 0, | |
'id': 138, | |
'name': 'net' | |
}, | |
{ | |
'color': [76, 91, 113], | |
'isthing': 0, | |
'id': 141, | |
'name': 'pillow' | |
}, | |
{ | |
'color': [255, 180, 195], | |
'isthing': 0, | |
'id': 144, | |
'name': 'platform' | |
}, | |
{ | |
'color': [106, 154, 176], | |
'isthing': 0, | |
'id': 145, | |
'name': 'playingfield' | |
}, | |
{ | |
'color': [230, 150, 140], | |
'isthing': 0, | |
'id': 147, | |
'name': 'railroad' | |
}, | |
{ | |
'color': [60, 143, 255], | |
'isthing': 0, | |
'id': 148, | |
'name': 'river' | |
}, | |
{ | |
'color': [128, 64, 128], | |
'isthing': 0, | |
'id': 149, | |
'name': 'road' | |
}, | |
{ | |
'color': [92, 82, 55], | |
'isthing': 0, | |
'id': 151, | |
'name': 'roof' | |
}, | |
{ | |
'color': [254, 212, 124], | |
'isthing': 0, | |
'id': 154, | |
'name': 'sand' | |
}, | |
{ | |
'color': [73, 77, 174], | |
'isthing': 0, | |
'id': 155, | |
'name': 'sea' | |
}, | |
{ | |
'color': [255, 160, 98], | |
'isthing': 0, | |
'id': 156, | |
'name': 'shelf' | |
}, | |
{ | |
'color': [255, 255, 255], | |
'isthing': 0, | |
'id': 159, | |
'name': 'snow' | |
}, | |
{ | |
'color': [104, 84, 109], | |
'isthing': 0, | |
'id': 161, | |
'name': 'stairs' | |
}, | |
{ | |
'color': [169, 164, 131], | |
'isthing': 0, | |
'id': 166, | |
'name': 'tent' | |
}, | |
{ | |
'color': [225, 199, 255], | |
'isthing': 0, | |
'id': 168, | |
'name': 'towel' | |
}, | |
{ | |
'color': [137, 54, 74], | |
'isthing': 0, | |
'id': 171, | |
'name': 'wall-brick' | |
}, | |
{ | |
'color': [135, 158, 223], | |
'isthing': 0, | |
'id': 175, | |
'name': 'wall-stone' | |
}, | |
{ | |
'color': [7, 246, 231], | |
'isthing': 0, | |
'id': 176, | |
'name': 'wall-tile' | |
}, | |
{ | |
'color': [107, 255, 200], | |
'isthing': 0, | |
'id': 177, | |
'name': 'wall-wood' | |
}, | |
{ | |
'color': [58, 41, 149], | |
'isthing': 0, | |
'id': 178, | |
'name': 'water-other' | |
}, | |
{ | |
'color': [183, 121, 142], | |
'isthing': 0, | |
'id': 180, | |
'name': 'window-blind' | |
}, | |
{ | |
'color': [255, 73, 97], | |
'isthing': 0, | |
'id': 181, | |
'name': 'window-other' | |
}, | |
{ | |
'color': [107, 142, 35], | |
'isthing': 0, | |
'id': 184, | |
'name': 'tree-merged' | |
}, | |
{ | |
'color': [190, 153, 153], | |
'isthing': 0, | |
'id': 185, | |
'name': 'fence-merged' | |
}, | |
{ | |
'color': [146, 139, 141], | |
'isthing': 0, | |
'id': 186, | |
'name': 'ceiling-merged' | |
}, | |
{ | |
'color': [70, 130, 180], | |
'isthing': 0, | |
'id': 187, | |
'name': 'sky-other-merged' | |
}, | |
{ | |
'color': [134, 199, 156], | |
'isthing': 0, | |
'id': 188, | |
'name': 'cabinet-merged' | |
}, | |
{ | |
'color': [209, 226, 140], | |
'isthing': 0, | |
'id': 189, | |
'name': 'table-merged' | |
}, | |
{ | |
'color': [96, 36, 108], | |
'isthing': 0, | |
'id': 190, | |
'name': 'floor-other-merged' | |
}, | |
{ | |
'color': [96, 96, 96], | |
'isthing': 0, | |
'id': 191, | |
'name': 'pavement-merged' | |
}, | |
{ | |
'color': [64, 170, 64], | |
'isthing': 0, | |
'id': 192, | |
'name': 'mountain-merged' | |
}, | |
{ | |
'color': [152, 251, 152], | |
'isthing': 0, | |
'id': 193, | |
'name': 'grass-merged' | |
}, | |
{ | |
'color': [208, 229, 228], | |
'isthing': 0, | |
'id': 194, | |
'name': 'dirt-merged' | |
}, | |
{ | |
'color': [206, 186, 171], | |
'isthing': 0, | |
'id': 195, | |
'name': 'paper-merged' | |
}, | |
{ | |
'color': [152, 161, 64], | |
'isthing': 0, | |
'id': 196, | |
'name': 'food-other-merged' | |
}, | |
{ | |
'color': [116, 112, 0], | |
'isthing': 0, | |
'id': 197, | |
'name': 'building-other-merged' | |
}, | |
{ | |
'color': [0, 114, 143], | |
'isthing': 0, | |
'id': 198, | |
'name': 'rock-merged' | |
}, | |
{ | |
'color': [102, 102, 156], | |
'isthing': 0, | |
'id': 199, | |
'name': 'wall-other-merged' | |
}, | |
{ | |
'color': [250, 141, 255], | |
'isthing': 0, | |
'id': 200, | |
'name': 'rug-merged' | |
}, | |
] | |
def get_coco_meta() -> Sequence[Any]: | |
return copy.deepcopy(_COCO_META) | |
def get_id_mapping() -> Mapping[int, int]: | |
"""Creates a dictionary mapping the original category_id into continuous ones. | |
Specifically, in coco annotations, category_id ranges from 1 to 200. Since not | |
every id between 1 to 200 is used, we map them to contiguous ids (1 to 133), | |
which saves memory and computation to some degree. | |
Returns: | |
A dictionary mapping original category id to contiguous category ids. | |
""" | |
id_mapping = {} | |
for i in range(len(_COCO_META)): | |
id_mapping[_COCO_META[i]['id']] = i + 1 | |
return id_mapping | |
def get_id_mapping_inverse() -> Sequence[int]: | |
"""Creates a tuple mapping the continuous ids back to original ones. | |
Specifically, in coco annotations, category_id ranges from 1 to 200. Since not | |
every id between 1 to 200 is used, we map them to contiguous ids (1 to 133) | |
via the function get_id_mapping, which saves memory and computation to some | |
degree. This function supports remapping back from the contiguous ids to the | |
original ones, which is required for COCO official evaluation. | |
Returns: | |
A dictionary mapping contiguous category ids to original COCO category id. | |
""" | |
id_mapping_inverse = (0,) + tuple([ori_cat['id'] for ori_cat in _COCO_META]) | |
return id_mapping_inverse | |
def get_coco_reduced_meta() -> Sequence[Any]: | |
coco_reduced_meta = get_coco_meta() | |
id_mapping = get_id_mapping() | |
for i in range(len(coco_reduced_meta)): | |
coco_reduced_meta[i].update({'id': id_mapping[coco_reduced_meta[i]['id']]}) | |
return coco_reduced_meta | |