def nuImages(path: str) -> FusionDataset: """`nuImages <https://www.nuscenes.org/nuimages>`_ dataset. The file structure should be like:: <path> nuimages-v1.0-all-metadata/ v1.0-mini/ attribute.json calibrated_sensor.json category.json ego_pose.json instance.json log.json object_ann.json sample_data.json sample.json sensor.json surface_ann.json v1.0-test/ ... v1.0-train/ ... v1.0-val/ ... samples/ CAM_BACK/ CAM_BACK_LEFT/ CAM_BACK_RIGHT/ CAM_FRONT/ CAM_FRONT_LEFT/ CAM_FRONT_RIGHT/ sweeps/ CAM_BACK/ CAM_BACK_LEFT/ CAM_BACK_RIGHT/ CAM_FRONT/ CAM_FRONT_LEFT/ CAM_FRONT_RIGHT/ nuimages-v1.0-mini/ samples/ ... sweeps/ ... v1.0-mini/ ... Arguments: path: The root directory of the dataset. Returns: Loaded :class:`~tensorbay.dataset.dataset.Dataset` instance. """ root_path = os.path.abspath(os.path.expanduser(path)) dataset = FusionDataset(DATASET_NAME) dataset.load_catalog( os.path.join(os.path.dirname(__file__), "catalog.json")) metadata_path = os.path.join(root_path, "nuimages-v1.0-all-metadata") for subset in os.listdir(metadata_path): dataset.add_segment(_get_segment(root_path, subset, metadata_path)) return dataset
def CADC(path: str) -> FusionDataset: """`CADC <http://cadcd.uwaterloo.ca/index.html>`_ dataset. The file structure should be like:: <path> 2018_03_06/ 0001/ 3d_ann.json labeled/ image_00/ data/ 0000000000.png 0000000001.png ... timestamps.txt ... image_07/ data/ timestamps.txt lidar_points/ data/ timestamps.txt novatel/ data/ dataformat.txt timestamps.txt ... 0018/ calib/ 00.yaml 01.yaml 02.yaml 03.yaml 04.yaml 05.yaml 06.yaml 07.yaml extrinsics.yaml README.txt 2018_03_07/ 2019_02_27/ Arguments: path: The root directory of the dataset. Returns: Loaded `~tensorbay.dataset.dataset.FusionDataset` instance. """ root_path = os.path.abspath(os.path.expanduser(path)) dataset = FusionDataset(DATASET_NAME) dataset.notes.is_continuous = True dataset.load_catalog( os.path.join(os.path.dirname(__file__), "catalog.json")) for date in os.listdir(root_path): date_path = os.path.join(root_path, date) sensors = _load_sensors(os.path.join(date_path, "calib")) for index in os.listdir(date_path): if index == "calib": continue segment = dataset.create_segment(f"{date}-{index}") segment.sensors = sensors segment_path = os.path.join(root_path, date, index) data_path = os.path.join(segment_path, "labeled") with open(os.path.join(segment_path, "3d_ann.json"), encoding="utf-8") as fp: # The first line of the json file is the json body. annotations = json.loads(fp.readline()) timestamps = _load_timestamps(sensors, data_path) for frame_index, annotation in enumerate(annotations): segment.append( _load_frame(sensors, data_path, frame_index, annotation, timestamps)) return dataset
def nuScenes(path: str) -> FusionDataset: """`nuScenes <https://www.nuscenes.org/>`_ dataset. The file structure should be like:: <path> v1.0-mini/ maps/ 36092f0b03a857c6a3403e25b4b7aab3.png ... samples/ CAM_BACK/ CAM_BACK_LEFT/ CAM_BACK_RIGHT/ CAM_FRONT/ CAM_FRONT_LEFT/ CAM_FRONT_RIGHT/ LIDAR_TOP/ RADAR_BACK_LEFT/ RADAR_BACK_RIGHT/ RADAR_FRONT/ RADAR_FRONT_LEFT/ RADAR_FRONT_RIGHT/ sweeps/ CAM_BACK/ CAM_BACK_LEFT/ CAM_BACK_RIGHT/ CAM_FRONT/ CAM_FRONT_LEFT/ CAM_FRONT_RIGHT/ LIDAR_TOP/ RADAR_BACK_LEFT/ RADAR_BACK_RIGHT/ RADAR_FRONT/ RADAR_FRONT_LEFT/ RADAR_FRONT_RIGHT/ v1.0-mini/ attribute.json calibrated_sensor.json category.json ego_pose.json instance.json log.json map.json sample_annotation.json sample_data.json sample.json scene.json sensor.json visibility.json v1.0-test/ maps/ samples/ sweeps/ v1.0-test/ v1.0-trainval/ maps/ samples/ sweeps/ v1.0-trainval/ Arguments: path: The root directory of the dataset. Returns: Loaded :class:`~tensorbay.dataset.dataset.FusionDataset` instance. """ root_path = os.path.abspath(os.path.expanduser(path)) dataset = FusionDataset(DATASET_NAME) dataset.notes.is_continuous = True dataset.notes.bin_point_cloud_fields = ["X", "Y", "Z", "Intensity", "Ring"] dataset.load_catalog(os.path.join(os.path.dirname(__file__), "catalog.json")) for subset in os.listdir(root_path): for segment in _generate_segments(root_path, subset): dataset.add_segment(segment) return dataset