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 Introducción a la clasificación de imágenes.
Cargar datos
Descomprima los datos de dígitos de muestra y cree 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.
unzip("DigitsData.zip") imds = imageDatastore("DigitsData", ... 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");
Visualice los nombres de las clases.
classNames = categories(imdsTrain.Labels)
classNames = 10x1 cell
{'0'}
{'1'}
{'2'}
{'3'}
{'4'}
{'5'}
{'6'}
{'7'}
{'8'}
{'9'}
Definir la arquitectura de red
Defina la arquitectura de la red neuronal convolucional. Especifique el tamaño de las imágenes de la capa de entrada de la red y el número de clases de la capa totalmente conectada. 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];
Para obtener más información sobre las capas de deep learning, consulte Lista de capas de deep learning.
Especificar las opciones de entrenamiento
Especifique las opciones de entrenamiento. Para escoger entre las opciones se requiere un análisis empírico. Para explorar diferentes configuraciones de opciones de entrenamiento mediante la ejecución de experimentos, puede utilizar la app Experiment Manager.
options = trainingOptions("sgdm", ... MaxEpochs=4, ... ValidationData=imdsValidation, ... ValidationFrequency=30, ... Plots="training-progress", ... Metrics="accuracy", ... Verbose=false);
Entrenar una red neuronal
Entrene la red neuronal con la función trainnet
. Para la clasificación, utilice la pérdida de entropía cruzada. De forma predeterminada, la función trainnet
usa una GPU en caso de que esté disponible. Para utilizar una GPU se requiere una licencia de Parallel Computing Toolbox™ y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). De lo contrario, la función usa la CPU. Para especificar el entorno de ejecución, utilice la opción de entrenamiento ExecutionEnvironment
.
net = trainnet(imdsTrain,layers,"crossentropy",options);
Probar una red neuronal
Para probar la red neuronal, clasifique los datos de validación y calcule la precisión de la clasificación.
Pruebe la red neuronal con la función testnet
. Evalúe la precisión de la clasificación de una sola etiqueta. La precisión es el porcentaje de predicciones correctas. De forma predeterminada, la función testnet
usa una GPU en caso de que esté disponible. Para seleccionar el entorno de ejecución manualmente, utilice el argumento ExecutionEnvironment
de la función testnet
.
accuracy = testnet(net,imdsValidation,"accuracy")
accuracy = 98.9600
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
trainnet
| trainingOptions
| dlnetwork
Temas
- Empezar a usar deep learning rápidamente con la transferencia del aprendizaje
- Introducción a la clasificación de imágenes
- 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
- Preparar una red para la transferencia del aprendizaje mediante Deep Network Designer
- Introducción a la predicción de series de tiempo