imagecorruptions Documentation

repository·master·Indexed 19 days ago

https://github.com/bethgelab/imagecorruptions

A toolkit for applying image perturbations to benchmark neural network robustness. It supports arbitrary dimensions, aspect ratios, and grayscale images. Key features include the `corrupt` function for applying specific perturbations by name or index, and the `corrupt_images.py` script for batch processing directories of images with configurable output organization modes.

Tokens
1.5K
Snippets
5
Records
5
Agent score
17%

What's inside imagecorruptions

  1. Use the corrupt() function to apply image perturbations

    master

    The corrupt function is the primary API for applying corruptions to an image. It accepts an image, a corruption_name (or corruption_number), and a severity level.

    Note: These corruptions are designed for benchmarking neural network robustness against unseen perturbations, not for training data augmentation.

    from imagecorruptions import corrupt
    
    # Apply a specific corruption with a specific severity
    corrupted_image = corrupt(image, corruption_name='gaussian_blur', severity=1)
  2. Iterate over available corruptions by name or index

    master

    You can loop through all available corruptions using get_corruption_names() for names or by using an integer index with corruption_number.

    Common corruptions (the first 15) can be accessed via name. If you need validation corruptions, use get_corruption_names('validation').

    from imagecorruptions import get_corruption_names, corrupt
    
    # Loop via name
    for corruption in get_corruption_names():
        for severity in range(5):
            corrupted = corrupt(image, corruption_name=corruption, severity=severity+1)
    
    # Loop via index (first 15 are common corruptions)
    for i in range(15):
        for severity in range(5):
            corrupted = corrupt(image, corruption_number=i, severity=severity+1)
  3. Reference: corrupt_images.py CLI arguments

    master

    The following arguments are available for the corrupt_images.py script:

    positional arguments:
      in_path               Directory which has to be processed
      out_path              Output folder
      {subdirs,filename}    How should the output be organized
    
    optional arguments:
      -h, --help            show this help message and exit
      -su {common,validation,all,noise,blur,weather,digital}, --subset {common,validation,all,noise,blur,weather,digital}
                            Which subsets of corruptions should be applied
      -c {gaussian_noise,shot_noise,impulse_noise,defocus_blur,glass_blur,motion_blur,zoom_blur,snow,frost,fog,brightness,contrast,elastic_transform,pixelate,jpeg_compression,speckle_noise,gaussian_blur,spatter,saturate} [{gaussian_noise,shot_noise,impulse_noise,defocus_blur,glass_blur,motion_blur,zoom_blur,snow,frost,fog,brightness,contrast,elastic_transform,pixelate,jpeg_compression,speckle_noise,gaussian_blur,spatter,saturate} ...], --corruptions {gaussian_noise,shot_noise,impulse_noise,defocus_blur,glass_blur,motion_blur,zoom_blur,snow,frost,fog,brightness,contrast,elastic_transform,pixelate,jpeg_compression,speckle_noise,gaussian_blur,spatter,saturate} [{gaussian_noise,shot_noise,impulse_noise,defocus_blur,glass_blur,motion_blur,zoom_blur,snow,frost,fog,brightness,contrast,elastic_transform,pixelate,jpeg_compression,speckle_noise,gaussian_blur,spatter,saturate} ...]
                            Kind of corruptions to be applied, can be mixed with subset
      -se [{1,2,3,4} ...], --severity [{1,2,3,4} ...]
                            Severity level of corruption, if not provided all 5 levels will be applied
      -j J                  Multiprocessing, default is 1 core
      -n N                  Limit the number of input images to be corrupted
  4. Apply corruptions to a batch of images using corrupt_images.py

    master

    The corrupt_images.py script allows you to process an entire directory of images. It maintains the original folder structure and allows you to specify subsets, specific corruption types, and severity levels.

    Output Organization Modes:

    • subdirs: Places corrupted files in subfolders (e.g., $OUTPUT_DIR/dir1/brightness/1/image1.png).
    • filename: Appends the corruption and severity to the filename (e.g., $OUTPUT_DIR/dir1/image1_brightness_1.png).
    # Example usage (template)
    python corrupt_images.py [options] in_path out_path {subdirs,filename}