Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 Lista de capas de deep learning.

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);

Figure Training Progress (03-Apr-2023 08:04:26) contains 2 axes objects and another object of type uigridlayout. Axes object 1 with xlabel Iteration, ylabel Loss contains 11 objects of type patch, text, line. Axes object 2 with xlabel Iteration, ylabel Accuracy (%) contains 11 objects of type patch, text, line.

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.9892

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 Empezar a usar deep learning rápidamente con la transferencia del aprendizaje y Entrenar clasificadores utilizando características extraídas de redes preentrenadas. Para obtener más información sobre las redes preentrenadas, consulte Redes neuronales profundas preentrenadas.

Consulte también

|

Temas relacionados