ImageFolder#

class deepinv.datasets.ImageFolder(root, x_path=None, y_path=None, loader=None, estimate_params=None, transform=None)[source]#

Bases: ImageDataset

Dataset loading images from files.

By default, the images are loaded from image files (png, jpg etc.) located in root.

For more flexibility, set x_path or y_path to load ground truth x and/or measurements y from specific file patterns.

Tip

To load data from subfolders, use globs such as x_path = "GT/**/*.png", y_path = "meas/**/*.png".

Tip

Set y_path only to load measurements following the file pattern. The measurement-only data will be returned as a tuple (torch.nan, y).

Parameters:
  • root (str, pathlib.Path) – dataset root directory.

  • x_path (str, None) – file glob pattern for ground truth data, defaults to None.

  • y_path (str, None) – file glob pattern for measurement data, defaults to None.

  • loader (Callable) – optional function that takes filename string and loads file. If None, defaults to PIL.Image.open.

  • estimate_params (Callable) – optional function that takes tensors x,y and returns dict of params. Advanced usage only.

  • transform (Callable, tuple) – optional callable transform. If tuple or list of length 2, x is transformed with first transform and y with second.


Examples:

Using default loading from root folder with image files. Folder structure:

root
├── img1.png
└── img2.png

dataset = ImageFolder(root)
dataset[0]
tensor(...)  # Returns x only

Loading paired tensors from nested folders using custom glob and loader. Folder structure:

data/
├── GT/
│   ├── scene1/
│   │   └── x0.pt
│   └── scene2/
│       └── x1.pt
└── meas/
    ├── scene1/
    │   └── y0.pt
    └── scene2/
        └── y1.pt

dataset = ImageFolder(
    root,
    x_path="GT/**/*.pt",
    y_path="meas/**/*.pt",
    loader=torch.load
)
dataset[0]
(tensor(...), tensor(...))  # Returns (x, y) pair

Loading unpaired measurements only. Folder structure:

data/
└── meas/
    ├── meas0.png
    └── meas1.png

dataset = ImageFolder(
    "data/",
    y_path="meas/*.png"
)
dataset[0]
(torch.nan, tensor(...))  # Returns unpaired y

Examples using ImageFolder:#

Imaging inverse problems with adversarial networks

Imaging inverse problems with adversarial networks

Bring your own dataset

Bring your own dataset

Training a reconstruction model

Training a reconstruction model

Image deblurring with Total-Variation (TV) prior

Image deblurring with Total-Variation (TV) prior

Image inpainting with wavelet prior

Image inpainting with wavelet prior

Image transformations for Equivariant Imaging

Image transformations for Equivariant Imaging

Scan-specific zero-shot SSDU for MRI

Scan-specific zero-shot SSDU for MRI

Deep Equilibrium (DEQ) algorithms for image deblurring

Deep Equilibrium (DEQ) algorithms for image deblurring

Unfolded Chambolle-Pock for constrained image inpainting

Unfolded Chambolle-Pock for constrained image inpainting