Data Transforms

Data Transforms#

Helper function for retrieving transforms.

class anomalib.data.utils.transforms.InputNormalizationMethod(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)#

Bases: str, Enum

Normalization method for the input images.

anomalib.data.utils.transforms.get_transforms(config=None, image_size=None, center_crop=None, normalization=InputNormalizationMethod.IMAGENET, to_tensor=True)#

Get transforms from config or image size.

Parameters:
  • config (str | A.Compose | None, optional) – Albumentations transforms. Either config or albumentations Compose object. Defaults to None.

  • image_size (int | tuple | None, optional) – Image size to transform. Defaults to None.

  • center_crop (int | tuple | None, optional) – Center crop size. Defaults to None.

  • normalization (InputNormalizationMethod, optional) – Normalization method for the input images. Defaults to InputNormalizationMethod.IMAGENET.

  • to_tensor (bool, optional) – Boolean to convert the final transforms into Torch tensor. Defaults to True.

Raises:
  • ValueError – When both config and image_size is None.

  • ValueError – When config is not a str or A.Compose` object.

Returns:

Albumentation Compose object containing the image transforms.

Return type:

A.Compose

Examples

>>> import skimage
>>> image = skimage.data.astronaut()
>>> transforms = get_transforms(image_size=256, to_tensor=False)
>>> output = transforms(image=image)
>>> output["image"].shape
(256, 256, 3)
>>> transforms = get_transforms(image_size=256, to_tensor=True)
>>> output = transforms(image=image)
>>> output["image"].shape
torch.Size([3, 256, 256])

Transforms could be read from albumentations Compose object.

>>> import albumentations as A  # noqa: N812
>>> from albumentations.pytorch import ToTensorV2
>>> config = A.Compose([A.Resize(512, 512), ToTensorV2()])
>>> transforms = get_transforms(config=config, to_tensor=False)
>>> output = transforms(image=image)
>>> output["image"].shape
(512, 512, 3)
>>> type(output["image"])
numpy.ndarray

Transforms could be deserialized from a yaml file.

>>> transforms = A.Compose([A.Resize(1024, 1024), ToTensorV2()])
>>> A.save(transforms, "/tmp/transforms.yaml", data_format="yaml")
>>> transforms = get_transforms(config="/tmp/transforms.yaml")
>>> output = transforms(image=image)
>>> output["image"].shape
torch.Size([3, 1024, 1024])