A custom convolutional neural network built in Keras that classifies 32×32 images across 10 object categories — achieving 73.2% test accuracy trained from scratch on 50,000 images.
73.2% on CIFAR-10 is a strong result for a custom CNN trained from scratch — no pretrained weights, no transfer learning. The baseline (random guessing) is 10%. State-of-the-art approaches using large pretrained models reach ~99%, but those use orders of magnitude more compute and data.
CIFAR-10's hardest classes are cat/dog and automobile/truck — visually similar at 32×32 resolution. The model performs strongest on structurally distinct classes like airplane and ship, and weakest on fine-grained animal distinctions — a known pattern in CNN benchmarks.
Three blocks of increasing filter depth (32→64→128) with dropout after each was the key structural choice. Without dropout the model overfit significantly — val accuracy stayed ~10% below train. Data augmentation added ~3-4% improvement on top.
| Category | Tool | Purpose |
|---|---|---|
| Framework | Keras + TensorFlow backend | Model definition, training loop, layer API |
| Dataset | CIFAR-10 60,000 images | 50k train / 10k test, 10 classes, 32×32 RGB |
| Optimizer | Adam lr=0.001 | Adaptive gradient descent for CNN training |
| Loss | Categorical Crossentropy | Standard multi-class classification loss |
| Augmentation | Keras ImageDataGenerator | Horizontal flip, random crop, colour jitter |
| Regularization | Dropout 0.25 / 0.50 | Prevents overfitting in conv blocks and classifier |
| Evaluation | Per-class accuracy | Identifies which classes the model struggles with |