This project introduces Convolutional Neural Networks (CNNs) and their application to image classification problems.
You will learn key CNN concepts, implement classic architectures, apply modern techniques, and evaluate model performance.
- Understand convolution and pooling operations
- Implement LeNet and other CNN architectures
- Explore modern architectures like ResNet and DenseNet
- Apply data augmentations: flipping, cropping, CutOut
- Apply MixUp and CutMix augmentations
- Use Test-Time-Augmentations (TTA)
- Achieve high performance on real-world image classification tasks
- Zindi gesture dataset
- Tasks:
- Examine and clean data (remove duplicates, check labels)
- Train-validation split (33% validation)
- Custom PyTorch Dataset & DataLoader
- Convolution operation: feature extraction with parameter sharing
- Pooling: max/average pooling for spatial invariance
- LeNet: first CNN for image classification
- Modern CNNs: ResNet, DenseNet, skip and dense connections
- Augmentations: flip, crop, blur, contrast, CutOut
- MixUp & CutMix: sample and label mixing for improved generalization
- Test-Time-Augmentations: inference with multiple transformations
- Data Preparation
- Inspect dataset
- Handle duplicates and mislabeled examples
- Design training/validation split
- PyTorch Dataset & DataLoader
- Custom class using OpenCV2 & pandas
- Proper API for sample retrieval
- Model Implementation
- Rebuild LeNet using
Conv2d,Pooling,Linear,Dropout - Implement training and validation loop
- Loss: Binary Cross Entropy
- Metric: ROC AUC (target ≥ 0.75 for LeNet)
- Rebuild LeNet using
- Modern Architectures
- Use pretrained backbones (e.g.,
resnet18) - Replace head with linear layer
- Train for 2–4 epochs (ROC AUC ≥ 0.9)
- Use pretrained backbones (e.g.,
- Augmentations
- Test augmentations from albumentations
- Apply MixUp & CutMix
- Evaluate impact on validation ROC AUC
- Bonus
- Implement Test-Time-Augmentations (TTA)
- Average predictions from multiple transforms
- Python 3
- PyTorch
- OpenCV2
- Pandas
- Albumentations
- NumPy
- scikit-learn
- Matplotlib / Seaborn