Skip to main content
Ctrl+K
NVIDIA DALI - Home NVIDIA DALI - Home

NVIDIA DALI

Git SHA: daf783f
NVIDIA DALI - Home NVIDIA DALI - Home

NVIDIA DALI

Table of Contents

  • Home

Getting Started

  • Installation
  • Platform Support
  • Getting Started Tutorial
  • Reporting vulnerabilities

Python API Documentation

  • Pipeline
  • Types
  • Mathematical Expressions
  • Indexing and Slicing
  • Operation Reference
    • nvidia.dali.fn
      • nvidia.dali.fn.audio_decoder
      • nvidia.dali.fn.audio_resample
      • nvidia.dali.fn.batch_permutation
      • nvidia.dali.fn.bb_flip
      • nvidia.dali.fn.bbox_paste
      • nvidia.dali.fn.box_encoder
      • nvidia.dali.fn.brightness
      • nvidia.dali.fn.brightness_contrast
      • nvidia.dali.fn.caffe2_reader
      • nvidia.dali.fn.caffe_reader
      • nvidia.dali.fn.cast
      • nvidia.dali.fn.cast_like
      • nvidia.dali.fn.cat
      • nvidia.dali.fn.coco_reader
      • nvidia.dali.fn.coin_flip
      • nvidia.dali.fn.color_space_conversion
      • nvidia.dali.fn.color_twist
      • nvidia.dali.fn.contrast
      • nvidia.dali.fn.coord_flip
      • nvidia.dali.fn.coord_transform
      • nvidia.dali.fn.copy
      • nvidia.dali.fn.crop
      • nvidia.dali.fn.crop_mirror_normalize
      • nvidia.dali.fn.dl_tensor_python_function
      • nvidia.dali.fn.dump_image
      • nvidia.dali.fn.element_extract
      • nvidia.dali.fn.erase
      • nvidia.dali.fn.expand_dims
      • nvidia.dali.fn.external_source
      • nvidia.dali.fn.fast_resize_crop_mirror
      • nvidia.dali.fn.file_reader
      • nvidia.dali.fn.flip
      • nvidia.dali.fn.full
      • nvidia.dali.fn.full_like
      • nvidia.dali.fn.gaussian_blur
      • nvidia.dali.fn.get_property
      • nvidia.dali.fn.grid_mask
      • nvidia.dali.fn.hsv
      • nvidia.dali.fn.hue
      • nvidia.dali.fn.image_decoder
      • nvidia.dali.fn.image_decoder_crop
      • nvidia.dali.fn.image_decoder_random_crop
      • nvidia.dali.fn.image_decoder_slice
      • nvidia.dali.fn.jitter
      • nvidia.dali.fn.jpeg_compression_distortion
      • nvidia.dali.fn.laplacian
      • nvidia.dali.fn.lookup_table
      • nvidia.dali.fn.mel_filter_bank
      • nvidia.dali.fn.mfcc
      • nvidia.dali.fn.multi_paste
      • nvidia.dali.fn.mxnet_reader
      • nvidia.dali.fn.nemo_asr_reader
      • nvidia.dali.fn.nonsilent_region
      • nvidia.dali.fn.normal_distribution
      • nvidia.dali.fn.normalize
      • nvidia.dali.fn.numba_function
      • nvidia.dali.fn.numpy_reader
      • nvidia.dali.fn.one_hot
      • nvidia.dali.fn.ones
      • nvidia.dali.fn.ones_like
      • nvidia.dali.fn.optical_flow
      • nvidia.dali.fn.pad
      • nvidia.dali.fn.paste
      • nvidia.dali.fn.peek_image_shape
      • nvidia.dali.fn.per_frame
      • nvidia.dali.fn.permute_batch
      • nvidia.dali.fn.power_spectrum
      • nvidia.dali.fn.preemphasis_filter
      • nvidia.dali.fn.python_function
      • nvidia.dali.fn.random_bbox_crop
      • nvidia.dali.fn.random_crop_generator
      • nvidia.dali.fn.random_resized_crop
      • nvidia.dali.fn.reinterpret
      • nvidia.dali.fn.reshape
      • nvidia.dali.fn.resize
      • nvidia.dali.fn.resize_crop_mirror
      • nvidia.dali.fn.roi_random_crop
      • nvidia.dali.fn.rotate
      • nvidia.dali.fn.saturation
      • nvidia.dali.fn.sequence_reader
      • nvidia.dali.fn.sequence_rearrange
      • nvidia.dali.fn.shapes
      • nvidia.dali.fn.slice
      • nvidia.dali.fn.spectrogram
      • nvidia.dali.fn.sphere
      • nvidia.dali.fn.squeeze
      • nvidia.dali.fn.ssd_random_crop
      • nvidia.dali.fn.stack
      • nvidia.dali.fn.tfrecord_reader
      • nvidia.dali.fn.to_decibels
      • nvidia.dali.fn.torch_python_function
      • nvidia.dali.fn.transpose
      • nvidia.dali.fn.uniform
      • nvidia.dali.fn.video_reader
      • nvidia.dali.fn.video_reader_resize
      • nvidia.dali.fn.warp_affine
      • nvidia.dali.fn.water
      • nvidia.dali.fn.zeros
      • nvidia.dali.fn.zeros_like
    • nvidia.dali.fn.decoders
      • nvidia.dali.fn.decoders.audio
      • nvidia.dali.fn.decoders.image
      • nvidia.dali.fn.decoders.image_crop
      • nvidia.dali.fn.decoders.image_random_crop
      • nvidia.dali.fn.decoders.image_slice
    • nvidia.dali.fn.experimental
      • nvidia.dali.fn.experimental.audio_resample
      • nvidia.dali.fn.experimental.debayer
      • nvidia.dali.fn.experimental.dilate
      • nvidia.dali.fn.experimental.equalize
      • nvidia.dali.fn.experimental.erode
      • nvidia.dali.fn.experimental.filter
      • nvidia.dali.fn.experimental.inflate
      • nvidia.dali.fn.experimental.median_blur
      • nvidia.dali.fn.experimental.peek_image_shape
      • nvidia.dali.fn.experimental.remap
      • nvidia.dali.fn.experimental.resize
      • nvidia.dali.fn.experimental.tensor_resize
      • nvidia.dali.fn.experimental.warp_perspective
    • nvidia.dali.fn.experimental.decoders
      • nvidia.dali.fn.experimental.decoders.image
      • nvidia.dali.fn.experimental.decoders.image_crop
      • nvidia.dali.fn.experimental.decoders.image_random_crop
      • nvidia.dali.fn.experimental.decoders.image_slice
      • nvidia.dali.fn.experimental.decoders.video
    • nvidia.dali.fn.experimental.inputs
      • nvidia.dali.fn.experimental.inputs.video
    • nvidia.dali.fn.experimental.readers
      • nvidia.dali.fn.experimental.readers.fits
      • nvidia.dali.fn.experimental.readers.video
    • nvidia.dali.fn.io.file
      • nvidia.dali.fn.io.file.read
    • nvidia.dali.fn.noise
      • nvidia.dali.fn.noise.gaussian
      • nvidia.dali.fn.noise.salt_and_pepper
      • nvidia.dali.fn.noise.shot
    • nvidia.dali.fn.plugin.video
      • nvidia.dali.fn.plugin.video.decoder
    • nvidia.dali.fn.random
      • nvidia.dali.fn.random.beta
      • nvidia.dali.fn.random.choice
      • nvidia.dali.fn.random.coin_flip
      • nvidia.dali.fn.random.normal
      • nvidia.dali.fn.random.uniform
    • nvidia.dali.fn.readers
      • nvidia.dali.fn.readers.caffe
      • nvidia.dali.fn.readers.caffe2
      • nvidia.dali.fn.readers.coco
      • nvidia.dali.fn.readers.file
      • nvidia.dali.fn.readers.mxnet
      • nvidia.dali.fn.readers.nemo_asr
      • nvidia.dali.fn.readers.numpy
      • nvidia.dali.fn.readers.sequence
      • nvidia.dali.fn.readers.tfrecord
      • nvidia.dali.fn.readers.video
      • nvidia.dali.fn.readers.video_resize
      • nvidia.dali.fn.readers.webdataset
    • nvidia.dali.fn.reductions
      • nvidia.dali.fn.reductions.max
      • nvidia.dali.fn.reductions.mean
      • nvidia.dali.fn.reductions.mean_square
      • nvidia.dali.fn.reductions.min
      • nvidia.dali.fn.reductions.rms
      • nvidia.dali.fn.reductions.std_dev
      • nvidia.dali.fn.reductions.sum
      • nvidia.dali.fn.reductions.variance
    • nvidia.dali.fn.segmentation
      • nvidia.dali.fn.segmentation.random_mask_pixel
      • nvidia.dali.fn.segmentation.random_object_bbox
      • nvidia.dali.fn.segmentation.select_masks
    • nvidia.dali.fn.transforms
      • nvidia.dali.fn.transforms.combine
      • nvidia.dali.fn.transforms.crop
      • nvidia.dali.fn.transforms.rotation
      • nvidia.dali.fn.transforms.scale
      • nvidia.dali.fn.transforms.shear
      • nvidia.dali.fn.transforms.translation
    • nvidia.dali.plugin.jax.fn
      • nvidia.dali.plugin.jax.fn.jax_function
    • nvidia.dali.plugin.numba.fn.experimental
      • nvidia.dali.plugin.numba.fn.experimental.numba_function
    • nvidia.dali.plugin.pytorch.fn
      • nvidia.dali.plugin.pytorch.fn.torch_python_function
  • Automatic Augmentations
    • AutoAugment
    • RandAugment
    • TrivialAugment
    • Augmentations reference
  • Operator Objects (Legacy)
  • DL Framework Plugins
    • PyTorch
      • PyTorch Plugin API reference
      • PyTorch DALI Proxy
      • Pytorch Framework
        • Using DALI in PyTorch
        • ExternalSource operator
        • Using PyTorch DALI plugin: using various readers
        • Using DALI in PyTorch Lightning
    • TensorFlow
      • TensorFlow Plugin API reference
      • Tensorflow Framework
        • Using Tensorflow DALI plugin: DALI and tf.data
        • Using Tensorflow DALI plugin: DALI tf.data.Dataset with multiple GPUs
        • Inputs to DALI Dataset with External Source
        • Using Tensorflow DALI plugin with sparse tensors
        • Using Tensorflow DALI plugin: simple example
        • Using Tensorflow DALI plugin: using various readers
    • PaddlePaddle
      • PaddlePaddle Plugin API reference
      • PaddlePaddle Framework
        • Using DALI in PaddlePaddle
        • ExternalSource operator
        • Using Paddle DALI plugin: using various readers
    • JAX
      • JAX Plugin API reference
      • JAX Framework
        • Getting started with JAX and DALI
        • Training a neural network with DALI and JAX
        • Training with multiple GPUs
        • Training neural network with DALI and Flax
        • Training neural network with DALI and Paxml
        • Getting started with T5X and DALI
      • Running JAX in DALI pipeline

