Source code for d3d.dataset.nuscenes.constants

from enum import Enum, IntFlag, auto

train_detect = \
    ['scene-0001', 'scene-0002', 'scene-0041', 'scene-0042', 'scene-0043', 'scene-0044', 'scene-0045', 'scene-0046',
     'scene-0047', 'scene-0048', 'scene-0049', 'scene-0050', 'scene-0051', 'scene-0052', 'scene-0053', 'scene-0054',
     'scene-0055', 'scene-0056', 'scene-0057', 'scene-0058', 'scene-0059', 'scene-0060', 'scene-0061', 'scene-0062',
     'scene-0063', 'scene-0064', 'scene-0065', 'scene-0066', 'scene-0067', 'scene-0068', 'scene-0069', 'scene-0070',
     'scene-0071', 'scene-0072', 'scene-0073', 'scene-0074', 'scene-0075', 'scene-0076', 'scene-0161', 'scene-0162',
     'scene-0163', 'scene-0164', 'scene-0165', 'scene-0166', 'scene-0167', 'scene-0168', 'scene-0170', 'scene-0171',
     'scene-0172', 'scene-0173', 'scene-0174', 'scene-0175', 'scene-0176', 'scene-0190', 'scene-0191', 'scene-0192',
     'scene-0193', 'scene-0194', 'scene-0195', 'scene-0196', 'scene-0199', 'scene-0200', 'scene-0202', 'scene-0203',
     'scene-0204', 'scene-0206', 'scene-0207', 'scene-0208', 'scene-0209', 'scene-0210', 'scene-0211', 'scene-0212',
     'scene-0213', 'scene-0214', 'scene-0254', 'scene-0255', 'scene-0256', 'scene-0257', 'scene-0258', 'scene-0259',
     'scene-0260', 'scene-0261', 'scene-0262', 'scene-0263', 'scene-0264', 'scene-0283', 'scene-0284', 'scene-0285',
     'scene-0286', 'scene-0287', 'scene-0288', 'scene-0289', 'scene-0290', 'scene-0291', 'scene-0292', 'scene-0293',
     'scene-0294', 'scene-0295', 'scene-0296', 'scene-0297', 'scene-0298', 'scene-0299', 'scene-0300', 'scene-0301',
     'scene-0302', 'scene-0303', 'scene-0304', 'scene-0305', 'scene-0306', 'scene-0315', 'scene-0316', 'scene-0317',
     'scene-0318', 'scene-0321', 'scene-0323', 'scene-0324', 'scene-0347', 'scene-0348', 'scene-0349', 'scene-0350',
     'scene-0351', 'scene-0352', 'scene-0353', 'scene-0354', 'scene-0355', 'scene-0356', 'scene-0357', 'scene-0358',
     'scene-0359', 'scene-0360', 'scene-0361', 'scene-0362', 'scene-0363', 'scene-0364', 'scene-0365', 'scene-0366',
     'scene-0367', 'scene-0368', 'scene-0369', 'scene-0370', 'scene-0371', 'scene-0372', 'scene-0373', 'scene-0374',
     'scene-0375', 'scene-0382', 'scene-0420', 'scene-0421', 'scene-0422', 'scene-0423', 'scene-0424', 'scene-0425',
     'scene-0426', 'scene-0427', 'scene-0428', 'scene-0429', 'scene-0430', 'scene-0431', 'scene-0432', 'scene-0433',
     'scene-0434', 'scene-0435', 'scene-0436', 'scene-0437', 'scene-0438', 'scene-0439', 'scene-0457', 'scene-0458',
     'scene-0459', 'scene-0461', 'scene-0462', 'scene-0463', 'scene-0464', 'scene-0465', 'scene-0467', 'scene-0468',
     'scene-0469', 'scene-0471', 'scene-0472', 'scene-0474', 'scene-0475', 'scene-0476', 'scene-0477', 'scene-0478',
     'scene-0479', 'scene-0480', 'scene-0566', 'scene-0568', 'scene-0570', 'scene-0571', 'scene-0572', 'scene-0573',
     'scene-0574', 'scene-0575', 'scene-0576', 'scene-0577', 'scene-0578', 'scene-0580', 'scene-0582', 'scene-0583',
     'scene-0665', 'scene-0666', 'scene-0667', 'scene-0668', 'scene-0669', 'scene-0670', 'scene-0671', 'scene-0672',
     'scene-0673', 'scene-0674', 'scene-0675', 'scene-0676', 'scene-0677', 'scene-0678', 'scene-0679', 'scene-0681',
     'scene-0683', 'scene-0684', 'scene-0685', 'scene-0686', 'scene-0687', 'scene-0688', 'scene-0689', 'scene-0739',
     'scene-0740', 'scene-0741', 'scene-0744', 'scene-0746', 'scene-0747', 'scene-0749', 'scene-0750', 'scene-0751',
     'scene-0752', 'scene-0757', 'scene-0758', 'scene-0759', 'scene-0760', 'scene-0761', 'scene-0762', 'scene-0763',
     'scene-0764', 'scene-0765', 'scene-0767', 'scene-0768', 'scene-0769', 'scene-0868', 'scene-0869', 'scene-0870',
     'scene-0871', 'scene-0872', 'scene-0873', 'scene-0875', 'scene-0876', 'scene-0877', 'scene-0878', 'scene-0880',
     'scene-0882', 'scene-0883', 'scene-0884', 'scene-0885', 'scene-0886', 'scene-0887', 'scene-0888', 'scene-0889',
     'scene-0890', 'scene-0891', 'scene-0892', 'scene-0893', 'scene-0894', 'scene-0895', 'scene-0896', 'scene-0897',
     'scene-0898', 'scene-0899', 'scene-0900', 'scene-0901', 'scene-0902', 'scene-0903', 'scene-0945', 'scene-0947',
     'scene-0949', 'scene-0952', 'scene-0953', 'scene-0955', 'scene-0956', 'scene-0957', 'scene-0958', 'scene-0959',
     'scene-0960', 'scene-0961', 'scene-0975', 'scene-0976', 'scene-0977', 'scene-0978', 'scene-0979', 'scene-0980',
     'scene-0981', 'scene-0982', 'scene-0983', 'scene-0984', 'scene-0988', 'scene-0989', 'scene-0990', 'scene-0991',
     'scene-1011', 'scene-1012', 'scene-1013', 'scene-1014', 'scene-1015', 'scene-1016', 'scene-1017', 'scene-1018',
     'scene-1019', 'scene-1020', 'scene-1021', 'scene-1022', 'scene-1023', 'scene-1024', 'scene-1025', 'scene-1074',
     'scene-1075', 'scene-1076', 'scene-1077', 'scene-1078', 'scene-1079', 'scene-1080', 'scene-1081', 'scene-1082',
     'scene-1083', 'scene-1084', 'scene-1085', 'scene-1086', 'scene-1087', 'scene-1088', 'scene-1089', 'scene-1090',
     'scene-1091', 'scene-1092', 'scene-1093', 'scene-1094', 'scene-1095', 'scene-1096', 'scene-1097', 'scene-1098',
     'scene-1099', 'scene-1100', 'scene-1101', 'scene-1102', 'scene-1104', 'scene-1105']

