Install imagecorruptions via pip
masterYou can install the package using pip3.
pip3 install imagecorruptionsrepository·master·Indexed 19 days ago
https://github.com/bethgelab/imagecorruptionsA 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.
You can install the package using pip3.
pip3 install imagecorruptionsThe 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)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)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 corruptedThe 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}