Examples and Tutorials

  • Data Loading
    • External Source Operator - basic usage
    • Parallel External Source
    • Parallel External Source - Fork
    • Data Loading: LMDB Database
    • Data loading: MXNet recordIO
    • Data Loading: TensorFlow TFRecord
    • Data Loading: Webdataset
    • COCO Reader
    • Numpy Reader
  • Operations
    • General Purpose
      • DALI Expressions and Arithmetic Operations
        • DALI Expressions and Arithmetic Operators
        • DALI Binary Arithmetic Operators - Type Promotions
        • Custom Augmentations with Arithmetic Operations
        • Conditional-Like Execution and Masking
      • Reduction Operators
      • Tensor Joining
      • Reinterpreting Tensors
      • Normalize Operator
      • Geometric Transforms
      • Erase Operator
    • Image Processing
      • Augmentation Gallery
      • BrightnessContrast Example
      • Color Space Conversion
      • Image Decoder examples
      • HSV Example
      • Interpolation methods
      • Resize operator
      • WarpAffine
      • 3D Transforms
    • Audio Processing
      • Audio Decoder in DALI
      • Audio spectrogram
    • Video Processing
      • Simple Video Pipeline Reading From Multiple Files
      • Video Pipeline Reading Labelled Videos from a Directory
      • Video Pipeline Demonstrating Applying Labels Based on Timestamps or Frame Numbers
      • Reading Video Frames Stored as Images
      • Processing video with image processing operators
      • Optical Flow
  • Use Cases
    • Video Super-Resolution
    • ImageNet Training in PyTorch
    • Single Shot MultiBox Detector Training in PyTorch
    • EfficientNet for PyTorch with DALI and AutoAugment
    • ResNet-N with TensorFlow and DALI
    • You Only Look Once v4 with TensorFlow and DALI
    • EfficientDet with TensorFlow and DALI
    • PaddlePaddle Use-Cases
      • ResNet Training in PaddlePaddle
      • Temporal Shift Module Inference in PaddlePaddle
    • COCO Reader with Augmentations
    • WebDataset integration using External Source
  • Other
    • Multiple GPU Support
    • Conditional execution in DALI
    • Custom Operations
      • Create a Custom Operator in C++
      • Python Operators
      • Processing GPU Data with Python Operators
      • Numba Function - Running a Compiled C Callback Function
      • Running custom JAX augmentations in DALI
      • Running JAX augmentations on multiple GPUs
    • Serialization
    • Operator Objects (Legacy)
    • Pipeline Debug Mode (experimental)

