Files
kornia--kornia/docs/source/augmentation.container.rst
wehub-resource-sync 3a2c66702c
Tests on CPU (scheduled) / check-skip (push) Has been cancelled
Tests on CPU (scheduled) / pre-tests (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-ubuntu (float32) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-ubuntu (float64) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float64, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float64, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.13, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.13, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.11, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.11, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.12, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.12, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.13, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / coverage (push) Has been cancelled
Tests on CPU (scheduled) / typing (push) Has been cancelled
Tests on CPU (scheduled) / tutorials (push) Has been cancelled
Tests on CPU (scheduled) / docs (push) Has been cancelled
Lint / TOML Format (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:49:27 +08:00

150 lines
5.1 KiB
ReStructuredText

Augmentation Containers
=======================
.. meta::
:name: description
:content: "The Augmentation Containers module in Kornia provides advanced frameworks for building augmentation pipelines. It includes classes like AugmentationSequential, ManyToManyAugmentationDispatcher, and VideoSequential for managing data formats such as images, videos, and temporal data. It also supports processing masks, bounding boxes, and keypoints in augmentation workflows."
.. currentmodule:: kornia.augmentation.container
The classes in this section are containers for augmenting different data formats (e.g. images, videos).
Augmentation Sequential
-----------------------
Kornia augmentations provides simple on-device augmentation framework with the support of various syntax sugars
(e.g. return transformation matrix, inverse geometric transform). Therefore, we provide advanced augmentation
container to ease the pain of building augmenation pipelines. This API would also provide predefined routines
for automating the processing of masks, bounding boxes, and keypoints.
.. autoclass:: AugmentationSequential
.. automethod:: forward
.. automethod:: inverse
Augmentation Dispatchers
------------------------
Kornia supports two types of augmentation dispatching, namely many-to-many and many-to-one. The former wraps
different augmentations into one group and allows user to input multiple inputs in align with the number of
augmentations. The latter aims at performing different augmentations for one input that to obtain a list of
various transformed data.
.. autoclass:: ManyToManyAugmentationDispather
.. automethod:: forward
.. autoclass:: ManyToOneAugmentationDispather
.. automethod:: forward
ImageSequential
---------------
Kornia augmentations provides simple on-device augmentation framework with the support of various syntax sugars
(e.g. return transformation matrix, inverse geometric transform). Additionally, ImageSequential supports the
mix usage of both image processing and augmentation modules.
.. autoclass:: ImageSequential
.. automethod:: forward
Differences Between ImageSequential and AugmentationSequential
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``ImageSequential`` and ``AugmentationSequential`` are both pipeline containers
in Kornia, but they're designed for fundamentally different data handling
scenarios. Understanding when to use each prevents common pitfalls in vision
pipelines.
**Use ``AugmentationSequential`` when:**
- The task requires synchronized transformations across multiple related tensors
(images, masks, bounding boxes, keypoints).
- Spatial correspondence must be maintained between inputs and targets, as in
semantic segmentation or object detection workflows.
- Multiple data formats need to be handled automatically with consistent random
parameter sampling across all targets.
**Use ``ImageSequential`` when:**
- The pipeline only processes image tensors without auxiliary spatial targets.
- The workflow combines augmentation modules with general image processing
operations (gaussian blur, edge detection, color transforms).
- A lightweight container is preferred without the overhead of multi-target
synchronization logic.
Example using ``ImageSequential``::
import torch
import kornia.augmentation as K
from kornia.augmentation.container import ImageSequential
from kornia.filters import gaussian_blur2d
img = torch.rand(1, 3, 256, 256)
seq = ImageSequential(
K.RandomHorizontalFlip(p=1.0),
gaussian_blur2d, # arbitrary differentiable ops can be inserted
)
out = seq(img)
Example using ``AugmentationSequential`` with synchronized transforms::
import torch
import kornia.augmentation as K
img = torch.rand(1, 3, 256, 256)
mask = torch.rand(1, 1, 256, 256)
aug = K.AugmentationSequential(
K.RandomResizedCrop((128, 128), p=1.0),
data_keys=["input", "mask"],
)
img_out, mask_out = aug(img, mask)
# identical random parameters applied to both tensors
The core distinction: ``AugmentationSequential`` guarantees that random
augmentation parameters are shared across all specified data keys, maintaining
geometric consistency. ``ImageSequential`` applies operations independently to
single image tensors without multi-target awareness.
PatchSequential
---------------
.. autoclass:: PatchSequential
.. automethod:: forward
Video Data Augmentation
-----------------------
Video data is a special case of 3D volumetric data that contains both spatial and temporal information, which can be referred as 2.5D than 3D.
In most applications, augmenting video data requires a static temporal dimension to have the same augmentations are performed for each frame.
Thus, `VideoSequential` can be used to do such trick as same as `nn.Sequential`.
Currently, `VideoSequential` supports data format like :math:`(B, C, T, H, W)` and :math:`(B, T, C, H, W)`.
.. code-block:: python
import kornia.augmentation as K
transform = K.VideoSequential(
K.RandomAffine(360),
K.ColorJiggle(0.2, 0.3, 0.2, 0.3),
data_format="BCTHW",
same_on_frame=True
)
.. autoclass:: VideoSequential
.. automethod:: forward