Spaces:
Runtime error
Runtime error
import os | |
import os.path as osp | |
from pathlib import Path | |
import tqdm | |
from glob import glob | |
import numpy as np | |
from PIL import Image | |
COCO_CATEGORIES = [{'color': [220, 20, 60], 'isthing': 1, 'id': 0, 'name': 'person', 'trainId': 0}, | |
{'color': [119, 11, 32], 'isthing': 1, 'id': 1, 'name': 'bicycle', 'trainId': 1}, | |
{'color': [0, 0, 142], 'isthing': 1, 'id': 2, 'name': 'car', 'trainId': 2}, | |
{'color': [0, 0, 230], 'isthing': 1, 'id': 3, 'name': 'motorcycle', 'trainId': 3}, | |
{'color': [106, 0, 228], 'isthing': 1, 'id': 4, 'name': 'airplane', 'trainId': 4}, | |
{'color': [0, 60, 100], 'isthing': 1, 'id': 5, 'name': 'bus', 'trainId': 5}, | |
{'color': [0, 80, 100], 'isthing': 1, 'id': 6, 'name': 'train', 'trainId': 6}, | |
{'color': [0, 0, 70], 'isthing': 1, 'id': 7, 'name': 'truck', 'trainId': 7}, | |
{'color': [0, 0, 192], 'isthing': 1, 'id': 8, 'name': 'boat', 'trainId': 8}, | |
{'color': [250, 170, 30], 'isthing': 1, 'id': 9, 'name': 'traffic light', 'trainId': 9}, | |
{'color': [100, 170, 30], 'isthing': 1, 'id': 10, 'name': 'fire hydrant', 'trainId': 10}, | |
{'color': [220, 220, 0], 'isthing': 1, 'id': 12, 'name': 'stop sign', 'trainId': 11}, | |
{'color': [175, 116, 175], 'isthing': 1, 'id': 13, 'name': 'parking meter', 'trainId': 12}, | |
{'color': [250, 0, 30], 'isthing': 1, 'id': 14, 'name': 'bench', 'trainId': 13}, | |
{'color': [165, 42, 42], 'isthing': 1, 'id': 15, 'name': 'bird', 'trainId': 14}, | |
{'color': [255, 77, 255], 'isthing': 1, 'id': 16, 'name': 'cat', 'trainId': 15}, | |
{'color': [0, 226, 252], 'isthing': 1, 'id': 17, 'name': 'dog', 'trainId': 16}, | |
{'color': [182, 182, 255], 'isthing': 1, 'id': 18, 'name': 'horse', 'trainId': 17}, | |
{'color': [0, 82, 0], 'isthing': 1, 'id': 19, 'name': 'sheep', 'trainId': 18}, | |
{'color': [120, 166, 157], 'isthing': 1, 'id': 20, 'name': 'cow', 'trainId': 19}, | |
{'color': [110, 76, 0], 'isthing': 1, 'id': 21, 'name': 'elephant', 'trainId': 20}, | |
{'color': [174, 57, 255], 'isthing': 1, 'id': 22, 'name': 'bear', 'trainId': 21}, | |
{'color': [199, 100, 0], 'isthing': 1, 'id': 23, 'name': 'zebra', 'trainId': 22}, | |
{'color': [72, 0, 118], 'isthing': 1, 'id': 24, 'name': 'giraffe', 'trainId': 23}, | |
{'color': [255, 179, 240], 'isthing': 1, 'id': 26, 'name': 'backpack', 'trainId': 24}, | |
{'color': [0, 125, 92], 'isthing': 1, 'id': 27, 'name': 'umbrella', 'trainId': 25}, | |
{'color': [209, 0, 151], 'isthing': 1, 'id': 30, 'name': 'handbag', 'trainId': 26}, | |
{'color': [188, 208, 182], 'isthing': 1, 'id': 31, 'name': 'tie', 'trainId': 27}, | |
{'color': [0, 220, 176], 'isthing': 1, 'id': 32, 'name': 'suitcase', 'trainId': 28}, | |
{'color': [255, 99, 164], 'isthing': 1, 'id': 33, 'name': 'frisbee', 'trainId': 29}, | |
{'color': [92, 0, 73], 'isthing': 1, 'id': 34, 'name': 'skis', 'trainId': 30}, | |
{'color': [133, 129, 255], 'isthing': 1, 'id': 35, 'name': 'snowboard', 'trainId': 31}, | |
{'color': [78, 180, 255], 'isthing': 1, 'id': 36, 'name': 'sports ball', 'trainId': 32}, | |
{'color': [0, 228, 0], 'isthing': 1, 'id': 37, 'name': 'kite', 'trainId': 33}, | |
{'color': [174, 255, 243], 'isthing': 1, 'id': 38, 'name': 'baseball bat', 'trainId': 34}, | |
{'color': [45, 89, 255], 'isthing': 1, 'id': 39, 'name': 'baseball glove', 'trainId': 35}, | |
{'color': [134, 134, 103], 'isthing': 1, 'id': 40, 'name': 'skateboard', 'trainId': 36}, | |
{'color': [145, 148, 174], 'isthing': 1, 'id': 41, 'name': 'surfboard', 'trainId': 37}, | |
{'color': [255, 208, 186], 'isthing': 1, 'id': 42, 'name': 'tennis racket', 'trainId': 38}, | |
{'color': [197, 226, 255], 'isthing': 1, 'id': 43, 'name': 'bottle', 'trainId': 39}, | |
{'color': [171, 134, 1], 'isthing': 1, 'id': 45, 'name': 'wine glass', 'trainId': 40}, | |
{'color': [109, 63, 54], 'isthing': 1, 'id': 46, 'name': 'cup', 'trainId': 41}, | |
{'color': [207, 138, 255], 'isthing': 1, 'id': 47, 'name': 'fork', 'trainId': 42}, | |
{'color': [151, 0, 95], 'isthing': 1, 'id': 48, 'name': 'knife', 'trainId': 43}, | |
{'color': [9, 80, 61], 'isthing': 1, 'id': 49, 'name': 'spoon', 'trainId': 44}, | |
{'color': [84, 105, 51], 'isthing': 1, 'id': 50, 'name': 'bowl', 'trainId': 45}, | |
{'color': [74, 65, 105], 'isthing': 1, 'id': 51, 'name': 'banana', 'trainId': 46}, | |
{'color': [166, 196, 102], 'isthing': 1, 'id': 52, 'name': 'apple', 'trainId': 47}, | |
{'color': [208, 195, 210], 'isthing': 1, 'id': 53, 'name': 'sandwich', 'trainId': 48}, | |
{'color': [255, 109, 65], 'isthing': 1, 'id': 54, 'name': 'orange', 'trainId': 49}, | |
{'color': [0, 143, 149], 'isthing': 1, 'id': 55, 'name': 'broccoli', 'trainId': 50}, | |
{'color': [179, 0, 194], 'isthing': 1, 'id': 56, 'name': 'carrot', 'trainId': 51}, | |
{'color': [209, 99, 106], 'isthing': 1, 'id': 57, 'name': 'hot dog', 'trainId': 52}, | |
{'color': [5, 121, 0], 'isthing': 1, 'id': 58, 'name': 'pizza', 'trainId': 53}, | |
{'color': [227, 255, 205], 'isthing': 1, 'id': 59, 'name': 'donut', 'trainId': 54}, | |
{'color': [147, 186, 208], 'isthing': 1, 'id': 60, 'name': 'cake', 'trainId': 55}, | |
{'color': [153, 69, 1], 'isthing': 1, 'id': 61, 'name': 'chair', 'trainId': 56}, | |
{'color': [3, 95, 161], 'isthing': 1, 'id': 62, 'name': 'couch', 'trainId': 57}, | |
{'color': [163, 255, 0], 'isthing': 1, 'id': 63, 'name': 'potted plant', 'trainId': 58}, | |
{'color': [119, 0, 170], 'isthing': 1, 'id': 64, 'name': 'bed', 'trainId': 59}, | |
{'color': [0, 182, 199], 'isthing': 1, 'id': 66, 'name': 'dining table', 'trainId': 60}, | |
{'color': [0, 165, 120], 'isthing': 1, 'id': 69, 'name': 'toilet', 'trainId': 61}, | |
{'color': [183, 130, 88], 'isthing': 1, 'id': 71, 'name': 'tv', 'trainId': 62}, | |
{'color': [95, 32, 0], 'isthing': 1, 'id': 72, 'name': 'laptop', 'trainId': 63}, | |
{'color': [130, 114, 135], 'isthing': 1, 'id': 73, 'name': 'mouse', 'trainId': 64}, | |
{'color': [110, 129, 133], 'isthing': 1, 'id': 74, 'name': 'remote', 'trainId': 65}, | |
{'color': [166, 74, 118], 'isthing': 1, 'id': 75, 'name': 'keyboard', 'trainId': 66}, | |
{'color': [219, 142, 185], 'isthing': 1, 'id': 76, 'name': 'cell phone', 'trainId': 67}, | |
{'color': [79, 210, 114], 'isthing': 1, 'id': 77, 'name': 'microwave', 'trainId': 68}, | |
{'color': [178, 90, 62], 'isthing': 1, 'id': 78, 'name': 'oven', 'trainId': 69}, | |
{'color': [65, 70, 15], 'isthing': 1, 'id': 79, 'name': 'toaster', 'trainId': 70}, | |
{'color': [127, 167, 115], 'isthing': 1, 'id': 80, 'name': 'sink', 'trainId': 71}, | |
{'color': [59, 105, 106], 'isthing': 1, 'id': 81, 'name': 'refrigerator', 'trainId': 72}, | |
{'color': [142, 108, 45], 'isthing': 1, 'id': 83, 'name': 'book', 'trainId': 73}, | |
{'color': [196, 172, 0], 'isthing': 1, 'id': 84, 'name': 'clock', 'trainId': 74}, | |
{'color': [95, 54, 80], 'isthing': 1, 'id': 85, 'name': 'vase', 'trainId': 75}, | |
{'color': [128, 76, 255], 'isthing': 1, 'id': 86, 'name': 'scissors', 'trainId': 76}, | |
{'color': [201, 57, 1], 'isthing': 1, 'id': 87, 'name': 'teddy bear', 'trainId': 77}, | |
{'color': [246, 0, 122], 'isthing': 1, 'id': 88, 'name': 'hair drier', 'trainId': 78}, | |
{'color': [191, 162, 208], 'isthing': 1, 'id': 89, 'name': 'toothbrush', 'trainId': 79}, | |
{'id': 91, 'name': 'banner', 'supercategory': 'textile', 'trainId': 80}, | |
{'id': 92, 'name': 'blanket', 'supercategory': 'textile', 'trainId': 81}, | |
{'id': 93, 'name': 'branch', 'supercategory': 'plant', 'trainId': 82}, | |
{'id': 94, 'name': 'bridge', 'supercategory': 'building', 'trainId': 83}, | |
{'id': 95, 'name': 'building-other', 'supercategory': 'building', 'trainId': 84}, | |
{'id': 96, 'name': 'bush', 'supercategory': 'plant', 'trainId': 85}, | |
{'id': 97, 'name': 'cabinet', 'supercategory': 'furniture-stuff', 'trainId': 86}, | |
{'id': 98, 'name': 'cage', 'supercategory': 'structural', 'trainId': 87}, | |
{'id': 99, 'name': 'cardboard', 'supercategory': 'raw-material', 'trainId': 88}, | |
{'id': 100, 'name': 'carpet', 'supercategory': 'floor', 'trainId': 89}, | |
{'id': 101, 'name': 'ceiling-other', 'supercategory': 'ceiling', 'trainId': 90}, | |
{'id': 102, 'name': 'ceiling-tile', 'supercategory': 'ceiling', 'trainId': 91}, | |
{'id': 103, 'name': 'cloth', 'supercategory': 'textile', 'trainId': 92}, | |
{'id': 104, 'name': 'clothes', 'supercategory': 'textile', 'trainId': 93}, | |
{'id': 105, 'name': 'clouds', 'supercategory': 'sky', 'trainId': 94}, | |
{'id': 106, 'name': 'counter', 'supercategory': 'furniture-stuff', 'trainId': 95}, | |
{'id': 107, 'name': 'cupboard', 'supercategory': 'furniture-stuff', 'trainId': 96}, | |
{'id': 108, 'name': 'curtain', 'supercategory': 'textile', 'trainId': 97}, | |
{'id': 109, 'name': 'desk-stuff', 'supercategory': 'furniture-stuff', 'trainId': 98}, | |
{'id': 110, 'name': 'dirt', 'supercategory': 'ground', 'trainId': 99}, | |
{'id': 111, 'name': 'door-stuff', 'supercategory': 'furniture-stuff', 'trainId': 100}, | |
{'id': 112, 'name': 'fence', 'supercategory': 'structural', 'trainId': 101}, | |
{'id': 113, 'name': 'floor-marble', 'supercategory': 'floor', 'trainId': 102}, | |
{'id': 114, 'name': 'floor-other', 'supercategory': 'floor', 'trainId': 103}, | |
{'id': 115, 'name': 'floor-stone', 'supercategory': 'floor', 'trainId': 104}, | |
{'id': 116, 'name': 'floor-tile', 'supercategory': 'floor', 'trainId': 105}, | |
{'id': 117, 'name': 'floor-wood', 'supercategory': 'floor', 'trainId': 106}, | |
{'id': 118, 'name': 'flower', 'supercategory': 'plant', 'trainId': 107}, | |
{'id': 119, 'name': 'fog', 'supercategory': 'water', 'trainId': 108}, | |
{'id': 120, 'name': 'food-other', 'supercategory': 'food-stuff', 'trainId': 109}, | |
{'id': 121, 'name': 'fruit', 'supercategory': 'food-stuff', 'trainId': 110}, | |
{'id': 122, 'name': 'furniture-other', 'supercategory': 'furniture-stuff', 'trainId': 111}, | |
{'id': 123, 'name': 'grass', 'supercategory': 'plant', 'trainId': 112}, | |
{'id': 124, 'name': 'gravel', 'supercategory': 'ground', 'trainId': 113}, | |
{'id': 125, 'name': 'ground-other', 'supercategory': 'ground', 'trainId': 114}, | |
{'id': 126, 'name': 'hill', 'supercategory': 'solid', 'trainId': 115}, | |
{'id': 127, 'name': 'house', 'supercategory': 'building', 'trainId': 116}, | |
{'id': 128, 'name': 'leaves', 'supercategory': 'plant', 'trainId': 117}, | |
{'id': 129, 'name': 'light', 'supercategory': 'furniture-stuff', 'trainId': 118}, | |
{'id': 130, 'name': 'mat', 'supercategory': 'textile', 'trainId': 119}, | |
{'id': 131, 'name': 'metal', 'supercategory': 'raw-material', 'trainId': 120}, | |
{'id': 132, 'name': 'mirror-stuff', 'supercategory': 'furniture-stuff', 'trainId': 121}, | |
{'id': 133, 'name': 'moss', 'supercategory': 'plant', 'trainId': 122}, | |
{'id': 134, 'name': 'mountain', 'supercategory': 'solid', 'trainId': 123}, | |
{'id': 135, 'name': 'mud', 'supercategory': 'ground', 'trainId': 124}, | |
{'id': 136, 'name': 'napkin', 'supercategory': 'textile', 'trainId': 125}, | |
{'id': 137, 'name': 'net', 'supercategory': 'structural', 'trainId': 126}, | |
{'id': 138, 'name': 'paper', 'supercategory': 'raw-material', 'trainId': 127}, | |
{'id': 139, 'name': 'pavement', 'supercategory': 'ground', 'trainId': 128}, | |
{'id': 140, 'name': 'pillow', 'supercategory': 'textile', 'trainId': 129}, | |
{'id': 141, 'name': 'plant-other', 'supercategory': 'plant', 'trainId': 130}, | |
{'id': 142, 'name': 'plastic', 'supercategory': 'raw-material', 'trainId': 131}, | |
{'id': 143, 'name': 'platform', 'supercategory': 'ground', 'trainId': 132}, | |
{'id': 144, 'name': 'playingfield', 'supercategory': 'ground', 'trainId': 133}, | |
{'id': 145, 'name': 'railing', 'supercategory': 'structural', 'trainId': 134}, | |
{'id': 146, 'name': 'railroad', 'supercategory': 'ground', 'trainId': 135}, | |
{'id': 147, 'name': 'river', 'supercategory': 'water', 'trainId': 136}, | |
{'id': 148, 'name': 'road', 'supercategory': 'ground', 'trainId': 137}, | |
{'id': 149, 'name': 'rock', 'supercategory': 'solid', 'trainId': 138}, | |
{'id': 150, 'name': 'roof', 'supercategory': 'building', 'trainId': 139}, | |
{'id': 151, 'name': 'rug', 'supercategory': 'textile', 'trainId': 140}, | |
{'id': 152, 'name': 'salad', 'supercategory': 'food-stuff', 'trainId': 141}, | |
{'id': 153, 'name': 'sand', 'supercategory': 'ground', 'trainId': 142}, | |
{'id': 154, 'name': 'sea', 'supercategory': 'water', 'trainId': 143}, | |
{'id': 155, 'name': 'shelf', 'supercategory': 'furniture-stuff', 'trainId': 144}, | |
{'id': 156, 'name': 'sky-other', 'supercategory': 'sky', 'trainId': 145}, | |
{'id': 157, 'name': 'skyscraper', 'supercategory': 'building', 'trainId': 146}, | |
{'id': 158, 'name': 'snow', 'supercategory': 'ground', 'trainId': 147}, | |
{'id': 159, 'name': 'solid-other', 'supercategory': 'solid', 'trainId': 148}, | |
{'id': 160, 'name': 'stairs', 'supercategory': 'furniture-stuff', 'trainId': 149}, | |
{'id': 161, 'name': 'stone', 'supercategory': 'solid', 'trainId': 150}, | |
{'id': 162, 'name': 'straw', 'supercategory': 'plant', 'trainId': 151}, | |
{'id': 163, 'name': 'structural-other', 'supercategory': 'structural', 'trainId': 152}, | |
{'id': 164, 'name': 'table', 'supercategory': 'furniture-stuff', 'trainId': 153}, | |
{'id': 165, 'name': 'tent', 'supercategory': 'building', 'trainId': 154}, | |
{'id': 166, 'name': 'textile-other', 'supercategory': 'textile', 'trainId': 155}, | |
{'id': 167, 'name': 'towel', 'supercategory': 'textile', 'trainId': 156}, | |
{'id': 168, 'name': 'tree', 'supercategory': 'plant', 'trainId': 157}, | |
{'id': 169, 'name': 'vegetable', 'supercategory': 'food-stuff', 'trainId': 158}, | |
{'id': 170, 'name': 'wall-brick', 'supercategory': 'wall', 'trainId': 159}, | |
{'id': 171, 'name': 'wall-concrete', 'supercategory': 'wall', 'trainId': 160}, | |
{'id': 172, 'name': 'wall-other', 'supercategory': 'wall', 'trainId': 161}, | |
{'id': 173, 'name': 'wall-panel', 'supercategory': 'wall', 'trainId': 162}, | |
{'id': 174, 'name': 'wall-stone', 'supercategory': 'wall', 'trainId': 163}, | |
{'id': 175, 'name': 'wall-tile', 'supercategory': 'wall', 'trainId': 164}, | |
{'id': 176, 'name': 'wall-wood', 'supercategory': 'wall', 'trainId': 165}, | |
{'id': 177, 'name': 'water-other', 'supercategory': 'water', 'trainId': 166}, | |
{'id': 178, 'name': 'waterdrops', 'supercategory': 'water', 'trainId': 167}, | |
{'id': 179, 'name': 'window-blind', 'supercategory': 'window', 'trainId': 168}, | |
{'id': 180, 'name': 'window-other', 'supercategory': 'window', 'trainId': 169}, | |
{'id': 181, 'name': 'wood', 'supercategory': 'solid', 'trainId': 170}] | |
if __name__ == "__main__": | |
dataset_dir = Path(os.getenv("DETECTRON2_DATASETS", "datasets")) / "coco-stuff" | |
id_map = {} | |
for cat in COCO_CATEGORIES: | |
id_map[cat["id"]] = cat["trainId"] | |
for name in ["train2017", "val2017"]: | |
annotation_dir = dataset_dir / "annotations" / name | |
output_dir = dataset_dir / "annotations_detectron2" / name | |
output_dir.mkdir(parents=True, exist_ok=True) | |
for file in tqdm.tqdm(list(annotation_dir.iterdir())): | |
output_file = output_dir / file.name | |
lab = np.asarray(Image.open(file)) | |
assert lab.dtype == np.uint8 | |
output = np.zeros_like(lab, dtype=np.uint8) + 255 | |
for obj_id in np.unique(lab): | |
if obj_id in id_map: | |
output[lab == obj_id] = id_map[obj_id] | |
Image.fromarray(output).save(output_file) |