Guess a dog's breed based on an image.
For Udacity's Machine Learning Engineer and Deep Learning Nanodegrees.
Topic: Deep Learning / Convolutional Networks.
-
I built a pipeline that can be used within a web or mobile app to process real-world, user-supplied images.
-
I first architected my own convolutional neural network from scratch:
-
I then explored several state-of-the-art CNN models designed for image classification, ultimately using transfer learning to build my own classifier for dog images on top of a pre-trained Inception v3 bottleneck.
-
Given an image of a dog, my algorithm identifies an estimate of its breed:
-
If supplied an image of a human, my code infers the most nearly resembling dog breed:
-
Using OpenCV's implementation of Haar feature-based cascade classifiers to detect human faces in images.
-
Convolutional Neural Network architectures (choosing number of filters, kernel size, stride, and padding).
-
Activation functions like relu and softmax.
-
Including maxpool layers to decrease dimensionality as network depth increases, and adding dropout layers, to minimize overfitting.
-
Flattening the network prior to including fully-connected layers.
-
Categorical crossentropy loss function.
-
Transfer learning.
-
Freezing the bottleneck features of a pre-trained InceptionV3 model to serve as an input layer of my final CNN's fully connected layer:
-
Keras
-
TensorFlow