RandomPatchSampler#

class deepinv.datasets.RandomPatchSampler(x_dir=None, y_dir=None, patch_size=32, file_format='.npy', ch_axis=None, dtype=torch.float32, loader=None)[source]#

Bases: ImageDataset

Dataset for nD images that samples one random patch per image.

This dataset builds from one or two directories of nD images (must be of format .npy, .nii(.gz)`, or ``.b2nd, if loader is not specified). On each epoch, it returns a randomly sampled patch of fixed size from each volume.

Warning

This loader uses torch’s random functionality. To ensure reproducibility, set the DataLoader’s generator with a fixed seed.

Supported use cases: - Single-directory: provide only the ground-truth folder x_dir or measurement folder y_dir (returns patches from that directory). - Paired-directory: provide both x_dir and y_dir (returns matched patches from both).

Channel handling: - If ch_axis=None: a singleton channel dimension is added at axis 0. - If ch_axis=0: images are assumed channel-first. - If ch_axis=-1: images are assumed channel-last and transposed to channel-first. - Patches are never extracted along the channel axis (patch size for that axis is ignored).

Patch size handling: - Accepts either an integer (applied to all spatial dims) or a tuple. - If patch_size is tuple, and patch_size[i] == 1, this is equivalent to slicing across axis i (singleton at axis i will be squeezed). This can be used to e.g. extract 2D slices from a 3D volume - If tuple length is one less than the image ndim, the channel axis is auto-filled with None.

Randomness & reproducibility: - Patch coordinates are drawn with Python’s random module. - To ensure deterministic behavior across workers, set the DataLoader’s worker_init_fn or generator according to the PyTorch reproducibility guidelines.

Notes - All images must have the same dimensionality. - When both directories are provided, only files present in both are used. - Shapes of each file are checked for consistency (spatial not smaller than patch_size + channels remain consistent across files).