Crear una red de clasificación de imágenes sencilla
Este ejemplo muestra cómo crear y entrenar una red neuronal convolucional sencilla para la clasificación mediante deep learning. Las redes neuronales convolucionales son herramientas fundamentales en deep learning y resultan especialmente adecuadas para reconocer imágenes.
Este ejemplo muestra cómo hacer lo siguiente:
Cargar los datos de imagen.
Definir la arquitectura de red.
Especificar las opciones de entrenamiento.
Entrenar la red.
Predecir las etiquetas de los datos nuevos y calcular la precisión de la clasificación.
Para ver un ejemplo de cómo crear y entrenar una red de clasificación de imágenes sencilla de forma interactiva, consulte Crear una red de clasificación de imágenes sencilla utilizando Deep Network Designer.
Cargar datos
Cargue los datos de dígitos de muestra como un almacén de datos de imágenes. La función imageDatastore
etiqueta automáticamente las imágenes en función de los nombres de carpeta.
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
Divida los datos en conjuntos de datos de entrenamiento y de validación, de forma que cada categoría del conjunto de entrenamiento contenga 750 imágenes, y el conjunto de validación contenga el resto de las imágenes de cada etiqueta. splitEachLabel
divide el almacén de datos de imágenes en dos nuevos almacenes de datos para el entrenamiento y la validación.
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomized');
Definir la arquitectura de red
Defina la arquitectura de la red neuronal convolucional. Especifique el tamaño de las imágenes en la capa de entrada de la red y el número de clases en la capa totalmente conectada antes de la capa de clasificación. Cada imagen contiene 28 por 28 por 1 píxeles, y hay 10 clases.
inputSize = [28 28 1]; numClasses = 10; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
Para obtener más información sobre las capas de deep learning, consulte List of Deep Learning Layers.
Entrenar la red
Especifique las opciones de entrenamiento y entrene la red.
De forma predeterminada, trainNetwork
usa una GPU en caso de que esté disponible. De lo contrario, usa una CPU. Entrenar en una GPU requiere Parallel Computing Toolbox™ y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). También puede especificar el entorno de ejecución con el argumento de par nombre-valor 'ExecutionEnvironment'
de trainingOptions
.
options = trainingOptions('sgdm', ... 'MaxEpochs',4, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);
Para obtener más información sobre las opciones de entrenamiento, consulte Set Up Parameters and Train Convolutional Neural Network.
Probar la red
Clasifique los datos de validación y calcule la precisión de la clasificación.
YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = mean(YPred == YValidation)
accuracy = 0.9888
En los siguientes pasos de deep learning, podrá probar a usar la red preentrenada para otras tareas. Resuelva nuevos problemas de clasificación en los datos de imagen mediante la transferencia del aprendizaje o la extracción de características. Para ver ejemplos, consulte Start Deep Learning Faster Using Transfer Learning y Train Classifiers Using Features Extracted from Pretrained Networks. Para obtener más información sobre las redes preentrenadas, consulte Redes neuronales profundas preentrenadas.
Consulte también
trainNetwork
| trainingOptions
Temas relacionados
- Start Deep Learning Faster Using Transfer Learning
- Crear una red de clasificación de imágenes sencilla utilizando Deep Network Designer
- Pruebe deep learning en 10 líneas de código de MATLAB
- Clasificar una imagen con una red preentrenada
- Introducción a la transferencia del aprendizaje
- Transferencia del aprendizaje con Deep Network Designer
- Create Simple Sequence Classification Network Using Deep Network Designer