Advanced

  • Performance Tuning
  • Sharding
  • Pipeline Run Methods
  • Checkpointing
  • Experimental
  • Compiling DALI from Source
  • DALI Environment Variables

Frequently Asked Questions

  • Q&A

Reference

  • Release Notes
  • GitHub
  • Roadmap
  • Examples and Tutorials
  • Operations
  • Image Processing
  • Augmentation Gallery

Augmentation Gallery#

This example showcases different augmentations possible with DALI.

DALI_EXTRA_PATH environment variable should point to the place where data from DALI extra repository is downloaded. Please make sure that the proper release tag is checked out.

[1]:
from nvidia.dali import pipeline_def
import nvidia.dali.fn as fn
import nvidia.dali.types as types
import matplotlib.pyplot as plt
import math
import os.path

test_data_root = os.environ["DALI_EXTRA_PATH"]
db_folder = os.path.join(test_data_root, "db", "lmdb")

augmentations = {}

# input is sampled randomly for output pixel's neighbourhood
augmentations["erase"] = lambda images: fn.erase(
    images,
    anchor=[0.3, 0.2],
    shape=[0.5, 0.6],
    normalized_anchor=True,
    normalized_shape=True,
    axis_names="HW",
)

augmentations["slice"] = lambda images: fn.slice(
    images, rel_start=[0.3, 0.2], rel_shape=[0.5, 0.6], axis_names="HW"
)

