|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""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 |
|
|