Overview

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.