# Dataset Augmentaion
This article will cover how you can increase the size of your original dataset with the help of data augmentation.
Data augmentaion is a practice of altering samples in your dataset, making them distinct enough from the original sample to be considered a new sample, and keeping alterations small enough to keep them recognizable as a part of the dataset's original data domain.
Examples: Adding slight noise to audio samples and mirroring images.
# Image augmentaion
The simplest way to add data augmentaion to your training pipeline is to use Albumentations library.
Starting from the most basic ones, here are some augmentaion tricks you can use:
- Original image:
```python
image = Image.open("testImg.jpg")
image_np = np.array(image)
```
- Image flipping or mirroring:
```python
transform = A.Compose([A.HorizontalFlip(p=1.0)])
transformed_image = transform(image=image_np)["image"]
```
```python
transform = A.Compose([A.VerticalFlip(p=1.0)])
transformed_image = transform(image=image_np)["image"]
```
- Image rotation:
```python
transform = A.Compose([A.Rotate(p=1.0, limit=45, border_mode=0)])
transformed_image = transform(image=image_np)["image"]
```
- HSV Jitter:
```python
transform = A.Compose([A.ColorJitter(p=1.0)])
transformed_image = transform(image=image_np)["image"]
```
- Gaussian Noise:
```python
transform = A.Compose([A.GaussNoise(p=1.0, var_limit=(1000.0, 5000.0))])
transformed_image = transform(image=image_np)["image"]
```
Augmentaions almost always combined with each other:
```python
transform = A.Compose([
A.HorizontalFlip(p=1.0),
A.VerticalFlip(p=1.0),
A.Rotate(p=1.0, limit=45, border_mode=0),
A.RandomBrightnessContrast(p=1.0, brightness_limit=(0.15,0.25)),
A.ColorJitter(p=1.0),
A.GaussNoise(p=1.0, var_limit=(1000.0, 2000.0),),
])
transformed_image = transform(image=image_np)["image"]
```
Above is an extremecase of image augmentaion, we still want to keep the resulting images as close to the original data distribution as possible:
```python
transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.Rotate(p=0.5, limit=15, border_mode=0),
A.RandomBrightnessContrast(p=0.5, brightness_limit=(-0.1,0.1)),
A.ColorJitter(p=0.5),
A.GaussNoise(p=0.5, var_limit=(50.0, 250.0),),
])
transformed_image = transform(image=image_np)["image"]
```
# Further Reading
You can follow the links bellow for example use of Albumentaions library with popular AI/ML libraries.