train_track = \
    ['scene-0004', 'scene-0005', 'scene-0006', 'scene-0007', 'scene-0008', 'scene-0009', 'scene-0010', 'scene-0011',
     'scene-0019', 'scene-0020', 'scene-0021', 'scene-0022', 'scene-0023', 'scene-0024', 'scene-0025', 'scene-0026',
     'scene-0027', 'scene-0028', 'scene-0029', 'scene-0030', 'scene-0031', 'scene-0032', 'scene-0033', 'scene-0034',
     'scene-0120', 'scene-0121', 'scene-0122', 'scene-0123', 'scene-0124', 'scene-0125', 'scene-0126', 'scene-0127',
     'scene-0128', 'scene-0129', 'scene-0130', 'scene-0131', 'scene-0132', 'scene-0133', 'scene-0134', 'scene-0135',
     'scene-0138', 'scene-0139', 'scene-0149', 'scene-0150', 'scene-0151', 'scene-0152', 'scene-0154', 'scene-0155',
     'scene-0157', 'scene-0158', 'scene-0159', 'scene-0160', 'scene-0177', 'scene-0178', 'scene-0179', 'scene-0180',
     'scene-0181', 'scene-0182', 'scene-0183', 'scene-0184', 'scene-0185', 'scene-0187', 'scene-0188', 'scene-0218',
     'scene-0219', 'scene-0220', 'scene-0222', 'scene-0224', 'scene-0225', 'scene-0226', 'scene-0227', 'scene-0228',
     'scene-0229', 'scene-0230', 'scene-0231', 'scene-0232', 'scene-0233', 'scene-0234', 'scene-0235', 'scene-0236',
     'scene-0237', 'scene-0238', 'scene-0239', 'scene-0240', 'scene-0241', 'scene-0242', 'scene-0243', 'scene-0244',
     'scene-0245', 'scene-0246', 'scene-0247', 'scene-0248', 'scene-0249', 'scene-0250', 'scene-0251', 'scene-0252',
     'scene-0253', 'scene-0328', 'scene-0376', 'scene-0377', 'scene-0378', 'scene-0379', 'scene-0380', 'scene-0381',
     'scene-0383', 'scene-0384', 'scene-0385', 'scene-0386', 'scene-0388', 'scene-0389', 'scene-0390', 'scene-0391',
     'scene-0392', 'scene-0393', 'scene-0394', 'scene-0395', 'scene-0396', 'scene-0397', 'scene-0398', 'scene-0399',
     'scene-0400', 'scene-0401', 'scene-0402', 'scene-0403', 'scene-0405', 'scene-0406', 'scene-0407', 'scene-0408',
     'scene-0410', 'scene-0411', 'scene-0412', 'scene-0413', 'scene-0414', 'scene-0415', 'scene-0416', 'scene-0417',
     'scene-0418', 'scene-0419', 'scene-0440', 'scene-0441', 'scene-0442', 'scene-0443', 'scene-0444', 'scene-0445',
     'scene-0446', 'scene-0447', 'scene-0448', 'scene-0449', 'scene-0450', 'scene-0451', 'scene-0452', 'scene-0453',
     'scene-0454', 'scene-0455', 'scene-0456', 'scene-0499', 'scene-0500', 'scene-0501', 'scene-0502', 'scene-0504',
     'scene-0505', 'scene-0506', 'scene-0507', 'scene-0508', 'scene-0509', 'scene-0510', 'scene-0511', 'scene-0512',
     'scene-0513', 'scene-0514', 'scene-0515', 'scene-0517', 'scene-0518', 'scene-0525', 'scene-0526', 'scene-0527',
     'scene-0528', 'scene-0529', 'scene-0530', 'scene-0531', 'scene-0532', 'scene-0533', 'scene-0534', 'scene-0535',
     'scene-0536', 'scene-0537', 'scene-0538', 'scene-0539', 'scene-0541', 'scene-0542', 'scene-0543', 'scene-0544',
     'scene-0545', 'scene-0546', 'scene-0584', 'scene-0585', 'scene-0586', 'scene-0587', 'scene-0588', 'scene-0589',
     'scene-0590', 'scene-0591', 'scene-0592', 'scene-0593', 'scene-0594', 'scene-0595', 'scene-0596', 'scene-0597',
     'scene-0598', 'scene-0599', 'scene-0600', 'scene-0639', 'scene-0640', 'scene-0641', 'scene-0642', 'scene-0643',
     'scene-0644', 'scene-0645', 'scene-0646', 'scene-0647', 'scene-0648', 'scene-0649', 'scene-0650', 'scene-0651',
     'scene-0652', 'scene-0653', 'scene-0654', 'scene-0655', 'scene-0656', 'scene-0657', 'scene-0658', 'scene-0659',
     'scene-0660', 'scene-0661', 'scene-0662', 'scene-0663', 'scene-0664', 'scene-0695', 'scene-0696', 'scene-0697',
     'scene-0698', 'scene-0700', 'scene-0701', 'scene-0703', 'scene-0704', 'scene-0705', 'scene-0706', 'scene-0707',
     'scene-0708', 'scene-0709', 'scene-0710', 'scene-0711', 'scene-0712', 'scene-0713', 'scene-0714', 'scene-0715',
     'scene-0716', 'scene-0717', 'scene-0718', 'scene-0719', 'scene-0726', 'scene-0727', 'scene-0728', 'scene-0730',
     'scene-0731', 'scene-0733', 'scene-0734', 'scene-0735', 'scene-0736', 'scene-0737', 'scene-0738', 'scene-0786',
     'scene-0787', 'scene-0789', 'scene-0790', 'scene-0791', 'scene-0792', 'scene-0803', 'scene-0804', 'scene-0805',
     'scene-0806', 'scene-0808', 'scene-0809', 'scene-0810', 'scene-0811', 'scene-0812', 'scene-0813', 'scene-0815',
     'scene-0816', 'scene-0817', 'scene-0819', 'scene-0820', 'scene-0821', 'scene-0822', 'scene-0847', 'scene-0848',
     'scene-0849', 'scene-0850', 'scene-0851', 'scene-0852', 'scene-0853', 'scene-0854', 'scene-0855', 'scene-0856',
     'scene-0858', 'scene-0860', 'scene-0861', 'scene-0862', 'scene-0863', 'scene-0864', 'scene-0865', 'scene-0866',
     'scene-0992', 'scene-0994', 'scene-0995', 'scene-0996', 'scene-0997', 'scene-0998', 'scene-0999', 'scene-1000',
     'scene-1001', 'scene-1002', 'scene-1003', 'scene-1004', 'scene-1005', 'scene-1006', 'scene-1007', 'scene-1008',
     'scene-1009', 'scene-1010', 'scene-1044', 'scene-1045', 'scene-1046', 'scene-1047', 'scene-1048', 'scene-1049',
     'scene-1050', 'scene-1051', 'scene-1052', 'scene-1053', 'scene-1054', 'scene-1055', 'scene-1056', 'scene-1057',
     'scene-1058', 'scene-1106', 'scene-1107', 'scene-1108', 'scene-1109', 'scene-1110']

