Image recognition and computer vision is one of the areas where deep learning has made some significant impacts. Networks with dozens of layers, sometimes more than a hundred, have proven to be very effective in image classification tasks, to the point where they outperform humans.
Training such networks, though, is very involved, both in terms of processing power and the amount of training images needed. Fortunately, we often don’t have to start from scratch, but can reuse an existing network.
In this chapter we’ll walk through how to load one of the five pretrained networks that are supported by Keras, go into the preprocessing that is needed before we can feed an image into a network, and finally show how we can run the network in inference mode, where we ask it what it thinks the image contains.
We’ll then look into what is known as transfer learning—taking a pretrained network and partly retraining it on new data for a new task. We’ll first acquire a set of images from Flickr containing cats and dogs. We’ll then teach our network to tell them apart. This will be followed by an application where we use this network to improve upon Flickr’s search results. Finally, we’ll download a set of images that contain pictures of 37 different types of pets and train a network that beats the average human at labeling them.
The following notebooks contain the code referred to in this chapter:
09.1 Reusing a pretrained image recognition ...