This project aims to implement and evaluate various iterations of Convolutional Neural Networks (CNNs) for object classification on the CIFAR-10 dataset. The dataset consists of 60,000 images categorized into 10 distinct classes. The project is divided into four phases, each progressively enhancing the CNN architecture and evaluating its performance.
- Construct a simple CNN with a few convolutional layers followed by fully-connected layers.
- Train the model on the CIFAR-10 dataset.
- Report the results and performance metrics.
- Enhance the CNN by adding appropriate pooling layers after the convolutional layers.
- Train the modified model on the CIFAR-10 dataset.
- Observe and report the changes in performance.
- Incorporate dropout layers into the CNN architecture to reduce overfitting.
- Train the updated model on the CIFAR-10 dataset.
- Report the benefits of using dropout and its impact on model performance.
- Implement a well-known CNN architecture, ShuffleNet.
- Train ShuffleNet on the CIFAR-10 dataset.
- Report the results and compare the performance with previous models.
The CIFAR-10 dataset consists of 60,000 32x32 color images in 10 classes, with 6,000 images per class. The dataset is divided into 50,000 training images and 10,000 test images. You may choose an optimal train-validation-test split and discuss your configuration in the report.
-
Train Basic CNN:
python projcnn1.py
-
Train CNN with Pooling Layers:
python projcnn2.py
-
Train CNN with Dropout:
python projcnn3.py
-
Train ResNet50:
python projcnnResNet50_TL.py
-
Train ShuffleNet:
python projcnnShuffleNet_TL.py
- Phase 1: Basic CNN
- Phase 2: CNN with Pooling Layers
- Phase 3: CNN with Dropout
- Phase 4: ResNet50 and ShuffleNet