train_split = list(sorted(set(train_detect + train_track)))

val_split = \
    ['scene-0003', 'scene-0012', 'scene-0013', 'scene-0014', 'scene-0015', 'scene-0016', 'scene-0017', 'scene-0018',
     'scene-0035', 'scene-0036', 'scene-0038', 'scene-0039', 'scene-0092', 'scene-0093', 'scene-0094', 'scene-0095',
     'scene-0096', 'scene-0097', 'scene-0098', 'scene-0099', 'scene-0100', 'scene-0101', 'scene-0102', 'scene-0103',
     'scene-0104', 'scene-0105', 'scene-0106', 'scene-0107', 'scene-0108', 'scene-0109', 'scene-0110', 'scene-0221',
     'scene-0268', 'scene-0269', 'scene-0270', 'scene-0271', 'scene-0272', 'scene-0273', 'scene-0274', 'scene-0275',
     'scene-0276', 'scene-0277', 'scene-0278', 'scene-0329', 'scene-0330', 'scene-0331', 'scene-0332', 'scene-0344',
     'scene-0345', 'scene-0346', 'scene-0519', 'scene-0520', 'scene-0521', 'scene-0522', 'scene-0523', 'scene-0524',
     'scene-0552', 'scene-0553', 'scene-0554', 'scene-0555', 'scene-0556', 'scene-0557', 'scene-0558', 'scene-0559',
     'scene-0560', 'scene-0561', 'scene-0562', 'scene-0563', 'scene-0564', 'scene-0565', 'scene-0625', 'scene-0626',
     'scene-0627', 'scene-0629', 'scene-0630', 'scene-0632', 'scene-0633', 'scene-0634', 'scene-0635', 'scene-0636',
     'scene-0637', 'scene-0638', 'scene-0770', 'scene-0771', 'scene-0775', 'scene-0777', 'scene-0778', 'scene-0780',
     'scene-0781', 'scene-0782', 'scene-0783', 'scene-0784', 'scene-0794', 'scene-0795', 'scene-0796', 'scene-0797',
     'scene-0798', 'scene-0799', 'scene-0800', 'scene-0802', 'scene-0904', 'scene-0905', 'scene-0906', 'scene-0907',
     'scene-0908', 'scene-0909', 'scene-0910', 'scene-0911', 'scene-0912', 'scene-0913', 'scene-0914', 'scene-0915',
     'scene-0916', 'scene-0917', 'scene-0919', 'scene-0920', 'scene-0921', 'scene-0922', 'scene-0923', 'scene-0924',
     'scene-0925', 'scene-0926', 'scene-0927', 'scene-0928', 'scene-0929', 'scene-0930', 'scene-0931', 'scene-0962',
     'scene-0963', 'scene-0966', 'scene-0967', 'scene-0968', 'scene-0969', 'scene-0971', 'scene-0972', 'scene-1059',
     'scene-1060', 'scene-1061', 'scene-1062', 'scene-1063', 'scene-1064', 'scene-1065', 'scene-1066', 'scene-1067',
     'scene-1068', 'scene-1069', 'scene-1070', 'scene-1071', 'scene-1072', 'scene-1073']

