Create Simple Image Classification Network
This example shows how to create and train a simple convolutional neural network for deep learning classification. Convolutional neural networks are essential tools for deep learning and are especially suited for image recognition.
The example demonstrates how to:
Load image data.
Define the network architecture.
Specify training options.
Train the network.
Predict the labels of new data and calculate the classification accuracy.
For an example showing how to interactively create and train a simple image classification network, see Create Simple Image Classification Network Using Deep Network Designer.
Load Data
Unzip the digit sample data and create an image datastore. The imageDatastore
function automatically labels the images based on folder names.
unzip("DigitsData.zip") imds = imageDatastore("DigitsData", ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
Divide the data into training and validation data sets, so that each category in the training set contains 750 images, and the validation set contains the remaining images from each label. splitEachLabel
splits the image datastore into two new datastores for training and validation.
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomized');
Define Network Architecture
Define the convolutional neural network architecture. Specify the size of the images in the input layer of the network and the number of classes in the fully connected layer before the classification layer. Each image is 28-by-28-by-1 pixels and there are 10 classes.
inputSize = [28 28 1]; numClasses = 10; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
For more information about deep learning layers, see List of Deep Learning Layers.
Train Network
Specify the training options and train the network.
By default, trainNetwork
uses a GPU if one is available, otherwise, it uses a CPU. Training on a GPU requires Parallel Computing Toolbox™ and a supported GPU device. For information on supported devices, see GPU Computing Requirements (Parallel Computing Toolbox). You can also specify the execution environment by using the 'ExecutionEnvironment'
name-value pair argument of trainingOptions
.
options = trainingOptions('sgdm', ... 'MaxEpochs',4, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);
For more information about training options, see Set Up Parameters and Train Convolutional Neural Network.
Test Network
Classify the validation data and calculate the classification accuracy.
YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = mean(YPred == YValidation)
accuracy = 0.9892
For next steps in deep learning, you can try using pretrained network for other tasks. Solve new classification problems on your image data with transfer learning or feature extraction. For examples, see Start Deep Learning Faster Using Transfer Learning and Train Classifiers Using Features Extracted from Pretrained Networks. To learn more about pretrained networks, see Pretrained Deep Neural Networks.
See Also
trainNetwork
| trainingOptions
Related Topics
- Start Deep Learning Faster Using Transfer Learning
- Create Simple Image Classification Network Using Deep Network Designer
- Try Deep Learning in 10 Lines of MATLAB Code
- Classify Image Using Pretrained Network
- Get Started with Transfer Learning
- Transfer Learning with Deep Network Designer
- Create Simple Sequence Classification Network Using Deep Network Designer