# transforms sampling coordinates to produce wavy patterns
augmentations["water"] = lambda images: fn.water(images)

# applies fisheye distortion
augmentations["sphere"] = lambda images: fn.sphere(images)

# rotates the image, enlarging the canvas
augmentations["rotate"] = lambda images: fn.rotate(
    images, angle=30, interp_type=types.INTERP_LINEAR, fill_value=0
)

# applies affine transform
augmentations["warp_affine"] = lambda images: fn.warp_affine(
    images,
    matrix=[1.0, 0.8, 0.0, 0.0, 1.2, 0.0],
    interp_type=types.INTERP_LINEAR,
)

# manipulates brightness and contrast of the image
augmentations["brightness_contrast"] = lambda images: fn.brightness_contrast(
    images, brightness=0.5, contrast=1.5
)

# Generate JPEG compression artifacts
augmentations["jpeg compression distortion"] = (
    lambda images: fn.jpeg_compression_distortion(images, quality=5)
)

# twists colors of the image
augmentations["hsv"] = lambda images: fn.hsv(images, hue=45.0, saturation=0.2)

# places the image on a larger canvas
augmentations["paste"] = lambda images: fn.paste(
    images, ratio=2.0, fill_value=(55, 155, 155), paste_x=0.1, paste_y=0.7
)

# param flips the image
augmentations["vertical and horizontal flip"] = lambda images: fn.flip(
    images, vertical=1, horizontal=1
)


@pipeline_def()
def augmentation_gallery_pipe(path):
    encoded, labels = fn.readers.caffe(path=path, random_shuffle=True)
    images = fn.decoders.image(encoded, device="mixed", output_type=types.RGB)
    return tuple(
        [labels, images] + [aug(images) for aug in augmentations.values()]
    )
[2]:
pipe = augmentation_gallery_pipe(
    path=db_folder, batch_size=32, num_threads=2, device_id=0, seed=10
)
pipe.build()
[3]:
pipe_out = pipe.run()
[4]:
n = 5
from synsets import imagenet_synsets
import matplotlib.gridspec as gridspec

len_outputs = len(pipe_out) - 1
augmentations = ["original"] + list(augmentations.keys())
fig = plt.figure(figsize=(16, 16))
plt.suptitle(imagenet_synsets[pipe_out[0].at(n)[0]], fontsize=16)
columns = 4
rows = int(math.ceil(len_outputs / columns))
gs = gridspec.GridSpec(rows, columns)
for i in range(len_outputs):
    plt.subplot(gs[i])
    plt.axis("off")
    plt.title(augmentations[i])
    pipe_out_cpu = pipe_out[1 + i].as_cpu()
    img_chw = pipe_out_cpu.at(n)
    plt.imshow((img_chw) / 255.0)
../../_images/examples_image_processing_augmentation_gallery_4_0.png

previous

Image Processing

next

BrightnessContrast Example

NVIDIA NVIDIA
Privacy Policy | Manage My Privacy | Do Not Sell or Share My Data | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact

Copyright © 2018-2025, NVIDIA Corporation.