107 lines
3.6 KiB
Python
Executable File
107 lines
3.6 KiB
Python
Executable File
"""
|
|
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())
|