In this project, we built image classification models that are deployed in a real-world application. Given an image of an SME store, the algorithm will identify whether the image contains a banner or not. We created several models using CNN and transfer learning with MobileNet, ResNet, and Inception.
These models serve as the MVP feature of the application. Our initial plan was to create a model capable of analyzing and generating design ideas for store logos and banners.
To run the code, we will need to install:
- tensorflow==2.15.0
- tensorflow-hub==0.15.0
- numpy==1.23.5
- matplotlib==3.7.1
You can install the libraries with this code:
pip install -r requirements.txt
- Clone this repository to your local machine.
- Open the
classify.ipynbin Jupyter Notebook, or Colab. - Modify the values of
input_shape,model_pathandimage_path. - Run the notebook
- The notebook will preprocess the data, make prediction, and visualize the result.
- Dataset: The model was trained on a dataset of over 1700 images from different SME stores.

- Preprocessing: The images were resized to the corresponding pixels expected by the model and normalized to have pixel values between 0 and 1. This process uses the ImageDataGenerator from the TensorFlow library.
- Training Parameters: The model was trained using the Adam optimizer with an adaptive learning rate. The model was trained for over 200 epochs, but only the most optimum metrics state of the model during training was saved. These processes were conducted using the built-in callback API.
Takes an input shape of (450, 450, 3) and uses 4 convolutional, a max pooling layer, followed by flatten and dense layers.
The model achieved over 98% accuracy on training set, but dropped to 72% on the test set
Takes an input shape of (224, 224, 3) followed by and dense layers.
The model achieved over 95% accuracy on training set and 85% on the test set. This model is significantly better than the CNN model.
Takes an input shape of (299, 299, 3) followed by and dense layers.
The model achieved over 96% accuracy on training set and 86% on the test set, slightly better than the previous model above.
Takes an input shape of (224, 224, 3) followed by and dense layers.
The model achieved over 96% accuracy on training set, but dropped sharply to 82% on the test set.










