Skip to content

My solution for the second project in the Udacity Deep-Learning Nanodegree. A convolutional neural network is trained for the image classification task of recognizing dog breeds.

Notifications You must be signed in to change notification settings

c-schrade/Udacity-Dog-Breed-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Udacity-Dog-Breed-Project

The Jupyter-Notebook-File dog_app.ipynb includes my solution to the Dog-Breed-Classifier-Project in the Deeplearning-Nanodegree.

General Description

An algorithm with the following functionality is implemented: Given an arbitrary image it first decides if a human or a dog or neither of the two is shown. If the image shows a dog it then detects the breed of the shown dog. If it shows a person the algorithm outputs the most resembling dog breed.

The code is written in python and the pytorch library is used for the implementation of convolutional neural networks.

First Part of the Algorithm

As explained above, the algorithm first tries to decide if a given image shows a human, a dog or neither of the two. This is done via the following strategies:

  • How does the algorithm decide if a human being is shown?: OpenCV's implementation of Haar feature-based cascade classifiers is used to recognize faces.
  • How does the algorithm decide if a dog is shown?: A VGG-16 model which is already pre-trained on the ImageNet dataset is used to recognize dogs.

Second Part of the Algorithm

In the second part the algorithm estimates the dog breed of a shown dog (respectively the most resembling dog breed for a shown person). This is done via deep convolutional neural networks. Two different networks get tested:

  1. A newly trained newly architectured deep convolutional neural network.
  2. A pre-trained VGG-16 model (again pre-trained on the ImageNet dataset).

Architecture and Hyperparameters for Model 1.

The 1. model consists of three convolutional layers (each followed by a maxpooling layer) and three fully connected layers at the end. For backpropagation a stochastic gradient descent optimizer is used.

  • Learning rate: 0.01
  • Epochs: 30

About

My solution for the second project in the Udacity Deep-Learning Nanodegree. A convolutional neural network is trained for the image classification task of recognizing dog breeds.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published