Spaces:
Runtime error
Runtime error
# -*- coding: utf-8 -*- | |
# Copyright (c) Facebook, Inc. and its affiliates. | |
""" | |
Note: | |
For your custom dataset, there is no need to hard-code metadata anywhere in the code. | |
For example, for COCO-format dataset, metadata will be obtained automatically | |
when calling `load_coco_json`. For other dataset, metadata may also be obtained in other ways | |
during loading. | |
However, we hard-coded metadata for a few common dataset here. | |
The only goal is to allow users who don't have these dataset to use pre-trained models. | |
Users don't have to download a COCO json (which contains metadata), in order to visualize a | |
COCO model (with correct class names and colors). | |
""" | |
# meta data for 65-48-17 zeroshot split of COCO | |
COCO_OVD_CATEGORIES = { | |
'target': [ | |
{"color": [106, 0, 228], "isthing": 1, "id": 5, "name": "airplane"}, | |
{"color": [0, 60, 100], "isthing": 1, "id": 6, "name": "bus"}, | |
{"color": [255, 77, 255], "isthing": 1, "id": 17, "name": "cat"}, | |
{"color": [0, 226, 252], "isthing": 1, "id": 18, "name": "dog"}, | |
{"color": [120, 166, 157], "isthing": 1, "id": 21, "name": "cow"}, | |
{"color": [110, 76, 0], "isthing": 1, "id": 22, "name": "elephant"}, | |
{"color": [0, 125, 92], "isthing": 1, "id": 28, "name": "umbrella"}, | |
{"color": [188, 208, 182], "isthing": 1, "id": 32, "name": "tie"}, | |
{"color": [133, 129, 255], "isthing": 1, "id": 36, "name": "snowboard"}, | |
{"color": [134, 134, 103], "isthing": 1, "id": 41, "name": "skateboard"}, | |
{"color": [109, 63, 54], "isthing": 1, "id": 47, "name": "cup"}, | |
{"color": [151, 0, 95], "isthing": 1, "id": 49, "name": "knife"}, | |
{"color": [147, 186, 208], "isthing": 1, "id": 61, "name": "cake"}, | |
{"color": [3, 95, 161], "isthing": 1, "id": 63, "name": "couch"}, | |
{"color": [166, 74, 118], "isthing": 1, "id": 76, "name": "keyboard"}, | |
{"color": [127, 167, 115], "isthing": 1, "id": 81, "name": "sink"}, | |
{"color": [128, 76, 255], "isthing": 1, "id": 87, "name": "scissors"}, | |
], | |
'base': [ | |
{"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": [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, 0, 30], "isthing": 1, "id": 15, "name": "bench"}, | |
{"color": [165, 42, 42], "isthing": 1, "id": 16, "name": "bird"}, | |
{"color": [182, 182, 255], "isthing": 1, "id": 19, "name": "horse"}, | |
{"color": [0, 82, 0], "isthing": 1, "id": 20, "name": "sheep"}, | |
{"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": [209, 0, 151], "isthing": 1, "id": 31, "name": "handbag"}, | |
{"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": [0, 228, 0], "isthing": 1, "id": 38, "name": "kite"}, | |
{"color": [145, 148, 174], "isthing": 1, "id": 42, "name": "surfboard"}, | |
{"color": [197, 226, 255], "isthing": 1, "id": 44, "name": "bottle"}, | |
{"color": [207, 138, 255], "isthing": 1, "id": 48, "name": "fork"}, | |
{"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": [5, 121, 0], "isthing": 1, "id": 59, "name": "pizza"}, | |
{"color": [227, 255, 205], "isthing": 1, "id": 60, "name": "donut"}, | |
{"color": [153, 69, 1], "isthing": 1, "id": 62, "name": "chair"}, | |
{"color": [119, 0, 170], "isthing": 1, "id": 65, "name": "bed"}, | |
{"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": [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": [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": [191, 162, 208], "isthing": 1, "id": 90, "name": "toothbrush"}, | |
], | |
'all': [ | |
{"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, 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": [0, 228, 0], "isthing": 1, "id": 38, "name": "kite"}, | |
{"color": [134, 134, 103], "isthing": 1, "id": 41, "name": "skateboard"}, | |
{"color": [145, 148, 174], "isthing": 1, "id": 42, "name": "surfboard"}, | |
{"color": [197, 226, 255], "isthing": 1, "id": 44, "name": "bottle"}, | |
{"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": [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": [119, 0, 170], "isthing": 1, "id": 65, "name": "bed"}, | |
{"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": [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": [191, 162, 208], "isthing": 1, "id": 90, "name": "toothbrush"}, | |
], | |
} | |
# Classes not used in COCO_OVD_CATEGORIES | |
NOT_USED = [ | |
{"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": [78, 180, 255], "isthing": 1, "id": 37, "name": "sports ball"}, | |
{"color": [174, 255, 243], "isthing": 1, "id": 39, "name": "baseball bat"}, | |
{"color": [45, 89, 255], "isthing": 1, "id": 40, "name": "baseball glove"}, | |
{"color": [255, 208, 186], "isthing": 1, "id": 43, "name": "tennis racket"}, | |
{"color": [171, 134, 1], "isthing": 1, "id": 46, "name": "wine glass"}, | |
{"color": [209, 99, 106], "isthing": 1, "id": 58, "name": "hot dog"}, | |
{"color": [163, 255, 0], "isthing": 1, "id": 64, "name": "potted plant"}, | |
{"color": [0, 182, 199], "isthing": 1, "id": 67, "name": "dining table"}, | |
{"color": [219, 142, 185], "isthing": 1, "id": 77, "name": "cell phone"}, | |
{"color": [201, 57, 1], "isthing": 1, "id": 88, "name": "teddy bear"}, | |
{"color": [246, 0, 122], "isthing": 1, "id": 89, "name": "hair drier"}, | |
{"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": [135, 158, 223], "isthing": 0, "id": 175, "name": "wall-stone"}, | |
{"color": [137, 54, 74], "isthing": 0, "id": 171, "name": "wall-brick"}, | |
{"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"}, | |
] | |
# All coco categories, together with their nice-looking visualization colors | |
# It's from https://github.com/cocodataset/panopticapi/blob/master/panoptic_coco_categories.json | |
COCO_CATEGORIES = [ | |
{"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"}, | |
] | |
# fmt: off | |
COCO_PERSON_KEYPOINT_NAMES = ( | |
"nose", | |
"left_eye", "right_eye", | |
"left_ear", "right_ear", | |
"left_shoulder", "right_shoulder", | |
"left_elbow", "right_elbow", | |
"left_wrist", "right_wrist", | |
"left_hip", "right_hip", | |
"left_knee", "right_knee", | |
"left_ankle", "right_ankle", | |
) | |
# fmt: on | |
# Pairs of keypoints that should be exchanged under horizontal flipping | |
COCO_PERSON_KEYPOINT_FLIP_MAP = ( | |
("left_eye", "right_eye"), | |
("left_ear", "right_ear"), | |
("left_shoulder", "right_shoulder"), | |
("left_elbow", "right_elbow"), | |
("left_wrist", "right_wrist"), | |
("left_hip", "right_hip"), | |
("left_knee", "right_knee"), | |
("left_ankle", "right_ankle"), | |
) | |
# rules for pairs of keypoints to draw a line between, and the line color to use. | |
KEYPOINT_CONNECTION_RULES = [ | |
# face | |
("left_ear", "left_eye", (102, 204, 255)), | |
("right_ear", "right_eye", (51, 153, 255)), | |
("left_eye", "nose", (102, 0, 204)), | |
("nose", "right_eye", (51, 102, 255)), | |
# upper-body | |
("left_shoulder", "right_shoulder", (255, 128, 0)), | |
("left_shoulder", "left_elbow", (153, 255, 204)), | |
("right_shoulder", "right_elbow", (128, 229, 255)), | |
("left_elbow", "left_wrist", (153, 255, 153)), | |
("right_elbow", "right_wrist", (102, 255, 224)), | |
# lower-body | |
("left_hip", "right_hip", (255, 102, 0)), | |
("left_hip", "left_knee", (255, 255, 77)), | |
("right_hip", "right_knee", (153, 255, 204)), | |
("left_knee", "left_ankle", (191, 255, 128)), | |
("right_knee", "right_ankle", (255, 195, 77)), | |
] | |
# All Cityscapes categories, together with their nice-looking visualization colors | |
# It's from https://github.com/mcordts/cityscapesScripts/blob/master/cityscapesscripts/helpers/labels.py # noqa | |
CITYSCAPES_CATEGORIES = [ | |
{"color": (128, 64, 128), "isthing": 0, "id": 7, "trainId": 0, "name": "road"}, | |
{"color": (244, 35, 232), "isthing": 0, "id": 8, "trainId": 1, "name": "sidewalk"}, | |
{"color": (70, 70, 70), "isthing": 0, "id": 11, "trainId": 2, "name": "building"}, | |
{"color": (102, 102, 156), "isthing": 0, "id": 12, "trainId": 3, "name": "wall"}, | |
{"color": (190, 153, 153), "isthing": 0, "id": 13, "trainId": 4, "name": "fence"}, | |
{"color": (153, 153, 153), "isthing": 0, "id": 17, "trainId": 5, "name": "pole"}, | |
{"color": (250, 170, 30), "isthing": 0, "id": 19, "trainId": 6, "name": "traffic light"}, | |
{"color": (220, 220, 0), "isthing": 0, "id": 20, "trainId": 7, "name": "traffic sign"}, | |
{"color": (107, 142, 35), "isthing": 0, "id": 21, "trainId": 8, "name": "vegetation"}, | |
{"color": (152, 251, 152), "isthing": 0, "id": 22, "trainId": 9, "name": "terrain"}, | |
{"color": (70, 130, 180), "isthing": 0, "id": 23, "trainId": 10, "name": "sky"}, | |
{"color": (220, 20, 60), "isthing": 1, "id": 24, "trainId": 11, "name": "person"}, | |
{"color": (255, 0, 0), "isthing": 1, "id": 25, "trainId": 12, "name": "rider"}, | |
{"color": (0, 0, 142), "isthing": 1, "id": 26, "trainId": 13, "name": "car"}, | |
{"color": (0, 0, 70), "isthing": 1, "id": 27, "trainId": 14, "name": "truck"}, | |
{"color": (0, 60, 100), "isthing": 1, "id": 28, "trainId": 15, "name": "bus"}, | |
{"color": (0, 80, 100), "isthing": 1, "id": 31, "trainId": 16, "name": "train"}, | |
{"color": (0, 0, 230), "isthing": 1, "id": 32, "trainId": 17, "name": "motorcycle"}, | |
{"color": (119, 11, 32), "isthing": 1, "id": 33, "trainId": 18, "name": "bicycle"}, | |
] | |
# fmt: off | |
ADE20K_SEM_SEG_CATEGORIES = [ | |
"wall", "building", "sky", "floor", "tree", "ceiling", "road, route", "bed", "window ", "grass", "cabinet", "sidewalk, pavement", "person", "earth, ground", "door", "table", "mountain, mount", "plant", "curtain", "chair", "car", "water", "painting, picture", "sofa", "shelf", "house", "sea", "mirror", "rug", "field", "armchair", "seat", "fence", "desk", "rock, stone", "wardrobe, closet, press", "lamp", "tub", "rail", "cushion", "base, pedestal, stand", "box", "column, pillar", "signboard, sign", "chest of drawers, chest, bureau, dresser", "counter", "sand", "sink", "skyscraper", "fireplace", "refrigerator, icebox", "grandstand, covered stand", "path", "stairs", "runway", "case, display case, showcase, vitrine", "pool table, billiard table, snooker table", "pillow", "screen door, screen", "stairway, staircase", "river", "bridge, span", "bookcase", "blind, screen", "coffee table", "toilet, can, commode, crapper, pot, potty, stool, throne", "flower", "book", "hill", "bench", "countertop", "stove", "palm, palm tree", "kitchen island", "computer", "swivel chair", "boat", "bar", "arcade machine", "hovel, hut, hutch, shack, shanty", "bus", "towel", "light", "truck", "tower", "chandelier", "awning, sunshade, sunblind", "street lamp", "booth", "tv", "plane", "dirt track", "clothes", "pole", "land, ground, soil", "bannister, banister, balustrade, balusters, handrail", "escalator, moving staircase, moving stairway", "ottoman, pouf, pouffe, puff, hassock", "bottle", "buffet, counter, sideboard", "poster, posting, placard, notice, bill, card", "stage", "van", "ship", "fountain", "conveyer belt, conveyor belt, conveyer, conveyor, transporter", "canopy", "washer, automatic washer, washing machine", "plaything, toy", "pool", "stool", "barrel, cask", "basket, handbasket", "falls", "tent", "bag", "minibike, motorbike", "cradle", "oven", "ball", "food, solid food", "step, stair", "tank, storage tank", "trade name", "microwave", "pot", "animal", "bicycle", "lake", "dishwasher", "screen", "blanket, cover", "sculpture", "hood, exhaust hood", "sconce", "vase", "traffic light", "tray", "trash can", "fan", "pier", "crt screen", "plate", "monitor", "bulletin board", "shower", "radiator", "glass, drinking glass", "clock", "flag", # noqa | |
] | |
# After processed by `prepare_ade20k_sem_seg.py`, id 255 means ignore | |
# fmt: on | |
def _get_coco_instances_meta(): | |
thing_ids = [k["id"] for k in COCO_CATEGORIES if k["isthing"] == 1] | |
thing_colors = [k["color"] for k in COCO_CATEGORIES if k["isthing"] == 1] | |
assert len(thing_ids) == 80, len(thing_ids) | |
# Mapping from the incontiguous COCO category id to an id in [0, 79] | |
thing_dataset_id_to_contiguous_id = {k: i for i, k in enumerate(thing_ids)} | |
thing_classes = [k["name"] for k in COCO_CATEGORIES if k["isthing"] == 1] | |
ret = { | |
"thing_dataset_id_to_contiguous_id": thing_dataset_id_to_contiguous_id, | |
"thing_classes": thing_classes, | |
"thing_colors": thing_colors, | |
} | |
return ret | |
def _get_coco_panoptic_separated_meta(): | |
""" | |
Returns metadata for "separated" version of the panoptic segmentation dataset. | |
""" | |
stuff_ids = [k["id"] for k in COCO_CATEGORIES if k["isthing"] == 0] | |
assert len(stuff_ids) == 53, len(stuff_ids) | |
# For semantic segmentation, this mapping maps from contiguous stuff id | |
# (in [0, 53], used in models) to ids in the dataset (used for processing results) | |
# The id 0 is mapped to an extra category "thing". | |
stuff_dataset_id_to_contiguous_id = {k: i + 1 for i, k in enumerate(stuff_ids)} | |
# When converting COCO panoptic annotations to semantic annotations | |
# We label the "thing" category to 0 | |
stuff_dataset_id_to_contiguous_id[0] = 0 | |
# 54 names for COCO stuff categories (including "things") | |
stuff_classes = ["things"] + [ | |
k["name"].replace("-other", "").replace("-merged", "") | |
for k in COCO_CATEGORIES | |
if k["isthing"] == 0 | |
] | |
# NOTE: I randomly picked a color for things | |
stuff_colors = [[82, 18, 128]] + [k["color"] for k in COCO_CATEGORIES if k["isthing"] == 0] | |
ret = { | |
"stuff_dataset_id_to_contiguous_id": stuff_dataset_id_to_contiguous_id, | |
"stuff_classes": stuff_classes, | |
"stuff_colors": stuff_colors, | |
} | |
ret.update(_get_coco_instances_meta()) | |
return ret | |
def _get_builtin_metadata(dataset_name): | |
if dataset_name == "coco": | |
return _get_coco_instances_meta() | |
if dataset_name == "coco_panoptic_separated": | |
return _get_coco_panoptic_separated_meta() | |
elif dataset_name == "coco_panoptic_standard": | |
meta = {} | |
# The following metadata maps contiguous id from [0, #thing categories + | |
# #stuff categories) to their names and colors. We have to replica of the | |
# same name and color under "thing_*" and "stuff_*" because the current | |
# visualization function in D2 handles thing and class classes differently | |
# due to some heuristic used in Panoptic FPN. We keep the same naming to | |
# enable reusing existing visualization functions. | |
thing_classes = [k["name"] for k in COCO_CATEGORIES] | |
thing_colors = [k["color"] for k in COCO_CATEGORIES] | |
stuff_classes = [k["name"] for k in COCO_CATEGORIES] | |
stuff_colors = [k["color"] for k in COCO_CATEGORIES] | |
meta["thing_classes"] = thing_classes | |
meta["thing_colors"] = thing_colors | |
meta["stuff_classes"] = stuff_classes | |
meta["stuff_colors"] = stuff_colors | |
# Convert category id for training: | |
# category id: like semantic segmentation, it is the class id for each | |
# pixel. Since there are some classes not used in evaluation, the category | |
# id is not always contiguous and thus we have two set of category ids: | |
# - original category id: category id in the original dataset, mainly | |
# used for evaluation. | |
# - contiguous category id: [0, #classes), in order to train the linear | |
# softmax classifier. | |
thing_dataset_id_to_contiguous_id = {} | |
stuff_dataset_id_to_contiguous_id = {} | |
for i, cat in enumerate(COCO_CATEGORIES): | |
if cat["isthing"]: | |
thing_dataset_id_to_contiguous_id[cat["id"]] = i | |
else: | |
stuff_dataset_id_to_contiguous_id[cat["id"]] = i | |
meta["thing_dataset_id_to_contiguous_id"] = thing_dataset_id_to_contiguous_id | |
meta["stuff_dataset_id_to_contiguous_id"] = stuff_dataset_id_to_contiguous_id | |
return meta | |
elif dataset_name == "coco_person": | |
return { | |
"thing_classes": ["person"], | |
"keypoint_names": COCO_PERSON_KEYPOINT_NAMES, | |
"keypoint_flip_map": COCO_PERSON_KEYPOINT_FLIP_MAP, | |
"keypoint_connection_rules": KEYPOINT_CONNECTION_RULES, | |
} | |
elif dataset_name == "cityscapes": | |
# fmt: off | |
CITYSCAPES_THING_CLASSES = [ | |
"person", "rider", "car", "truck", | |
"bus", "train", "motorcycle", "bicycle", | |
] | |
CITYSCAPES_STUFF_CLASSES = [ | |
"road", "sidewalk", "building", "wall", "fence", "pole", "traffic light", | |
"traffic sign", "vegetation", "terrain", "sky", "person", "rider", "car", | |
"truck", "bus", "train", "motorcycle", "bicycle", | |
] | |
# fmt: on | |
return { | |
"thing_classes": CITYSCAPES_THING_CLASSES, | |
"stuff_classes": CITYSCAPES_STUFF_CLASSES, | |
} | |
raise KeyError("No built-in metadata for dataset {}".format(dataset_name)) | |