CS5720 - Week 5
Slide 92 of 100

Data Augmentation for Images

What is Data Augmentation?

Data augmentation artificially expands training datasets by applying transformations to existing images, creating new training examples without collecting additional data.
  • Increases dataset diversity by creating variations of existing images
  • Improves model generalization by exposing it to more data variations
  • Reduces overfitting by providing more training examples
  • Cost-effective alternative to collecting more labeled data
  • Preserves labels while creating semantically meaningful variations

Key Benefits

🛡️ Improved Robustness
Models become more resilient to variations in lighting, orientation, and scale
🎯 Better Generalization
Reduced overfitting leads to better performance on unseen test data
🔄 Translation Invariance
Models learn to recognize objects regardless of position or orientation
📈 Data Efficiency
Achieve better results with smaller original datasets
⚖️ Class Balance
Address class imbalance by augmenting underrepresented classes

Common Augmentation Techniques

🔄
Rotation
Rotate images by random angles to simulate different viewpoints
🪞
Flipping
Horizontal/vertical flips for left-right symmetry
🔍
Scaling
Zoom in/out to simulate different distances
📐
Translation
Shift images to simulate camera movement
💡
Brightness
Adjust brightness for different lighting conditions
Contrast
Modify contrast to simulate exposure variations
📶
Noise
Add random noise to simulate sensor noise
🌫️
Blur
Apply blur effects to simulate motion or focus issues

Implementation Example

import torch from torchvision import transforms # Define augmentation pipeline train_transform = transforms.Compose([ transforms.RandomRotation(degrees=30), transforms.RandomHorizontalFlip(p=0.5), transforms.RandomResizedCrop(size=224, scale=(0.8, 1.0)), transforms.ColorJitter(brightness=0.2, contrast=0.2), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # Apply to dataset augmented_dataset = ImageFolder(root='data/train', transform=train_transform)
🎛️ Use Moderation
Avoid over-augmentation that distorts images beyond recognition
🎯 Domain-Specific
Choose augmentations appropriate for your specific problem domain
📊 Validation Strategy
Apply minimal or no augmentation to validation sets
📈 Progressive Approach
Start with simple augmentations and gradually add complexity
Prepared by Dr. Gorkem Kar