Beispiel #1
0
def test_loading_image_lidar(data_loader: ArgoverseTrackingLoader) -> None:
    camera = CAMERA_LIST[0]
    log = "1"
    image_1 = data_loader.get_image_at_timestamp(0, camera, log)
    image_2 = data_loader.get_image_list_sync(camera, log, load=True)[0]
    image_3 = data_loader.get_image(0, camera, log)
    image_4 = data_loader.get_image_sync(0, camera, log)
    assert np.array_equal(image_1, image_2) and np.array_equal(
        image_1, image_3) and np.array_equal(image_1, image_4)

    lidar_0 = data_loader.get_lidar(0, log)

    lidar_gt = np.array([
        [0.0, 0.0, 5.0],
        [1.0, 0.0, 5.0],
        [2.0, 0.0, 5.0],
        [3.0, 0.0, 5.0],
        [4.0, 0.0, 5.0],
        [5.0, 0.0, 5.0],
        [6.0, 0.0, 5.0],
        [7.0, 0.0, 5.0],
        [8.0, 0.0, 5.0],
        [9.0, 0.0, 5.0],
    ])
    assert np.array_equal(lidar_0, lidar_gt)
def extract_datapoints(root_dir, test_set=False):
    argoverse_loader = ArgoverseTrackingLoader(root_dir=root_dir)

    data = []
    for log_id in argoverse_loader.log_list:
        # print(f"Processing log: {os.path.join(root_dir, log_id)}", end="\r")
        argoverse_data = argoverse_loader.get(log_id=log_id)
        # calibL = argoverse_data.get_calibration(camera=camL, log_id=log_id)
        # calibR = argoverse_data.get_calibration(camera=camR, log_id=log_id)
        calibs = {}
        for cam in STEREO_CAMERA_LIST + RING_CAMERA_LIST:
            calibs[cam] = argoverse_data.get_calibration(camera=cam,
                                                         log_id=log_id)

        count = 0
        for lidar_timestamp in argoverse_data.lidar_timestamp_list:
            data_point = dict()
            data_point["log_id"] = log_id
            data_point["frame_id"] = count
            count += 1
            for cam in STEREO_CAMERA_LIST + RING_CAMERA_LIST:
                cam_timestamp = argoverse_loader.sync.get_closest_cam_channel_timestamp(
                    lidar_timestamp=lidar_timestamp,
                    camera_name=cam,
                    log_id=log_id)
                if cam_timestamp is not None:
                    data_point[cam] = argoverse_loader.get_image_at_timestamp(
                        timestamp=cam_timestamp,
                        camera=cam,
                        log_id=log_id,
                        load=False)
                else:
                    data_point[cam] = None
            data_point["timestamp"] = lidar_timestamp
            data_point["lidar"] = argoverse_loader.timestamp_lidar_dict[
                lidar_timestamp]
            data_point["calibs"] = calibs
            d = argoverse_data.get_pose(
                argoverse_data.get_idx_from_timestamp(
                    lidar_timestamp)).translation
            r = Rotation.from_dcm(
                argoverse_data.get_pose(
                    argoverse_data.get_idx_from_timestamp(
                        lidar_timestamp)).rotation)
            data_point["pose"] = (d, r.as_euler('xyz'))
            if not test_set:
                data_point["labels"] = argoverse_loader.get_label_object(
                    idx=argoverse_loader.lidar_timestamp_list.index(
                        lidar_timestamp),
                    log_id=log_id)
            data.append(data_point)
    return data