Luigi Piccinelli
init demo
1ea89dd
import os
import h5py
import numpy as np
import torch
from unik3d.datasets.image_dataset import ImageDataset
from unik3d.datasets.utils import DatasetFromList
class FLSea(ImageDataset):
CAM_INTRINSIC = {
"canyons": torch.tensor(
[
[1175.3913431656817, 0.0, 466.2595428966926],
[0.0, 1174.2805075232263, 271.2116633091501],
[0.0, 0.0, 1.0],
]
),
"red_sea": torch.tensor(
[
[1296.666758476217, 0.0, 501.50386149846],
[0.0, 1300.831316354508, 276.161712082695],
[0.0, 0.0, 1.0],
]
),
}
min_depth = 0.05
max_depth = 20.0
depth_scale = 1000.0
train_split = "train.txt"
hdf5_paths = ["FLSea.hdf5"]
def __init__(
self,
image_shape,
split_file,
test_mode,
crop=None,
benchmark=False,
augmentations_db={},
normalize=True,
resize_method="hard",
mini=False,
**kwargs,
):
super().__init__(
image_shape=image_shape,
split_file=split_file,
test_mode=test_mode,
benchmark=benchmark,
normalize=normalize,
augmentations_db=augmentations_db,
resize_method=resize_method,
mini=mini,
**kwargs,
)
self.test_mode = test_mode
self.crop = crop
self.load_dataset()
def load_dataset(self):
h5file = h5py.File(
os.path.join(self.data_root, self.hdf5_paths[0]),
"r",
libver="latest",
swmr=True,
)
txt_file = np.array(h5file[self.split_file])
txt_string = txt_file.tostring().decode("ascii")[:-1] # correct the -1
h5file.close()
dataset = []
for line in txt_string.split("\n"):
image_filename, depth_filename = line.strip().split(" ")
sample = [image_filename, depth_filename]
dataset.append(sample)
if not self.test_mode:
dataset = self.chunk(dataset, chunk_dim=1, pct=self.mini)
if self.test_mode:
dataset = self.chunk(dataset, chunk_dim=1, pct=0.33)
self.dataset = DatasetFromList(dataset)
self.log_load_dataset()
def get_intrinsics(self, idx, image_name):
return self.CAM_INTRINSIC[image_name.split("/")[0]][:, :3].clone()
def get_mapper(self):
return {
"image_filename": 0,
"depth_filename": 1,
}
def pre_pipeline(self, results):
results = super().pre_pipeline(results)
results["dense"] = [True] * self.num_copies
results["quality"] = [2] * self.num_copies
return results