The motivation behind this project is to build a classification algorithm that predicts the breed of a given dog.The classification algorithm accepts a file path to an image and first determines whether the image contains a human, dog, or neither. Then,
- if a dog is detected in the image, return the predicted breed.
- if a human is detected in the image, return the resembling dog breed.
- if neither is detected in the image, provide output that indicates an error.
This project is also featured on the Medium website @ link
The algorithm uses a pre-trained InceptionV3 CNN to predict the image of a given dog within a reasonable level of accuracy.The model achieves an accuracy of around 78% in classifying 133 dog breeds. When given an image path the algorithm returns results in this format:
Below is an architecture of the custom CNN that was developed during the project.
- The main application is contained in the dog_app.ipynb jupyter notebook. All the functions and code, as well as the rationale behind decisions taken is contained in this notebook.
- Test images are in the images folder in the root directory.
- The main data set was provided by Udacity and can be accessed here:
- Numpy
- Sklearn
- Sqlalchemy
- Pickle
- keras
- cv2
- glob
- seaborn
- os
- Matplotlib
- Pillow Jupyter notebook and python 3.6 are needed to run the notebooks and python scripts.
- Download the required data sets and if required modify the directory paths.
- Access to a GPU is essential in training the models.
