Source code for rapidtools.data_sources.mapillary_labels

# Copyright (c) 2025 The University of Washington
#
# This file is part of rapidtools.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# You should have received a copy of the BSD 3-Clause License along with
# rapidtools. If not, see <http://www.opensource.org/licenses/>.
#
# Contributors:
# Barbaros Cetiner
#
# Last updated:
# 09-22-2026

"""
Canonical Mapillary semantic segmentation label strings.

Mapillary describes every segmented region with a hierarchical, double-dash
separated string such as ``'object--vehicle--car'``. This module exposes each
of those strings as a class constant so callers can reference labels without
risking typos, and so the full vocabulary can be enumerated programmatically
(for instance by
:class:`rapidtools.processing.label_mappers.MapillaryLabelMapper`).

Example:
    >>> from rapidtools.data_sources.mapillary_labels import MapillaryLabels
    >>>
    >>> MapillaryLabels.OBJECT_VEHICLE_CAR
    'object--vehicle--car'
"""


[docs] class MapillaryLabels: """ Namespace of official Mapillary segmentation label strings. Attribute names are upper-snake-case versions of the label with the ``--`` separators replaced by ``_``. Every attribute value is the exact string Mapillary uses in its ``detections.value`` field. Example: Look up a label by constant: >>> MapillaryLabels.NATURE_SKY 'nature--sky' Enumerate the complete vocabulary: >>> labels = [ ... v for k, v in vars(MapillaryLabels).items() ... if not k.startswith('__') and isinstance(v, str) ... ] >>> 'construction--flat--road' in labels True """ CONSTRUCTION_BARRIER_ACOUSTIC = 'construction--barrier--acoustic' CONSTRUCTION_BARRIER_AMBIGUOUS = 'construction--barrier--ambiguous' CONSTRUCTION_BARRIER_CONCRETE_BLOCK = 'construction--barrier--concrete-block' CONSTRUCTION_BARRIER_CURB = 'construction--barrier--curb' CONSTRUCTION_BARRIER_FENCE = 'construction--barrier--fence' CONSTRUCTION_BARRIER_GUARD_RAIL = 'construction--barrier--guard-rail' CONSTRUCTION_BARRIER_OTHER_BARRIER = 'construction--barrier--other-barrier' CONSTRUCTION_BARRIER_ROAD_MEDIAN = 'construction--barrier--road-median' CONSTRUCTION_BARRIER_ROAD_SIDE = 'construction--barrier--road-side' CONSTRUCTION_BARRIER_SEPARATOR = 'construction--barrier--separator' CONSTRUCTION_BARRIER_TEMPORARY = 'construction--barrier--temporary' CONSTRUCTION_BARRIER_WALL = 'construction--barrier--wall' CONSTRUCTION_FLAT_BIKE_LANE = 'construction--flat--bike-lane' CONSTRUCTION_FLAT_CROSSWALK_PLAIN = 'construction--flat--crosswalk-plain' CONSTRUCTION_FLAT_CURB_CUT = 'construction--flat--curb-cut' CONSTRUCTION_FLAT_DRIVEWAY = 'construction--flat--driveway' CONSTRUCTION_FLAT_PARKING = 'construction--flat--parking' CONSTRUCTION_FLAT_PARKING_AISLE = 'construction--flat--parking-aisle' CONSTRUCTION_FLAT_PEDESTRIAN_AREA = 'construction--flat--pedestrian-area' CONSTRUCTION_FLAT_RAIL_TRACK = 'construction--flat--rail-track' CONSTRUCTION_FLAT_ROAD = 'construction--flat--road' CONSTRUCTION_FLAT_ROAD_SHOULDER = 'construction--flat--road-shoulder' CONSTRUCTION_FLAT_SERVICE_LANE = 'construction--flat--service-lane' CONSTRUCTION_FLAT_SIDEWALK = 'construction--flat--sidewalk' CONSTRUCTION_FLAT_TRAFFIC_ISLAND = 'construction--flat--traffic-island' CONSTRUCTION_STRUCTURE_BRIDGE = 'construction--structure--bridge' CONSTRUCTION_STRUCTURE_BUILDING = 'construction--structure--building' CONSTRUCTION_STRUCTURE_GARAGE = 'construction--structure--garage' CONSTRUCTION_STRUCTURE_TUNNEL = 'construction--structure--tunnel' HUMAN_PERSON_INDIVIDUAL = 'human--person--individual' HUMAN_PERSON_PERSON_GROUP = 'human--person--person-group' HUMAN_RIDER_BICYCLIST = 'human--rider--bicyclist' HUMAN_RIDER_MOTORCYCLIST = 'human--rider--motorcyclist' HUMAN_RIDER_OTHER_RIDER = 'human--rider--other-rider' MARKING_CONTINUOUS_DASHED = 'marking--continuous--dashed' MARKING_CONTINUOUS_SOLID = 'marking--continuous--solid' MARKING_CONTINUOUS_ZIGZAG = 'marking--continuous--zigzag' MARKING_DISCRETE_AMBIGUOUS = 'marking--discrete--ambiguous' MARKING_DISCRETE_ARROW_AMBIGUOUS = 'marking--discrete--arrow--ambiguous' MARKING_DISCRETE_ARROW_LEFT = 'marking--discrete--arrow--left' MARKING_DISCRETE_ARROW_OTHER = 'marking--discrete--arrow--other' MARKING_DISCRETE_ARROW_RIGHT = 'marking--discrete--arrow--right' MARKING_DISCRETE_ARROW_SPLIT_LEFT_OR_RIGHT = ( 'marking--discrete--arrow--split-left-or-right' ) MARKING_DISCRETE_ARROW_SPLIT_LEFT_OR_RIGHT_OR_STRAIGHT = ( 'marking--discrete--arrow--split-left-or-right-or-straight' ) MARKING_DISCRETE_ARROW_SPLIT_LEFT_OR_STRAIGHT = ( 'marking--discrete--arrow--split-left-or-straight' ) MARKING_DISCRETE_ARROW_SPLIT_RIGHT_OR_STRAIGHT = ( 'marking--discrete--arrow--split-right-or-straight' ) MARKING_DISCRETE_ARROW_STRAIGHT = 'marking--discrete--arrow--straight' MARKING_DISCRETE_ARROW_U_TURN = 'marking--discrete--arrow--u-turn' MARKING_DISCRETE_CROSSWALK_ZEBRA = 'marking--discrete--crosswalk-zebra' MARKING_DISCRETE_GIVE_WAY_ROW = 'marking--discrete--give-way-row' MARKING_DISCRETE_GIVE_WAY_SINGLE = 'marking--discrete--give-way-single' MARKING_DISCRETE_HATCHED_CHEVRON = 'marking--discrete--hatched--chevron' MARKING_DISCRETE_HATCHED_DIAGONAL = 'marking--discrete--hatched--diagonal' MARKING_DISCRETE_OTHER_MARKING = 'marking--discrete--other-marking' MARKING_DISCRETE_STOP_LINE = 'marking--discrete--stop-line' MARKING_DISCRETE_SYMBOL_AMBIGUOUS = 'marking--discrete--symbol--ambiguous' MARKING_DISCRETE_SYMBOL_BICYCLE = 'marking--discrete--symbol--bicycle' MARKING_DISCRETE_SYMBOL_OTHER = 'marking--discrete--symbol--other' MARKING_DISCRETE_SYMBOL_PEDESTRIAN = 'marking--discrete--symbol--pedestrian' MARKING_DISCRETE_SYMBOL_WHEELCHAIR = 'marking--discrete--symbol--wheelchair' MARKING_DISCRETE_TEXT_ = 'marking--discrete--text--' MARKING_DISCRETE_TEXT_AMBIGUOUS = 'marking--discrete--text--ambiguous' MARKING_DISCRETE_TEXT_BUS = 'marking--discrete--text--bus' MARKING_DISCRETE_TEXT_OTHER = 'marking--discrete--text--other' MARKING_DISCRETE_TEXT_SCHOOL = 'marking--discrete--text--school' MARKING_DISCRETE_TEXT_SLOW = 'marking--discrete--text--slow' MARKING_DISCRETE_TEXT_STOP = 'marking--discrete--text--stop' MARKING_DISCRETE_TEXT_TAXI = 'marking--discrete--text--taxi' NATURE_BEACH = 'nature--beach' NATURE_MOUNTAIN = 'nature--mountain' NATURE_SAND = 'nature--sand' NATURE_SKY = 'nature--sky' NATURE_SNOW = 'nature--snow' NATURE_TERRAIN = 'nature--terrain' NATURE_VEGETATION = 'nature--vegetation' NATURE_WATER = 'nature--water' OBJECT_BANNER = 'object--banner' OBJECT_BENCH = 'object--bench' OBJECT_BIKE_RACK = 'object--bike-rack' OBJECT_CATCH_BASIN = 'object--catch-basin' OBJECT_CCTV_CAMERA = 'object--cctv-camera' OBJECT_FIRE_HYDRANT = 'object--fire-hydrant' OBJECT_JUNCTION_BOX = 'object--junction-box' OBJECT_MAILBOX = 'object--mailbox' OBJECT_MANHOLE = 'object--manhole' OBJECT_PARKING_METER = 'object--parking-meter' OBJECT_PHONE_BOOTH = 'object--phone-booth' OBJECT_POTHOLE = 'object--pothole' OBJECT_RAMP = 'object--ramp' OBJECT_SIGN_ADVERTISEMENT = 'object--sign--advertisement' OBJECT_SIGN_AMBIGUOUS = 'object--sign--ambiguous' OBJECT_SIGN_BACK = 'object--sign--back' OBJECT_SIGN_INFORMATION = 'object--sign--information' OBJECT_SIGN_OTHER = 'object--sign--other' OBJECT_SIGN_STORE = 'object--sign--store' OBJECT_STREET_LIGHT = 'object--street-light' OBJECT_SUPPORT_POLE = 'object--support--pole' OBJECT_SUPPORT_POLE_GROUP = 'object--support--pole-group' OBJECT_SUPPORT_TRAFFIC_SIGN_FRAME = 'object--support--traffic-sign-frame' OBJECT_SUPPORT_UTILITY_POLE = 'object--support--utility-pole' OBJECT_TRAFFIC_CONE = 'object--traffic-cone' OBJECT_TRAFFIC_LIGHT_AMBIGUOUS = 'object--traffic-light--ambiguous' OBJECT_TRAFFIC_LIGHT_CYCLISTS_BACK = 'object--traffic-light--cyclists-back' OBJECT_TRAFFIC_LIGHT_CYCLISTS_FRONT = 'object--traffic-light--cyclists-front' OBJECT_TRAFFIC_LIGHT_CYCLISTS_SIDE = 'object--traffic-light--cyclists-side' OBJECT_TRAFFIC_LIGHT_GENERAL_HORIZONTAL_BACK = ( 'object--traffic-light--general-horizontal-back' ) OBJECT_TRAFFIC_LIGHT_GENERAL_HORIZONTAL_FRONT = ( 'object--traffic-light--general-horizontal-front' ) OBJECT_TRAFFIC_LIGHT_GENERAL_HORIZONTAL_SIDE = ( 'object--traffic-light--general-horizontal-side' ) OBJECT_TRAFFIC_LIGHT_GENERAL_SINGLE_BACK = ( 'object--traffic-light--general-single-back' ) OBJECT_TRAFFIC_LIGHT_GENERAL_SINGLE_FRONT = ( 'object--traffic-light--general-single-front' ) OBJECT_TRAFFIC_LIGHT_GENERAL_SINGLE_SIDE = ( 'object--traffic-light--general-single-side' ) OBJECT_TRAFFIC_LIGHT_GENERAL_UPRIGHT_BACK = ( 'object--traffic-light--general-upright-back' ) OBJECT_TRAFFIC_LIGHT_GENERAL_UPRIGHT_FRONT = ( 'object--traffic-light--general-upright-front' ) OBJECT_TRAFFIC_LIGHT_GENERAL_UPRIGHT_SIDE = ( 'object--traffic-light--general-upright-side' ) OBJECT_TRAFFIC_LIGHT_OTHER = 'object--traffic-light--other' OBJECT_TRAFFIC_LIGHT_PEDESTRIANS_BACK = 'object--traffic-light--pedestrians-back' OBJECT_TRAFFIC_LIGHT_PEDESTRIANS_FRONT = 'object--traffic-light--pedestrians-front' OBJECT_TRAFFIC_LIGHT_PEDESTRIANS_SIDE = 'object--traffic-light--pedestrians-side' OBJECT_TRAFFIC_LIGHT_WARNING = 'object--traffic-light--warning' OBJECT_TRAFFIC_SIGN_AMBIGUOUS = 'object--traffic-sign--ambiguous' OBJECT_TRAFFIC_SIGN_BACK = 'object--traffic-sign--back' OBJECT_TRAFFIC_SIGN_DIRECTION_BACK = 'object--traffic-sign--direction-back' OBJECT_TRAFFIC_SIGN_DIRECTION_FRONT = 'object--traffic-sign--direction-front' OBJECT_TRAFFIC_SIGN_FRONT = 'object--traffic-sign--front' OBJECT_TRAFFIC_SIGN_INFORMATION_PARKING = ( 'object--traffic-sign--information-parking' ) OBJECT_TRAFFIC_SIGN_TEMPORARY_BACK = 'object--traffic-sign--temporary-back' OBJECT_TRAFFIC_SIGN_TEMPORARY_FRONT = 'object--traffic-sign--temporary-front' OBJECT_TRASH_CAN = 'object--trash-can' OBJECT_VEHICLE_BICYCLE = 'object--vehicle--bicycle' OBJECT_VEHICLE_BOAT = 'object--vehicle--boat' OBJECT_VEHICLE_BUS = 'object--vehicle--bus' OBJECT_VEHICLE_CAR = 'object--vehicle--car' OBJECT_VEHICLE_CARAVAN = 'object--vehicle--caravan' OBJECT_VEHICLE_MOTORCYCLE = 'object--vehicle--motorcycle' OBJECT_VEHICLE_ON_RAILS = 'object--vehicle--on-rails' OBJECT_VEHICLE_OTHER_VEHICLE = 'object--vehicle--other-vehicle' OBJECT_VEHICLE_TRAILER = 'object--vehicle--trailer' OBJECT_VEHICLE_TRUCK = 'object--vehicle--truck' OBJECT_VEHICLE_VEHICLE_GROUP = 'object--vehicle--vehicle-group' OBJECT_VEHICLE_WHEELED_SLOW = 'object--vehicle--wheeled-slow' OBJECT_WATER_VALVE = 'object--water-valve' OBJECT_WIRE_GROUP = 'object--wire-group' VOID_CAR_MOUNT = 'void--car-mount' VOID_DYNAMIC = 'void--dynamic' VOID_EGO_VEHICLE = 'void--ego-vehicle' VOID_GROUND = 'void--ground' VOID_STATIC = 'void--static' VOID_UNLABELED = 'void--unlabeled'