Main Content

Introducción a Deep Network Designer

Este ejemplo muestra cómo usar Deep Network Designer para adaptar una red GoogLeNet preentrenada para clasificar un nuevo conjunto de imágenes. Este proceso se denomina transferencia del aprendizaje y suele ser mucho más rápido y fácil que entrenar una nueva red, ya que permite aplicar las características aprendidas a una nueva tarea con menos imágenes de entrenamiento. Para preparar una red para la transferencia del aprendizaje de forma interactiva, utilice Deep Network Designer.

Extraer datos para el entrenamiento

Descomprima los datos en el área de trabajo.

unzip('MerchData.zip');

Seleccionar una red preentrenada

Abra Deep Network Designer.

deepNetworkDesigner

Cargue una red GoogLeNet preentrenada seleccionándola en la página de inicio de Deep Network Designer. Si necesita descargar la red, haga clic en Install para abrir Add-On Explorer.

Deep Network Designer muestra una vista alejada de la totalidad de la red. Explore la gráfica de red. Para ampliarla con el ratón, utilice Ctrl + la rueda de desplazamiento.

Cargar un conjunto de datos

Para cargar los datos en Deep Network Designer, vaya a la pestaña Data y haga clic en Import Data > Import Image Data. Se abrirá el cuadro de diálogo Import Image Data.

En la lista Data source, seleccione Folder. Haga clic en Browse y seleccione la carpeta MerchData que ha extraído.

El cuadro de diálogo también permite dividir los datos de validación desde la app. Divida los datos y asigne el 70% al entrenamiento y el 30% a la validación.

Especifique las operaciones de aumento que desea realizar en las imágenes de entrenamiento. Para este ejemplo, aplique una reflexión aleatoria en el eje x, una rotación aleatoria a partir del intervalo [-90,90] grados, y un reescalado aleatorio a partir del intervalo [1,2].

Haga clic en Import para importar los datos en Deep Network Designer.

Deep Network Designer permite realizar una inspección visual de la distribución de los datos de entrenamiento y los datos de validación en la pestaña Data. Puede ver que, en el caso de este ejemplo, hay cinco clases en el conjunto de datos. También puede visualizar observaciones aleatorias de cada clase.

Deep Network Designer cambia el tamaño de las imágenes durante el entrenamiento de forma que coincidan con el tamaño de entrada de la red. Para ver el tamaño de entrada de la red, vaya a la pestaña Designer y haga clic en imageInputLayer. El tamaño de entrada de la red es de 224 por 224.

Editar una red para la transferencia del aprendizaje

Para volver a entrenar una red preentrenada para clasificar nuevas imágenes, sustituya la última capa de aprendizaje y la última capa de clasificación por otras adaptadas al nuevo conjunto de datos. En GoogLeNet, estas capas tienen el nombre 'loss3-classifier' y 'output', respectivamente.

Vaya a la pestaña Designer y arrastre una nueva capa fullyConnectedLayer al lienzo desde la biblioteca Layer Library. Establezca OutputSize en el número de clases del nuevo conjunto de datos (5 en este ejemplo).

Edite las tasas de aprendizaje para aprender más rápido en las capas nuevas que en las capas transferidas. Establezca WeightLearnRateFactor y BiasLearnRateFactor en 10. Elimine la última capa totalmente conectada y conecte la capa nueva en su lugar.

Sustituya la capa de salida. Desplácese hasta el final de la biblioteca Layer Library y arrastre una nueva capa classificationLayer al lienzo. Elimine la capa output original y conecte la capa nueva en su lugar.

Comprobar la red

Compruebe la red haciendo clic en Analyze. Si el analizador Deep Learning Network Analyzer no detecta ningún error, la red está preparada para el entrenamiento.

Entrenar la red

Para entrenar la red con la configuración predeterminada, vaya a la pestaña Training y haga clic en Train.

Si desea obtener un mayor grado de control sobre el entrenamiento, haga clic en Training Options y seleccione la configuración de entrenamiento. Las opciones de entrenamiento predeterminadas resultan más adecuadas para los conjuntos de datos de gran tamaño. Si dispone de un conjunto de datos más reducido, utilice valores más pequeños para el tamaño del minilote y la frecuencia de validación. Para obtener más información sobre cómo seleccionar las opciones de entrenamiento, consulte trainingOptions.

En este ejemplo, establezca InitialLearnRate en 0.0001, ValidationFrequency en 5 y MaxEpochs en 8. Dado que hay 55 observaciones, establezca MiniBatchSize en 11 para dividir los datos de entrenamiento de forma uniforme y asegúrese de que utiliza la totalidad del conjunto de entrenamiento durante cada uno de los números de época.

Para entrenar la red con las opciones de entrenamiento especificadas, haga clic en Close y luego en Train.

Deep Network Designer le permite visualizar y monitorizar el progreso del entrenamiento. Después, puede editar las opciones de entrenamiento y volver a entrenar la red si lo necesita.

Exportar los resultados del entrenamiento

Para exportar los resultados del entrenamiento, vaya a la pestaña Training y seleccione Export > Export Trained Network and Results. Deep Network Designer exporta la red entrenada como la variable trainedNetwork_1 y la información del entrenamiento como la variable trainInfoStruct_1.

También puede generar código de MATLAB, que recrea la red y las opciones de entrenamiento utilizadas. Vaya a la pestaña Training y seleccione Export > Generate Code for Training.

Probar una red preentrenada

Seleccione una nueva imagen para clasificarla con la red entrenada.

I = imread("MerchDataTest.jpg");

Cambie el tamaño de la imagen de prueba de forma que coincida con el tamaño de entrada de la red.

I = imresize(I, [224 224]);

Clasifique la imagen de prueba con la red entrenada.

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

Para obtener más información sobre este tema, incluidas otras redes preentrenadas, consulte Deep Network Designer.

Consulte también

Temas relacionados