Deep Learning for Image Classification
Avi’s pick of the week is the Deep Learning Toolbox Model for AlexNet Network, by The Deep Learning Toolbox Team. AlexNet is a pre-trained 1000-class image classifier using deep learning more specifically a convolutional neural networks (CNN). The support package provides easy access to this powerful model to help quickly get started with deep learning in MATLAB.
Access the pre-trained model in MATLAB
Once you have downloaded and installed the support package, you can load the pre-trained model into MATLAB.
net = alexnet
net = SeriesNetwork with properties: Layers: [25×1 nnet.cnn.layer.Layer]
View network architecture
Now let’s take a quick look at the structure of the deep neural network layers.
ans = 25x1 Layer array with layers: 1 'data' Image Input 227x227x3 images with 'zerocenter' normalization 2 'conv1' Convolution 96 11x11x3 convolutions with stride [4 4] and padding [0 0] 3 'relu1' ReLU ReLU 4 'norm1' Cross Channel Normalization cross channel normalization with 5 channels per element 5 'pool1' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0] 6 'conv2' Convolution 256 5x5x48 convolutions with stride [1 1] and padding [2 2] 7 'relu2' ReLU ReLU 8 'norm2' Cross Channel Normalization cross channel normalization with 5 channels per element 9 'pool2' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0] 10 'conv3' Convolution 384 3x3x256 convolutions with stride [1 1] and padding [1 1] 11 'relu3' ReLU ReLU 12 'conv4' Convolution 384 3x3x192 convolutions with stride [1 1] and padding [1 1] 13 'relu4' ReLU ReLU 14 'conv5' Convolution 256 3x3x192 convolutions with stride [1 1] and padding [1 1] 15 'relu5' ReLU ReLU 16 'pool5' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0] 17 'fc6' Fully Connected 4096 fully connected layer 18 'relu6' ReLU ReLU 19 'drop6' Dropout 50% dropout 20 'fc7' Fully Connected 4096 fully connected layer 21 'relu7' ReLU ReLU 22 'drop7' Dropout 50% dropout 23 'fc8' Fully Connected 1000 fully connected layer 24 'prob' Softmax softmax 25 'output' Classification Output cross-entropy with 'tench', 'goldfish', and 998 other classes
Now lets try and classify an image using deep learning. We need to resize the input images to match the input of the network that is 227 x 227 pixels before classifying the image.
I = imread('Keyboard.jpg'); % Adjust size of the image sz = net.Layers(1).InputSize I = imresize(I,[sz(1) sz(2)]); % Classify the image using AlexNet label = classify(net, I) % Show the image and the classification results figure imshow(I) text(10,20,char(label),'Color','white')
sz = 227 227 3 label = typewriter keyboard
More Information on Deep Learning
To learn more about deep learning and how to re-train the AlexNet model for a different task, take a look at the example in this webinar that uses AlexNet to distinguish between different kinds of tools.
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.