Data augmentation helps computers learn better by making more varied examples from the same pictures. This makes the model stronger and less likely to make mistakes.
0
0
Data augmentation importance in Computer Vision
Introduction
When you have only a few pictures to teach the computer.
When you want the model to recognize objects from different angles or lighting.
When you want to avoid the model memorizing exact pictures and instead learn general patterns.
When you want to improve the model's ability to handle real-world changes like rotation or zoom.
When you want to reduce errors caused by small changes in the input images.
Syntax
Computer Vision
from torchvision import transforms augmentation = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomRotation(15), transforms.ColorJitter(brightness=0.2, contrast=0.2), transforms.ToTensor() ])
Use transforms.Compose to combine multiple augmentation steps.
Each transform changes the image slightly to create new training examples.
Examples
Flips the image left to right randomly, like looking in a mirror.
Computer Vision
transforms.RandomHorizontalFlip()
Rotates the image randomly up to 30 degrees to simulate different angles.
Computer Vision
transforms.RandomRotation(30)Changes the brightness of the image randomly to mimic different lighting.
Computer Vision
transforms.ColorJitter(brightness=0.3)Sample Model
This code loads MNIST digits, applies simple image changes, and trains a small model for one batch. It prints the loss to show training progress.
Computer Vision
import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader # Define simple augmentations augmentation = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomRotation(10), transforms.ToTensor() ]) # Load MNIST dataset with augmentation train_data = datasets.MNIST(root='./data', train=True, download=True, transform=augmentation) train_loader = DataLoader(train_data, batch_size=64, shuffle=True) # Simple model import torch.nn as nn import torch.optim as optim class SimpleNN(nn.Module): def __init__(self): super().__init__() self.flatten = nn.Flatten() self.linear = nn.Linear(28*28, 10) def forward(self, x): x = self.flatten(x) return self.linear(x) model = SimpleNN() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.1) # Train for 1 epoch model.train() for images, labels in train_loader: optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() break # Just one batch for demo print(f"Loss after one batch with augmentation: {loss.item():.4f}")
OutputSuccess
Important Notes
Data augmentation can slow training because it creates new images on the fly.
Too much augmentation can confuse the model if images become unrealistic.
Always test if augmentation improves your model by comparing results with and without it.
Summary
Data augmentation creates new training images by changing originals slightly.
This helps models learn better and avoid mistakes on new data.
Use simple transforms like flips, rotations, and brightness changes for good results.