anomalib.pre_processing.pre_process

Pre Process.

This module contains PreProcessor class that applies preprocessing to an input image before the forward-pass stage.

Module Contents

Classes

PreProcessor

Applies pre-processing and data augmentations to the input and returns the transformed output.

class anomalib.pre_processing.pre_process.PreProcessor(config: Optional[Union[str, albumentations.Compose]] = None, image_size: Optional[Union[int, Tuple]] = None, to_tensor: bool = True)[source]

Applies pre-processing and data augmentations to the input and returns the transformed output.

Output could be either numpy ndarray or torch tensor. When PreProcessor class is used for training, the output would be torch.Tensor. For the inference it returns a numpy array.

Parameters
  • config (Optional[Union[str, A.Compose]], optional) – Transformation configurations. When it is None, PreProcessor only applies resizing. When it is str it loads the config via albumentations deserialisation methos . Defaults to None.

  • image_size (Optional[Union[int, Tuple[int, int]]], optional) – When there is no config,

  • None. (image_size resizes the image. Defaults to) –

  • to_tensor (bool, optional) – Boolean to check whether the augmented image is transformed into a tensor or not. Defaults to True.

Examples

>>> import skimage
>>> image = skimage.data.astronaut()
>>> pre_processor = PreProcessor(image_size=256, to_tensor=False)
>>> output = pre_processor(image=image)
>>> output["image"].shape
(256, 256, 3)
>>> pre_processor = PreProcessor(image_size=256, to_tensor=True)
>>> output = pre_processor(image=image)
>>> output["image"].shape
torch.Size([3, 256, 256])
Transforms could be read from albumentations Compose object.
>>> import albumentations as A
>>> from albumentations.pytorch import ToTensorV2
>>> config = A.Compose([A.Resize(512, 512), ToTensorV2()])
>>> pre_processor = PreProcessor(config=config, to_tensor=False)
>>> output = pre_processor(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")
>>> pre_processor = PreProcessor(config="/tmp/transforms.yaml")
>>> output = pre_processor(image=image)
>>> output["image"].shape
torch.Size([3, 1024, 1024])
get_transforms(self) albumentations.Compose[source]

Get transforms from config or image size.

Returns

List of albumentation transformations to apply to the

input image.

Return type

A.Compose

__call__(self, *args, **kwargs)[source]

Return transformed arguments.

_get_height_and_width(self) Tuple[Optional[int], Optional[int]][source]

Extract height and width from image size attribute.