Build a Convolutional Neural Network (CNN) model to classify images from a given dataset into predefined categories/classes.
Kaggle - Animals10: The second dataset contains about 28,000 medium quality animal images belonging to 10 categories: dog, cat, horse, spyder, butterfly, chicken, sheep, cow, squirrel, elephant. The link is here.
- Details, meatrics and plots are in the project nootebook (here).
- Data loading and preprocessing (e.g., normalization, resizing, augmentation).
- Create visualizations of some images, and labels.
- Design a CNN architecture suitable for image classification.
- Include convolutional layers, pooling layers, and fully connected layers.
- Train the CNN model using appropriate optimization techniques (e.g., stochastic gradient descent, Adam). Utilize techniques such as early stopping to prevent overfitting.
- Evaluate the trained model on a separate validation set.
- Compute and report metrics such as accuracy, precision, recall, and F1-score.
- Visualize the confusion matrix to understand model performance across different classes.
- Evaluate the accuracy of your model on a pre-trained models like ImagNet, VGG16, Inception... (pick one an justify your choice) You may find this link helpful. This is the Pytorch version.
- Perform transfer learning with your chosen pre-trained models i.e., you will probably try a few and choose the best one.
- Model selected EfficientNetB0 - Keras Specifications
- Unfreeze top layers to ajust using our dataset
- Use a lower learning rate to reduce hard changes on the weights
- Our 18-layer CNN model metrics are better (see the notebook).
- The model selected for deployment was our 18-layer CNN model.
- Configure and set the Web Service Model Image Classification based on Flask and TensorFlow implementation.
- Project Web Service implementation files are here