""" Class configuration for the eval_tools evaluation framework. This is the single source of truth for all class definitions. To adapt the evaluator to a different class taxonomy, only edit this file. Current taxonomy matches ultralytics/cfg/datasets/mono3d_ground.yaml class_map. """ # --------------------------------------------------------------------------- # ID → display name (used by GT parser, reports, logging) # Keep this aligned with the first-seen canonical name for each ID in # ultralytics/cfg/datasets/mono3d_ground.yaml:class_map. # --------------------------------------------------------------------------- CLASS_NAMES: dict[int, str] = { 0: "car", 1: "suv", 2: "pickup", 3: "medium_car", 4: "van", 5: "bus", 6: "truck", 7: "special_vehicle", 8: "unknown", 9: "pedestrian", 10: "bicyclist", 11: "bicycle", 12: "tricycle", 13: "traffic_sign", 14: "wheel", 15: "plate", 16: "face", } # Total number of classes NUM_CLASSES: int = len(CLASS_NAMES) # --------------------------------------------------------------------------- # Raw label string → ID (used by detection result parser) # Supports all original annotation names that map to the same ID in # ultralytics/cfg/datasets/mono3d_ground.yaml:class_map. # --------------------------------------------------------------------------- CLASS_NAME_TO_ID: dict[str, int] = { "car": 0, "suv": 1, "pickup": 2, "medium_car": 3, "van": 4, "bus": 5, "truck": 6, "tanker": 6, "large_truck": 6, "construction_vehicle": 6, "special_vehicle": 7, "unknown": 8, "pedestrian": 9, "bicyclist": 10, "motorcyclist": 10, "bicycle": 11, "motorcycle": 11, "tricycle": 12, "tricyclist": 12, "traffic_sign": 13, "wheel": 14, "plate": 15, "face": 16, } # --------------------------------------------------------------------------- # 3D-annotated class IDs # face_3d_classes [0-8]: vehicle-like classes with 4-face annotations # (51-col / full JSON face fields) # complete_3d_classes[9-12]: pedestrian / rider / bike / trike classes with # whole-box 3D only (19-col labels) # --------------------------------------------------------------------------- FACE_3D_CLASSES: list[int] = [0, 1, 2, 3, 4, 5, 6, 7, 8] COMPLETE_3D_CLASSES: list[int] = [9, 10, 11, 12] CLASSES_3D: list[int] = FACE_3D_CLASSES + COMPLETE_3D_CLASSES # --------------------------------------------------------------------------- # Report labels: which 3D classes appear in evaluation reports, and how they # are labelled. vehicle_large / vehicle_small are legacy synthetic keys from # Metrics3D's class-0 size split; under the current taxonomy they are displayed # as CAR_LARGE / CAR_SMALL. # --------------------------------------------------------------------------- REPORT_3D_CLASS_LABELS: dict[str, str] = { "car": "CAR", "vehicle_large": "CAR_LARGE", "vehicle_small": "CAR_SMALL", "suv": "SUV", "pickup": "PICKUP", "medium_car": "MEDIUM_CAR", "van": "VAN", "bus": "BUS", "truck": "TRUCK", "special_vehicle": "SPECIAL_VEHICLE", "unknown": "UNKNOWN", "pedestrian": "PEDESTRIAN", "bicyclist": "BICYCLIST", "bicycle": "BICYCLE", "tricycle": "TRICYCLE", } # Ordered list of 3D class keys for iteration in comparison/report scripts. # Includes the legacy size-split sub-buckets immediately after "car". REPORT_3D_CLASS_KEYS: list[str] = list(REPORT_3D_CLASS_LABELS.keys())