In this project, we will learn how to build a pipeline that can be used within a web or mobile app to process real-world, user-supplied images. Given an image of a dog, our algorithm will identify an estimate of the canine’s breed. If supplied an image of a human, the code will identify the resembling dog breed.
Along with exploring state-of-the-art CNN models for classification and localization, we will make important design decisions about the user experience for our app. Our goal is to understand the challenges involved in piecing together a series of models designed to perform various tasks in a data processing pipeline. Each model has its strengths and weaknesses, and engineering a real-world application often involves solving many problems without a perfect answer. Our imperfect solution will nonetheless create a fun user experience!
-
Clone the repository and navigate to the downloaded folder.
git clone https://github.com/UsmanIjaz/Dog_Breed_Classification_PyTorch cd Dog_Breed_Classification_PyTorch
-
Download the dog dataset. Unzip the folder and place it in the repo, at location
path/to/dog-project/dogImages
. ThedogImages/
folder should contain 133 folders, each corresponding to a different dog breed. -
Download the human dataset. Unzip the folder and place it in the repo, at location
path/to/dog-project/lfw
. If you are using a Windows machine, you are encouraged to use 7zip to extract the folder. -
PyTorch version used for this project is 0.4.0.
-
Open a terminal window and navigate to the project folder. Open the notebook and follow the instructions.
jupyter notebook dog_app.ipynb
NOTE: In the notebook, we trained CNNs in PyTorch. If CNN is taking too long to train, feel free to pursue one of the options under the section Accelerating the Training Process below.
If your code is taking too long to run, you will need to either reduce the complexity of your chosen CNN architecture or switch to running your code on a GPU. If you'd like to use a GPU, you can use Amazon Web Services to launch an EC2 GPU instance.
I have worked on this project to design a model in PyTorch to classify the dog breed. Feel free to use it for further analysis.
Doing this project, I benfitted from stackoverflow. Here, I would like to thank Udacity for providing the datasets.