Source code for datumaro.plugins.data_formats.mapillary_vistas.format

# Copyright (C) 2022-2023 Intel Corporation
#
# SPDX-License-Identifier: MIT

from collections import OrderedDict
from enum import Enum, auto

from datumaro.components.annotation import AnnotationType, LabelCategories, MaskCategories
from datumaro.util import parse_json_file
from datumaro.util.mask_tools import generate_colormap


[docs] def parse_config_file(config_path): label_map = OrderedDict() config = parse_json_file(config_path) for label in config["labels"]: label_map[label["name"]] = tuple(map(int, label["color"])) return label_map
[docs] def make_mapillary_instance_categories(label_map): label_cat = LabelCategories() for label, _ in label_map.items(): label_cat.add(label) has_colors = any([len(color) == 3 for color in label_map.values()]) if not has_colors: colormap = generate_colormap(len(label_map)) else: colormap = {label_cat.find(label)[0]: color for label, color in label_map.items()} mask_cat = MaskCategories(colormap) mask_cat.inverse_colormap # pylint: disable=pointless-statement return {AnnotationType.label: label_cat, AnnotationType.mask: mask_cat}
[docs] class MapillaryVistasTask(Enum): instances = auto() panoptic = auto()
[docs] class MapillaryVistasPath: IMAGES_DIR = "images" INSTANCES_DIR = "instances" PANOPTIC_DIR = "panoptic" POLYGON_DIR = "polygons" CLASS_DIR = "labels" MASK_EXT = ".png" ANNOTATION_DIRS = { "v1.2": [CLASS_DIR, INSTANCES_DIR, PANOPTIC_DIR], "v2.0": [CLASS_DIR, INSTANCES_DIR, PANOPTIC_DIR, POLYGON_DIR], } CONFIG_FILES = {"v1.2": "config_v1.2.json", "v2.0": "config_v2.0.json"} PANOPTIC_CONFIG = {"v1.2": "panoptic_2018.json", "v2.0": "panoptic_2020.json"} CLASS_BY_DIR = { INSTANCES_DIR: MapillaryVistasTask.instances, CLASS_DIR: MapillaryVistasTask.instances, POLYGON_DIR: MapillaryVistasTask.instances, PANOPTIC_DIR: MapillaryVistasTask.panoptic, }
MapillaryVistasLabelMap_V12 = OrderedDict( [ ("animal--bird", (165, 42, 42)), ("animal--ground-animal", (0, 192, 0)), ("construction--barrier--curb", (196, 196, 196)), ("construction--barrier--fence", (190, 153, 153)), ("construction--barrier--guard-rail", (180, 165, 180)), ("construction--barrier--other-barrier", (90, 120, 150)), ("construction--barrier--wall", (102, 102, 156)), ("construction--flat--bike-lane", (128, 64, 255)), ("construction--flat--crosswalk-plain", (140, 140, 200)), ("construction--flat--curb-cut", (170, 170, 170)), ("construction--flat--parking", (250, 170, 160)), ("construction--flat--pedestrian-area", (96, 96, 96)), ("construction--flat--rail-track", (230, 150, 140)), ("construction--flat--road", (128, 64, 128)), ("construction--flat--service-lane", (110, 110, 110)), ("construction--flat--sidewalk", (244, 35, 232)), ("construction--structure--bridge", (150, 100, 100)), ("construction--structure--building", (70, 70, 70)), ("construction--structure--tunnel", (150, 120, 90)), ("human--person", (220, 20, 60)), ("human--rider--bicyclist", (255, 0, 0)), ("human--rider--motorcyclist", (255, 0, 100)), ("human--rider--other-rider", (255, 0, 200)), ("marking--crosswalk-zebra", (200, 128, 128)), ("marking--general", (255, 255, 255)), ("nature--mountain", (64, 170, 64)), ("nature--sand", (230, 160, 50)), ("nature--sky", (70, 130, 180)), ("nature--snow", (190, 255, 255)), ("nature--terrain", (152, 251, 152)), ("nature--vegetation", (107, 142, 35)), ("nature--water", (0, 170, 30)), ("object--banner", (255, 255, 128)), ("object--bench", (250, 0, 30)), ("object--bike-rack", (100, 140, 180)), ("object--billboard", (220, 220, 220)), ("object--catch-basin", (220, 128, 128)), ("object--cctv-camera", (222, 40, 40)), ("object--fire-hydrant", (100, 170, 30)), ("object--junction-box", (40, 40, 40)), ("object--mailbox", (33, 33, 33)), ("object--manhole", (100, 128, 160)), ("object--phone-booth", (142, 0, 0)), ("object--pothole", (70, 100, 150)), ("object--street-light", (210, 170, 100)), ("object--support--pole", (153, 153, 153)), ("object--support--traffic-sign-frame", (128, 128, 128)), ("object--support--utility-pole", (0, 0, 80)), ("object--traffic-light", (250, 170, 30)), ("object--traffic-sign--back", (192, 192, 192)), ("object--traffic-sign--front", (220, 220, 0)), ("object--trash-can", (140, 140, 20)), ("object--vehicle--bicycle", (119, 11, 32)), ("object--vehicle--boat", (150, 0, 255)), ("object--vehicle--bus", (0, 60, 100)), ("object--vehicle--car", (0, 0, 142)), ("object--vehicle--caravan", (0, 0, 90)), ("object--vehicle--motorcycle", (0, 0, 230)), ("object--vehicle--on-rails", (0, 80, 100)), ("object--vehicle--other-vehicle", (128, 64, 64)), ("object--vehicle--trailer", (0, 0, 110)), ("object--vehicle--truck", (0, 0, 70)), ("object--vehicle--wheeled-slow", (0, 0, 192)), ("void--car-mount", (32, 32, 32)), ("void--ego-vehicle", (120, 10, 10)), ("void--unlabeled", (0, 0, 0)), ] ) MapillaryVistasLabelMap_V20 = OrderedDict( [ ("animal--bird", (165, 42, 42)), ("animal--ground-animal", (0, 192, 0)), ("construction--barrier--ambiguous", (250, 170, 31)), ("construction--barrier--concrete-block", (250, 170, 32)), ("construction--barrier--curb", (196, 196, 196)), ("construction--barrier--fence", (190, 153, 153)), ("construction--barrier--guard-rail", (180, 165, 180)), ("construction--barrier--other-barrier", (90, 120, 150)), ("construction--barrier--road-median", (250, 170, 33)), ("construction--barrier--road-side", (250, 170, 34)), ("construction--barrier--separator", (128, 128, 128)), ("construction--barrier--temporary", (250, 170, 35)), ("construction--barrier--wall", (102, 102, 156)), ("construction--flat--bike-lane", (128, 64, 255)), ("construction--flat--crosswalk-plain", (140, 140, 200)), ("construction--flat--curb-cut", (170, 170, 170)), ("construction--flat--driveway", (250, 170, 36)), ("construction--flat--parking", (250, 170, 160)), ("construction--flat--parking-aisle", (250, 170, 37)), ("construction--flat--pedestrian-area", (96, 96, 96)), ("construction--flat--rail-track", (230, 150, 140)), ("construction--flat--road", (128, 64, 128)), ("construction--flat--road-shoulder", (110, 110, 110)), ("construction--flat--service-lane", (110, 110, 110)), ("construction--flat--sidewalk", (244, 35, 232)), ("construction--flat--traffic-island", (128, 196, 128)), ("construction--structure--bridge", (150, 100, 100)), ("construction--structure--building", (70, 70, 70)), ("construction--structure--garage", (150, 150, 150)), ("construction--structure--tunnel", (150, 120, 90)), ("human--person--individual", (220, 20, 60)), ("human--person--person-group", (220, 20, 60)), ("human--rider--bicyclist", (255, 0, 0)), ("human--rider--motorcyclist", (255, 0, 100)), ("human--rider--other-rider", (255, 0, 200)), ("marking--continuous--dashed", (255, 255, 255)), ("marking--continuous--solid", (255, 255, 255)), ("marking--continuous--zigzag", (250, 170, 29)), ("marking--discrete--ambiguous", (250, 170, 28)), ("marking--discrete--arrow--left", (250, 170, 26)), ("marking--discrete--arrow--other", (250, 170, 25)), ("marking--discrete--arrow--right", (250, 170, 24)), ("marking--discrete--arrow--split-left-or-straight", (250, 170, 22)), ("marking--discrete--arrow--split-right-or-straight", (250, 170, 21)), ("marking--discrete--arrow--straight", (250, 170, 20)), ("marking--discrete--crosswalk-zebra", (255, 255, 255)), ("marking--discrete--give-way-row", (250, 170, 19)), ("marking--discrete--give-way-single", (250, 170, 18)), ("marking--discrete--hatched--chevron", (250, 170, 12)), ("marking--discrete--hatched--diagonal", (250, 170, 11)), ("marking--discrete--other-marking", (255, 255, 255)), ("marking--discrete--stop-line", (255, 255, 255)), ("marking--discrete--symbol--bicycle", (250, 170, 16)), ("marking--discrete--symbol--other", (250, 170, 15)), ("marking--discrete--text", (250, 170, 15)), ("marking-only--continuous--dashed", (255, 255, 255)), ("marking-only--discrete--crosswalk-zebra", (255, 255, 255)), ("marking-only--discrete--other-marking", (255, 255, 255)), ("marking-only--discrete--text", (255, 255, 255)), ("nature--mountain", (64, 170, 64)), ("nature--sand", (230, 160, 50)), ("nature--sky", (70, 130, 180)), ("nature--snow", (190, 255, 255)), ("nature--terrain", (152, 251, 152)), ("nature--vegetation", (107, 142, 35)), ("nature--water", (0, 170, 30)), ("object--banner", (255, 255, 128)), ("object--bench", (250, 0, 30)), ("object--bike-rack", (100, 140, 180)), ("object--catch-basin", (220, 128, 128)), ("object--cctv-camera", (222, 40, 40)), ("object--fire-hydrant", (100, 170, 30)), ("object--junction-box", (40, 40, 40)), ("object--mailbox", (33, 33, 33)), ("object--manhole", (100, 128, 160)), ("object--parking-meter", (20, 20, 255)), ("object--phone-booth", (142, 0, 0)), ("object--pothole", (70, 100, 150)), ("object--sign--advertisement", (250, 171, 30)), ("object--sign--ambiguous", (250, 172, 30)), ("object--sign--back", (250, 173, 30)), ("object--sign--information", (250, 174, 30)), ("object--sign--other", (250, 175, 30)), ("object--sign--store", (250, 176, 30)), ("object--street-light", (210, 170, 100)), ("object--support--pole", (153, 153, 153)), ("object--support--pole-group", (153, 153, 153)), ("object--support--traffic-sign-frame", (128, 128, 128)), ("object--support--utility-pole", (0, 0, 80)), ("object--traffic-cone", (210, 60, 60)), ("object--traffic-light--cyclists", (250, 170, 30)), ("object--traffic-light--general-horizontal", (250, 170, 30)), ("object--traffic-light--general-single", (250, 170, 30)), ("object--traffic-light--general-upright", (250, 170, 30)), ("object--traffic-light--other", (250, 170, 30)), ("object--traffic-light--pedestrians", (250, 170, 30)), ("object--traffic-sign--ambiguous", (192, 192, 192)), ("object--traffic-sign--back", (192, 192, 192)), ("object--traffic-sign--direction-back", (192, 192, 192)), ("object--traffic-sign--direction-front", (220, 220, 0)), ("object--traffic-sign--front", (220, 220, 0)), ("object--traffic-sign--information-parking", (0, 0, 196)), ("object--traffic-sign--temporary-back", (192, 192, 192)), ("object--traffic-sign--temporary-front", (220, 220, 0)), ("object--trash-can", (140, 140, 20)), ("object--vehicle--bicycle", (119, 11, 32)), ("object--vehicle--boat", (150, 0, 255)), ("object--vehicle--bus", (0, 60, 100)), ("object--vehicle--car", (0, 0, 142)), ("object--vehicle--caravan", (0, 0, 90)), ("object--vehicle--motorcycle", (0, 0, 230)), ("object--vehicle--on-rails", (0, 80, 100)), ("object--vehicle--other-vehicle", (128, 64, 64)), ("object--vehicle--trailer", (0, 0, 110)), ("object--vehicle--truck", (0, 0, 70)), ("object--vehicle--vehicle-group", (0, 0, 142)), ("object--vehicle--wheeled-slow", (0, 0, 192)), ("object--water-valve", (170, 170, 170)), ("void--car-mount", (32, 32, 32)), ("void--dynamic", (111, 74, 0)), ("void--ego-vehicle", (120, 10, 10)), ("void--ground", (81, 0, 81)), ("void--static", (111, 111, 0)), ("void--unlabeled", (0, 0, 0)), ] ) MapillaryVistasLabelMaps = { "v1.2": MapillaryVistasLabelMap_V12, "v2.0": MapillaryVistasLabelMap_V20, }