Who's that doggy in the window?
Dogs are incredible. But have you ever been sitting at a cafe, seen a dog and not known what breed it is? I have. And then someone says, "it's an English Terrier" and you think, how did they know that?
In this project we have used machine learning to help us identify different breeds of dogs.
To do this, we have used data from the Kaggle dog breed identification competition. It consists of a collection of 10,000+ labelled images of 120 different dog breeds.
This kind of problem is called multi-class image classification. It's multi-class because we're trying to classify mutliple different breeds of dog. If we were only trying to classify dogs versus cats, it would be called binary classification (one thing versus another).
Multi-class image classification is an important problem because it's the same kind of technology Tesla uses in their self-driving cars or Airbnb uses in atuomatically adding information to their listings.
Since the most important step in a deep learng problem is getting the data ready (turning it into numbers), that's what we're going to start with.
We're going to go through the following TensorFlow/Deep Learning workflow:
- Get data ready (download from Kaggle, store, import).
- Prepare the data (preprocessing, the 3 sets, X & y).
- Choose and fit/train a model (TensorFlow Hub,
tf.keras.applications
, TensorBoard, EarlyStopping). - Evaluating a model (making predictions, comparing them with the ground truth labels).
- Improve the model through experimentation (start with 1000 images, make sure it works, increase the number of images).
- Save, sharing and reloading your model (once you're happy with the results).
For preprocessing our data, we're going to use TensorFlow 2.x. The whole premise here is to get our data into Tensors (arrays of numbers which can be run on GPUs) and then allow a machine learning model to find patterns between them.
For our machine learning model, we're going to be using a pretrained deep learning model from TensorFlow Hub.
The process of using a pretrained model and adapting it to your own problem is called transfer learning. We do this because rather than train our own model from scratch (could be timely and expensive), we leverage the patterns of another model which has been trained to classify images.