import os from datasets.kitti_360.kitti_360_dataset import Kitti360Dataset from datasets.kitti_odom.kitti_odometry_dataset import KittiOdometryDataset from datasets.kitti_raw.kitti_raw_dataset import KittiRawDataset from datasets.nyu_depth_v2.nyu_depth_v2_dataset import NYUDepthV2Dataset from datasets.realestate10k.realestate10k_dataset import RealEstate10kDataset from datasets.waymo.waymo_dataset import WaymoDataset def make_datasets(config): type = config.get("type", "KITTI_Raw") if type == "KITTI_Odometry": train_dataset = KittiOdometryDataset( base_path=config["data_path"], frame_count=config.get("data_fc", 1), target_image_size=config.get("image_size", (128, 256)), return_stereo=config.get("data_stereo", False), sequences=config.get("train_sequences", ("00",)), custom_pose_path=config.get("custom_pose_path", None), keyframe_offset=0 #-(config.get("data_fc", 1) // 2) ) test_dataset = KittiOdometryDataset( base_path=config["data_path"], frame_count=config.get("data_fc", 1), target_image_size=config.get("image_size", (128, 256)), return_stereo=config.get("data_stereo", False), sequences=config.get("val_sequences", ("00",)), custom_pose_path=config.get("custom_pose_path", None), keyframe_offset=0 #-(config.get("data_fc", 1) // 2) ) return train_dataset, test_dataset elif type == "KITTI_Raw": train_dataset = KittiRawDataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config["split_path"], "train_files.txt"), target_image_size=config.get("image_size", (192, 640)), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), color_aug=config.get("color_aug", False) ) test_dataset = KittiRawDataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config["split_path"], "val_files.txt"), target_image_size=config.get("image_size", (192, 640)), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), ) return train_dataset, test_dataset elif type == "KITTI_360": if config.get("split_path", None) is None: train_split_path = None test_split_path = None else: train_split_path = os.path.join(config["split_path"], "train_files.txt") test_split_path = os.path.join(config["split_path"], "val_files.txt") train_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=train_split_path, target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 3), return_stereo=config.get("data_stereo", True), return_fisheye=config.get("data_fisheye", True), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", 1), color_aug=config.get("color_aug", False), is_preprocessed=config.get("is_preprocessed", False) ) test_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=test_split_path, target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 3), return_stereo=config.get("data_stereo", True), return_fisheye=config.get("data_fisheye", True), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=config.get("keyframe_offset", 0), fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", 1), dilation=config.get("dilation", 1), is_preprocessed=config.get("is_preprocessed", False) ) return train_dataset, test_dataset elif type == "RealEstate10k": train_dataset = RealEstate10kDataset( data_path=config["data_path"], split_path=None, target_image_size=config.get("image_size", (256, 384)), frame_count=config.get("data_fc", 2), keyframe_offset=0, #-(config.get("data_fc", 1) // 2), dilation=config.get("dilation", 10), color_aug=config.get("color_aug", False) ) test_dataset = RealEstate10kDataset( data_path=config["data_path"], split_path=os.path.join(config["split_path"], "val_files.txt"), target_image_size=config.get("image_size", (256, 384)), frame_count=config.get("data_fc", 2), keyframe_offset=0, #-(config.get("data_fc", 1) // 2), dilation=config.get("dilation", 10), color_aug=False ) return train_dataset, test_dataset elif type == "Waymo": if config.get("split_path", None) is None: train_split_path = None test_split_path = None else: train_split_path = os.path.join(config["split_path"], "train_files.txt") test_split_path = os.path.join(config["split_path"], "val_files.txt") train_dataset = WaymoDataset( data_path=config["data_path"], mode="training", split_path=train_split_path, target_image_size=tuple(config.get("image_size", (320, 480))), frame_count=config.get("data_fc", 2), keyframe_offset=config.get("keyframe_offset", 0), return_45=config.get("return_45", True), return_90=config.get("return_90", True), offset_45=config.get("offset_45", 5), offset_90=config.get("offset_90", 10), dilation=config.get("dilation", 1), color_aug=config.get("color_aug", True), correct_exposure=config.get("correct_exposure", True), ) test_dataset = WaymoDataset( data_path=config["data_path"], mode="validation", split_path=test_split_path, target_image_size=tuple(config.get("image_size", (320, 480))), frame_count=config.get("data_fc", 2), keyframe_offset=config.get("keyframe_offset", 0), return_45=config.get("return_45", True), return_90=config.get("return_90", True), offset_45=config.get("offset_45", 5), offset_90=config.get("offset_90", 10), dilation=config.get("dilation", 1), color_aug=False, return_depth=True, correct_exposure=config.get("correct_exposure", True), ) return train_dataset, test_dataset elif type == "KITTI_Raw_DFT": train_dataset = KittiRawDataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config["split_path"], "train_files.txt"), target_image_size=config.get("image_size", (192, 640)), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), color_aug=config.get("color_aug", False) ) test_dataset = KittiRawDataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config["split_path"], "val_files.txt"), target_image_size=config.get("image_size", (192, 640)), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), ) return train_dataset, test_dataset elif type == "KITTI_360_DFT": if config.get("split_path", None) is None: train_split_path = None test_split_path = None else: train_split_path = os.path.join(config["split_path"], "train_files.txt") test_split_path = os.path.join(config["split_path"], "val_files.txt") train_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=train_split_path, target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 3), return_stereo=config.get("data_stereo", True), return_fisheye=config.get("data_fisheye", True), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=config.get("keyframe_offset", 0), dilation=config.get("dilation", 1), fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", 1), stereo_offset=config.get("stereo_offset", 1), color_aug=config.get("color_aug", False), is_preprocessed=config.get("is_preprocessed", False) ) test_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=test_split_path, target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 3), return_stereo=config.get("data_stereo", True), return_fisheye=config.get("data_fisheye", True), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=config.get("keyframe_offset", 0), fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", [10])[0], ## this modifies the offsets for all datasets including the training dataset stereo_offset= config.get("stereo_offset", [1])[0], ## This is to set consistent evaluation with test and viz dilation=config.get("dilation", 1), is_preprocessed=config.get("is_preprocessed", False) ) return train_dataset, test_dataset else: raise NotImplementedError(f"Unsupported dataset type: {type}") def make_test_dataset(config): type = config.get("type", "KITTI_Raw") if type == "KITTI_Raw": test_dataset = KittiRawDataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config["split_path"], "test_files.txt"), target_image_size=config.get("image_size", (192, 640)), return_depth=True, frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), keyframe_offset=0 ) return test_dataset elif type == "KITTI_360": test_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config.get("split_path", None), "test_files.txt"), target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), return_fisheye=config.get("data_fisheye", False), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=0, fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", 1), dilation=config.get("dilation", 1), is_preprocessed=config.get("is_preprocessed", False) ) return test_dataset elif type == "KITTI_360_DFT": test_dataset = Kitti360Dataset( data_path=config["data_path"], pose_path=config["pose_path"], split_path=os.path.join(config.get("split_path", None), "test_files.txt"), target_image_size=tuple(config.get("image_size", (192, 640))), frame_count=config.get("data_fc", 1), return_stereo=config.get("data_stereo", False), return_fisheye=config.get("data_fisheye", False), return_3d_bboxes=config.get("data_3d_bboxes", False), return_segmentation=config.get("data_segmentation", False), keyframe_offset=0, fisheye_rotation=config.get("fisheye_rotation", 0), fisheye_offset=config.get("fisheye_offset", [10])[0], ## this modifies the offsets for all datasets including the training dataset stereo_offset= config.get("stereo_offset", [1])[0], ## This is to set consistent evaluation with test and viz dilation=config.get("dilation", 1), is_preprocessed=config.get("is_preprocessed", False), return_depth=True ) return test_dataset elif type == "RealEstate10k": test_dataset = RealEstate10kDataset( data_path=config["data_path"], split_path=os.path.join(config["split_path"], "test_files.txt"), target_image_size=config.get("image_size", (256, 384)), frame_count=config.get("data_fc", 2), keyframe_offset=0, dilation=config.get("dilation", 10), color_aug=False ) return test_dataset elif type == "NYU_Depth_V2": test_dataset = NYUDepthV2Dataset( data_path=config["data_path"], target_image_size=config.get("image_size", (256, 384)), ) return test_dataset else: raise NotImplementedError(f"Unsupported dataset type: {type}")