Skip to main content

fast image augmentation library and easy to use wrapper around other libraries

Project description

Albumentations

Build Status Documentation Status

  • Great fast augmentations based on highly-optimized OpenCV library
  • Super simple yet powerful interface for different tasks like (segmentation, detection, etc.)
  • Easy to customize
  • Easy to add other frameworks

Vladimir_Iglovikov

Authors

Alexander Buslaev

Alex Parinov

Vladimir Iglovikov

Example usage

from albumentations import (
    CLAHE, RandomRotate90, Transpose, ShiftScaleRotate, Blur, OpticalDistortion, 
    GridDistortion, HueSaturationValue, IAAAdditiveGaussianNoise, GaussNoise, MotionBlur, 
    MedianBlur, IAAPiecewiseAffine, IAASharpen, IAAEmboss, RandomContrast, RandomBrightness, 
    Flip, OneOf, Compose
)
import numpy as np

def strong_aug(p=0.5):
    return Compose([
        RandomRotate90(),
        Flip(),
        Transpose(),
        OneOf([
            IAAAdditiveGaussianNoise(),
            GaussNoise(),
        ], p=0.2),
        OneOf([
            MotionBlur(p=0.2),
            MedianBlur(blur_limit=3, p=0.1),
            Blur(blur_limit=3, p=0.1),
        ], p=0.2),
        ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
        OneOf([
            OpticalDistortion(p=0.3),
            GridDistortion(p=0.1),
            IAAPiecewiseAffine(p=0.3),
        ], p=0.2),
        OneOf([
            CLAHE(clip_limit=2),
            IAASharpen(),
            IAAEmboss(),
            RandomContrast(),
            RandomBrightness(),
        ], p=0.3),
        HueSaturationValue(p=0.3),
    ], p=p)

image = np.ones((300, 300, 3), dtype=np.uint8)
mask = np.ones((300, 300), dtype=np.uint8)
whatever_data = "my name"
augmentation = strong_aug(p=0.9)
data = {"image": image, "mask": mask, "whatever_data": whatever_data, "additional": "hello"}
augmented = augmentation(**data)
image, mask, whatever_data, additional = augmented["image"], augmented["mask"], augmented["whatever_data"], augmented["additional"]

See example.ipynb

Installation

You can use pip to install albumentations:

pip install albumentations

If you want to get the latest version of the code before it is released on PyPI you can install the library from GitHub:

pip install -U git+https://github.com/albu/albumentations

Documentation

The full documentation is available at albumentations.readthedocs.io.

Demo

You can use this Google Colaboratory notebook to adjust image augmentation parameters and see the resulting images.

Migrating from torchvision to albumentations

Migrating from torchvision to albumentations is simple - you just need to change a few lines of code. Albumentations has equivalents for common torchvision transforms as well as plenty of transforms that are not presented in torchvision. migrating_from_torchvision_to_albumentations.ipynb shows how one can migrate code from torchvision to albumentations.

Working with non-8-bit images

example_16_bit_tiff.ipynb shows how albumentations can be used to work with non-8-bit images (such as 16-bit and 32-bit TIFF images).

Object detection tasks and bounding boxes

example_bboxes.ipynb shows how albumentations can be used to work with bounding boxes.

Benchmarking results

To run the benchmark yourself follow the instructions in benchmark/README.md

Results for running the benchmark on first 2000 images from the ImageNet validation set using an Intel Core i7-7800X CPU. All times are in seconds, lower is better.

albumentations imgaug torchvision
(Pillow backend)
torchvision
(Pillow-SIMD backend)
Keras
RandomCrop64 0.0017 - 0.0182 0.0182 -
PadToSize512 0.2413 - 2.493 2.3682 -
HorizontalFlip 0.7765 2.2299 0.3031 0.3054 2.0508
VerticalFlip 0.178 0.3899 0.2326 0.2308 0.1799
Rotate 3.8538 4.0581 16.16 9.5011 50.8632
ShiftScaleRotate 2.0605 2.4478 18.5401 10.6062 47.0568
Brightness 2.1018 2.3607 4.6854 3.4814 9.9237
ShiftHSV 10.3925 14.2255 34.7778 27.0215 -
ShiftRGB 2.6159 2.1989 - - 3.0598
Gamma 1.4832 - 1.1397 1.1447 -
Grayscale 1.2048 5.3895 1.6826 1.2721 -

Contributing

  1. Clone the repository:
git clone git@github.com:albu/albumentations.git
cd albumentations
  1. Install the library in development mode:
pip install -e .[tests]
  1. Run tests:
pytest

Building the documentation

  1. Go to docs/ directory
cd docs
  1. Install required libraries
pip install -r requirements.txt
  1. Build html files
make html
  1. Open _build/html/index.html in browser.

Alternatively, you can start a web server that rebuilds the documentation automatically when a change is detected by running make livehtml

Comments

In some systems, in the multiple GPU regime PyTorch may deadlock the DataLoader if OpenCV was compiled with OpenCL optimizations. Adding the following two lines before the library import may help. For more details https://github.com/pytorch/pytorch/issues/1355

cv2.setNumThreads(0)	
cv2.ocl.setUseOpenCL(False)

Thanks:

Special thanks to @creafz for refactoring, documentation, tests, CI and benchmarks. Awesome work!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

albumentations-0.0.12.tar.gz (37.5 kB view details)

Uploaded Source

File details

Details for the file albumentations-0.0.12.tar.gz.

File metadata

  • Download URL: albumentations-0.0.12.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.6

File hashes

Hashes for albumentations-0.0.12.tar.gz
Algorithm Hash digest
SHA256 177d11915f0bd9948fde691153902af7132b41b0e1b4faa69ba44d7cb1c5eb8c
MD5 865947efca8233ff9103e998d3c1e230
BLAKE2b-256 36c828fc1d9400b773b9c0d157c92e85fa065ef69d44a8338213d8c95e3add35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page