From the series: Deep Learning with MATLAB
Joe Hicklin, MathWorks
Watch a quick demonstration of how to use MATLAB®, a simple webcam, and a deep neural network to identify objects in your surroundings. This demo uses AlexNet, a pretrained deep convolutional neural network (CNN or ConvNet) that has been trained on over a million images.
The example has two parts: setting up the camera and performing object recognition. The first part shows how to use the
webcam command to acquire images from the camera. Using the
drawnow command, MATLAB is able to continuously update and display images taken by the camera.
The second part illustrates how to download a pretrained deep neural network called AlexNet and use MATLAB to continuously process the camera images. AlexNet takes the image as input and provides a label for the object in the image. You can experiment with objects in your surroundings to see how accurate AlexNet is.
Today you can do this very easily with MATLAB, but even just a few years ago it would have been considered science fiction.
Hi. My name is Joe Hicklin. I'm a senior developer at the MathWorks. I've been experimenting with deep learning with MATLAB and the Neural Net Toolbox. I've written a simple little program that does something pretty cool. I'd like to show that to you now.
What I've done is I've taken a webcam and attached it to a neural net that recognizes images. Now I can point the webcam at various objects and it recognizes it. A corkscrew, or maybe a screwdriver, or perhaps a revolver, a harmonica, a teapot, a shovel, that sort of thing. It's not perfect, but it does a pretty good job.
So let's look at the code that does this. This is the whole program, right? It's just 11 lines. We're going to go through it. But we're going to do it in three separate stages.
We're going to clear the workspace. We're going to ask the camera to connect to the webcam, have the camera and take a picture, and then finally, show that picture on the screen. So when we run this we should get a fresh picture going on here. And that's the picture we just took.
But that's a still image. We want this to be a continuous video. So we're going to add three more lines to put it in a loop.
We'll put a while loop around the code that's taking the picture. And we'll add a drawnow so MATLAB draws immediately. When I run this, we'll get the same thing. But now, it's a live video.
Finally, we need to add in the neural net. I'm using a network called AlexNet. AlexNet is a large deep convolutional neural net. They train this network on over a million images. And it can recognize about 1,000 different objects.
I've downloaded it. And now we're ready to use it. This line is going to ask the network to classify the picture we just took. So we'll pass each picture to the network and it will return a label of that picture.
Before we do that, we have to resize the picture to the size that AlexNet expects. It was trained on a particular size of image. Finally, I'm going to use that label in the title of my picture. And I've got to convert it to a string with this command right here.
So we're all set. Those are the lines. Let's run it again. And we're running again.
I can recognize a keyboard, or maybe a space bar. Recognize my mouse, or maybe it's a spatula. And there we go.
I hope the simplicity of this program encourages you to try out deep learning. The next natural step would be to try transfer learning. Transfer learning is where you take a network like AlexNet and retrain the last few layers on your own particular images. That will result in a network even better than AlexNet for your particular images. If you are interested in learning more about how to apply deep learning to your problems, check out the links in the description.
Recorded: 6 Dec 2016