Project Overview
Udacity's Convolutional Neural Networks (CNN) project in the AI Nanodegree! It explains how to build a pipeline that can be used within a web or mobile app to process real-world, user-supplied images. An algorithm is implemented in which, given an image of a dog, it identifies an estimate of the canine’s breed. If supplied an image of a human, the code will identify the resembling dog breed.
It explores state-of-the-art CNN models for classification and 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.
Project Instructions
An output of the Jupyter Notebook is provided in file dog_app.html
Running Jupyter Notebook Instructions
- Clone the repository and navigate to the downloaded folder.
git clone https://github.com/roj4s/udacity_dog_project.git
cd dog-project
-
Download the dog dataset. Unzip the folder and place it in the repo, at location
path/to/dog-project/dogImages
. -
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. -
Download the VGG-16 bottleneck features for the dog dataset. Place it in the repo, at location
path/to/dog-project/bottleneck_features
. -
Build docker image using the Dockerfile provided. Or pull from docker hub as
docker pull roj4s/udacity_dog_project
-
Run the built image with
docker run [image_name] --gpus --all -p 8080:8080 -v [path-to-dogs-dataset]:/opt/dog_project/dogImages -v [path-to-humans-dataset]:/opt/dog_project/lfw -v [path-to-project]/.ipynb_checkpoints:/opt/dog_project/.ipynb_checkpoints -v [path-to-project]/saved_models:/opt/dog_project/saved_models -v [path-to-project]/bottleneck_features:/opt/dog_project/bottleneck_features [image-name]
-
Open Jupyter notebook in browser at localhost:8080 and revert to last checkpoint.