Overview#
Dataset Creation & Preprocessing
Gather at least 500 images for each of 5 or more distinct classes.
Assign correct class labels and maintain a clear folder structure.
Remove duplicates, low-quality images, and irrelevant content.
(You don’t need to split the dataset, as you can do this in the code.)
Model from Scratch
Design a CNN with at least three convolutional blocks (Conv→Activation→Pooling).
Include regularisation (batch normalisation or dropout).
Train for a minimum of 20 epochs using an appropriate optimiser and learning-rate schedule.
Plot training and validation loss/accuracy curves.
Transfer Learning
Select a pretrained model (e.g., MobileNet or ResNet).
Replace its classification head to match your dataset’s number of classes.
Freeze the backbone and train only the new head.
Unfreeze some or all backbone layers and fine-tune.
Use online data augmentation to improve generalisation.
Train for at least 10 epochs and record learning curves for each configuration, namely:
feature extraction (only the new head) with and without augmentation,
fine-tuning (unfreeze some or all layers) with and without augmentation.
Analysis & Reporting
Tabulate final metrics: confusion matrix, accuracy, precision, and recall.
Compare convergence speed (epochs to plateau), final performance, and computational cost.
Discuss the advantages and limitations of each method in this context.