Interested in advertising?

Contact us

Stay updated

News & Insights

albumentations.augmentations.dropout.grid_dropout


Implementation of grid-based dropout augmentation. This module provides GridDropout, which creates a regular grid over the image and drops out rectangular regions according to the specified grid pattern. Unlike random dropout methods, grid dropout enforces a structured pattern of occlusions that can help models learn spatial relationships and context across the entire image space.

Members

GridDropoutclass

Apply GridDropout augmentation to images, masks, bounding boxes, and keypoints. GridDropout drops out rectangular regions of an image and the corresponding mask in a grid fashion. This technique can help improve model robustness by forcing the network to rely on a broader context rather than specific local features.

Parameters

NameTypeDefaultDescription
ratiofloat0.5The ratio of the mask holes to the unit size (same for horizontal and vertical directions). Must be between 0 and 1. Default: 0.5.
random_offsetboolTrueWhether to offset the grid randomly between 0 and (grid unit size - hole size). If True, entered shift_xy is ignored and set randomly. Default: True.
unit_size_range
One of:
  • tuple[int, int]
  • None
NoneRange from which to sample grid size. Default: None. Must be between 2 and the image's shorter edge. If None, grid size is calculated based on image size.
holes_number_xy
One of:
  • tuple[int, int]
  • None
NoneThe number of grid units in x and y directions. First value should be between 1 and image width//2, Second value should be between 1 and image height//2. Default: None. If provided, overrides unit_size_range.
shift_xytuple[int, int](0, 0)Offsets of the grid start in x and y directions from (0,0) coordinate. Only used when random_offset is False. Default: (0, 0).
fill
One of:
  • tuple[float, ...]
  • float
  • Literal['random', 'random_uniform', 'inpaint_telea', 'inpaint_ns']
0Value for the dropped pixels. Can be: - int or float: all channels are filled with this value - tuple: tuple of values for each channel - 'random': each pixel is filled with random values - 'random_uniform': each hole is filled with a single random color - 'inpaint_telea': uses OpenCV Telea inpainting method - 'inpaint_ns': uses OpenCV Navier-Stokes inpainting method Default: 0
fill_mask
One of:
  • tuple[float, ...]
  • float
  • None
NoneValue for the dropped pixels in mask. If None, the mask is not modified. Default: None.
pfloat0.5Probability of applying the transform. Default: 0.5.

Example

>>> import numpy as np
>>> import albumentations as A
>>> image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
>>> mask = np.random.randint(0, 2, (100, 100), dtype=np.uint8)
>>> # Example with standard fill value
>>> aug_basic = A.GridDropout(
...     ratio=0.3,
...     unit_size_range=(10, 20),
...     random_offset=True,
...     p=1.0
... )
>>> # Example with random uniform fill
>>> aug_random = A.GridDropout(
...     ratio=0.3,
...     unit_size_range=(10, 20),
...     fill="random_uniform",
...     p=1.0
... )
>>> # Example with inpainting
>>> aug_inpaint = A.GridDropout(
...     ratio=0.3,
...     unit_size_range=(10, 20),
...     fill="inpaint_ns",
...     p=1.0
... )
>>> transformed = aug_random(image=image, mask=mask)
>>> transformed_image, transformed_mask = transformed["image"], transformed["mask"]

Notes

- If both unit_size_range and holes_number_xy are None, the grid size is calculated based on the image size. - The actual number of dropped regions may differ slightly from holes_number_xy due to rounding. - Inpainting methods ('inpaint_telea', 'inpaint_ns') work only with grayscale or RGB images. - For 'random_uniform' fill, each grid cell gets a single random color, unlike 'random' where each pixel gets its own random value.