_value_color_map = [ # created from full nuscenes colormap
    (0, 0, 0),
    (112, 128, 144),  # Slategrey
    (220, 20, 60),  # Crimson
    (255, 127, 80),  # Coral
    (255, 158, 0),  # Orange
    (233, 150, 70),  # Darksalmon
    (255, 61, 99),  # Red
    (0, 0, 230),  # Blue
    (47, 79, 79),  # Darkslategrey
    (255, 140, 0),  # Darkorange
    (255, 99, 71),  # Tomato
    (0, 207, 191),  # nuTonomy green
    (175, 0, 75),
    (75, 0, 75),
    (112, 180, 60),
    (222, 184, 135),  # Burlywood
    (0, 175, 0),  # Green
]

[docs]class NuscenesDetectionClass(Enum): ''' Label classes for detection in Nuscenes dataset. ''' ignore = 0 barrier = auto() bicycle = auto() bus = auto() car = auto() construction_vehicle = auto() # 5 motorcycle = auto() pedestrian = auto() traffic_cone = auto() trailer = auto() truck = auto() # 10 @property def color(self): return _value_color_map[self.value]
class NuscenesSegmentationClass(Enum): ''' Label classes for lidar segmentation task in Nuscenes dataset Notice that there's a one-to-one correspondance between detection and segmentation classes ''' ignore = 0 barrier = auto() bicycle = auto() bus = auto() car = auto() construction_vehicle = auto() # 5 motorcycle = auto() pedestrian = auto() traffic_cone = auto() trailer = auto() truck = auto() # 10 driveable_surface = auto() other_flat = auto() sidewalk = auto() terrain = auto() manmade = auto() # 15 vegetation = auto() @property def color(self): return _value_color_map[self.value]
[docs]class NuscenesObjectClass(IntFlag): ''' Categories and attributes of an annotation in Nuscenes dataset. The ids are encoded into 4bytes integer:: 0xFFFF │││└: level0 category ││└─: level1 category │└──: level2 category └───: attribute ''' unknown = 0x0000 noise = 0x0010 # categories animal = 0x0001 human = 0x0002 human_pedestrian = 0x0012 human_pedestrian_adult = 0x0112 human_pedestrian_child = 0x0212 human_pedestrian_construction_worker = 0x0312 human_pedestrian_personal_mobility = 0x0412 human_pedestrian_police_officer = 0x0512 human_pedestrian_stroller = 0x0612 human_pedestrian_wheelchair = 0x0712 movable_object = 0x0003 movable_object_barrier = 0x0013 movable_object_debris = 0x0023 movable_object_pushable_pullable = 0x0033 movable_object_trafficcone = 0x0043 vehicle_bicycle = 0x0004 vehicle_bus = 0x0014 vehicle_bus_bendy = 0x0114 vehicle_bus_rigid = 0x0214 vehicle_car = 0x0024 vehicle_construction = 0x0034 vehicle_emergency = 0x0044 vehicle_emergency_ambulance = 0x0144 vehicle_emergency_police = 0x0244 vehicle_motorcycle = 0x0054 vehicle_trailer = 0x0064 vehicle_truck = 0x0074 vehicle_ego = 0x0084 static_object = 0x0005 static_object_bicycle_rack = 0x0015 flat = 0x0006 flat_driveable_surface = 0x0016 flat_sidewalk = 0x0026 flat_terrain = 0x0036 flat_other = 0x0046 static = 0x0007 static_manmade = 0x0017 static_vegetation = 0x0027 static_other = 0x0037 # attributes vehicle_moving = 0x1000 vehicle_stopped = 0x2000 vehicle_parked = 0x3000 cycle_with_rider = 0x4000 cycle_without_rider = 0x5000 pedestrian_sitting_lying_down = 0x6000 pedestrian_standing = 0x7000 pedestrian_moving = 0x8000
[docs] @classmethod def parse(cls, string: str): ''' Parse the Nuscenes class from string ''' return cls[string.replace('.', '_')]
@classmethod def _get_nuscenes_id_table(cls): # order is loaded from category.json in lidarseg split return [ cls.noise, # 0 cls.animal, cls.human_pedestrian_adult, cls.human_pedestrian_child, cls.human_pedestrian_construction_worker, cls.human_pedestrian_personal_mobility, # 5 cls.human_pedestrian_police_officer, cls.human_pedestrian_stroller, cls.human_pedestrian_wheelchair, cls.movable_object_barrier, cls.movable_object_debris, # 10 cls.movable_object_pushable_pullable, cls.movable_object_trafficcone, cls.static_object_bicycle_rack, cls.vehicle_bicycle, cls.vehicle_bus_bendy, # 15 cls.vehicle_bus_rigid, cls.vehicle_car, cls.vehicle_construction, cls.vehicle_emergency_ambulance, cls.vehicle_emergency_police, # 20 cls.vehicle_motorcycle, cls.vehicle_trailer, cls.vehicle_truck, cls.flat_driveable_surface, cls.flat_other, # 25 cls.flat_sidewalk, cls.flat_terrain, cls.static_manmade, cls.static_other, cls.static_vegetation, # 30 cls.vehicle_ego, ]
[docs] @classmethod def from_nuscenes_id(cls, nid: int): ''' Get Nuscenes class object from Nuscenes ID ''' return cls._get_nuscenes_id_table()[nid]
@property def category(self): ''' The category of the label ''' return self & 0x0fff @property def attribute(self): ''' The attribute of the label ''' return self & 0xf000 @property def category_name(self): ''' Name of the category of the label ''' name = self.category.name name = name.replace("icle_", "icle.").replace("an_", "an.") name = name.replace("t_", "t.").replace("s_", "s.") name = name.replace("y_", "y.") return name @property def attribute_name(self): ''' Name of the attribute of the label ''' name = self.attribute.name name = name.replace("e_", "e.") name = name.replace("n_", "n.") return name @property def pretty_name(self): ''' Get the full name of the label with category and attribute ''' return f"{self.category_name}[{self.attribute_name}]" @property def nuscenes_id(self): ''' Get the Nuscenes ID of the label ''' try: return self._get_nuscenes_id_table().index(self.category) except ValueError: return 0
[docs] def to_detection(self): """ Convert the label to the class for detection """ # following table is copied from nuscenes definition detection_mapping = { NuscenesObjectClass.movable_object_barrier: NuscenesDetectionClass.barrier, NuscenesObjectClass.vehicle_bicycle: NuscenesDetectionClass.bicycle, NuscenesObjectClass.vehicle_bus_bendy: NuscenesDetectionClass.bus, NuscenesObjectClass.vehicle_bus_rigid: NuscenesDetectionClass.bus, NuscenesObjectClass.vehicle_car: NuscenesDetectionClass.car, NuscenesObjectClass.vehicle_construction: NuscenesDetectionClass.construction_vehicle, NuscenesObjectClass.vehicle_motorcycle: NuscenesDetectionClass.motorcycle, NuscenesObjectClass.human_pedestrian_adult: NuscenesDetectionClass.pedestrian, NuscenesObjectClass.human_pedestrian_child: NuscenesDetectionClass.pedestrian, NuscenesObjectClass.human_pedestrian_construction_worker: NuscenesDetectionClass.pedestrian, NuscenesObjectClass.human_pedestrian_police_officer: NuscenesDetectionClass.pedestrian, NuscenesObjectClass.movable_object_trafficcone: NuscenesDetectionClass.traffic_cone, NuscenesObjectClass.vehicle_trailer: NuscenesDetectionClass.trailer, NuscenesObjectClass.vehicle_truck: NuscenesDetectionClass.truck } if self.category not in detection_mapping: return NuscenesDetectionClass.ignore else: return detection_mapping[self.category]
[docs] def to_segmentation(self): """ Convert the label to the class for segmentation Reference: https://github.com/nutonomy/nuscenes-devkit/blob/master/python-sdk/nuscenes/eval/lidarseg/README.md """ segmentation_mapping = { NuscenesObjectClass.animal: NuscenesSegmentationClass.ignore, NuscenesObjectClass.human_pedestrian_personal_mobility: NuscenesSegmentationClass.ignore, NuscenesObjectClass.human_pedestrian_stroller: NuscenesSegmentationClass.ignore, NuscenesObjectClass.human_pedestrian_wheelchair: NuscenesSegmentationClass.ignore, NuscenesObjectClass.movable_object_debris: NuscenesSegmentationClass.ignore, NuscenesObjectClass.movable_object_pushable_pullable: NuscenesSegmentationClass.ignore, NuscenesObjectClass.static_object_bicycle_rack: NuscenesSegmentationClass.ignore, NuscenesObjectClass.vehicle_emergency_ambulance: NuscenesSegmentationClass.ignore, NuscenesObjectClass.vehicle_emergency_police: NuscenesSegmentationClass.ignore, NuscenesObjectClass.noise: NuscenesSegmentationClass.ignore, NuscenesObjectClass.static_other: NuscenesSegmentationClass.ignore, NuscenesObjectClass.vehicle_ego: NuscenesSegmentationClass.ignore, NuscenesObjectClass.movable_object_barrier: NuscenesSegmentationClass.barrier, NuscenesObjectClass.vehicle_bicycle: NuscenesSegmentationClass.bicycle, NuscenesObjectClass.vehicle_bus_bendy: NuscenesSegmentationClass.bus, NuscenesObjectClass.vehicle_bus_rigid: NuscenesSegmentationClass.bus, NuscenesObjectClass.vehicle_car: NuscenesSegmentationClass.car, NuscenesObjectClass.vehicle_construction: NuscenesSegmentationClass.construction_vehicle, NuscenesObjectClass.vehicle_motorcycle: NuscenesSegmentationClass.motorcycle, NuscenesObjectClass.human_pedestrian_adult: NuscenesSegmentationClass.pedestrian, NuscenesObjectClass.human_pedestrian_child: NuscenesSegmentationClass.pedestrian, NuscenesObjectClass.human_pedestrian_construction_worker: NuscenesSegmentationClass.pedestrian, NuscenesObjectClass.human_pedestrian_police_officer: NuscenesSegmentationClass.pedestrian, NuscenesObjectClass.movable_object_trafficcone: NuscenesSegmentationClass.traffic_cone, NuscenesObjectClass.vehicle_trailer: NuscenesSegmentationClass.trailer, NuscenesObjectClass.vehicle_truck: NuscenesSegmentationClass.truck, NuscenesObjectClass.flat_driveable_surface: NuscenesSegmentationClass.driveable_surface, NuscenesObjectClass.flat_other: NuscenesSegmentationClass.other_flat, NuscenesObjectClass.flat_sidewalk: NuscenesSegmentationClass.sidewalk, NuscenesObjectClass.flat_terrain: NuscenesSegmentationClass.terrain, NuscenesObjectClass.static_manmade: NuscenesSegmentationClass.manmade, NuscenesObjectClass.static_vegetation: NuscenesSegmentationClass.vegetation, } if self.category not in segmentation_mapping: return NuscenesSegmentationClass.ignore else: return segmentation_mapping[self.category]
@property def color(self): color_map = { # RGB, from nuscenes-devkit NuscenesObjectClass.noise: (0, 0, 0), # Black. NuscenesObjectClass.animal: (70, 130, 180), # Steelblue NuscenesObjectClass.human_pedestrian_adult: (0, 0, 230), # Blue NuscenesObjectClass.human_pedestrian_child: (135, 206, 235), # Skyblue, NuscenesObjectClass.human_pedestrian_construction_worker: (100, 149, 237), # Cornflowerblue NuscenesObjectClass.human_pedestrian_personal_mobility: (219, 112, 147), # Palevioletred NuscenesObjectClass.human_pedestrian_police_officer: (0, 0, 128), # Navy, NuscenesObjectClass.human_pedestrian_stroller: (240, 128, 128), # Lightcoral NuscenesObjectClass.human_pedestrian_wheelchair: (138, 43, 226), # Blueviolet NuscenesObjectClass.movable_object_barrier: (112, 128, 144), # Slategrey NuscenesObjectClass.movable_object_debris: (210, 105, 30), # Chocolate NuscenesObjectClass.movable_object_pushable_pullable: (105, 105, 105), # Dimgrey NuscenesObjectClass.movable_object_trafficcone: (47, 79, 79), # Darkslategrey NuscenesObjectClass.static_object_bicycle_rack: (188, 143, 143), # Rosybrown NuscenesObjectClass.vehicle_bicycle: (220, 20, 60), # Crimson NuscenesObjectClass.vehicle_bus.bendy: (255, 127, 80), # Coral NuscenesObjectClass.vehicle_bus.rigid: (255, 69, 0), # Orangered NuscenesObjectClass.vehicle_car: (255, 158, 0), # Orange NuscenesObjectClass.vehicle_construction: (233, 150, 70), # Darksalmon NuscenesObjectClass.vehicle_emergency.ambulance: (255, 83, 0), NuscenesObjectClass.vehicle_emergency.police: (255, 215, 0), # Gold NuscenesObjectClass.vehicle_motorcycle: (255, 61, 99), # Red NuscenesObjectClass.vehicle_trailer: (255, 140, 0), # Darkorange NuscenesObjectClass.vehicle_truck: (255, 99, 71), # Tomato NuscenesObjectClass.flat_driveable_surface: (0, 207, 191), # nuTonomy green NuscenesObjectClass.flat_other: (175, 0, 75), NuscenesObjectClass.flat_sidewalk: (75, 0, 75), NuscenesObjectClass.flat_terrain: (112, 180, 60), NuscenesObjectClass.static_manmade: (222, 184, 135), # Burlywood NuscenesObjectClass.static_other: (255, 228, 196), # Bisque NuscenesObjectClass.static_vegetation: (0, 175, 0), # Green NuscenesObjectClass.vehicle_ego: (255, 240, 245) } if self.category not in color_map: return (0, 0, 0) else: return color_map[self.category]