3.12 - Práctica 1: clasificación de imágenes usando la red LeNet

Lección 12 de la sección “Redes Convolucionales” del curso Fundamentos de Deep Learning con Python.

Introducción

En la lección anterior vimos las principales características de la red LeNet y su importancia como precursora de las Redes Convolucionales usadas actualmente.

En esta lección veremos cómo implementar esta arquitectura, con ayuda de Python y Keras, para resolver un problema de clasificación de imágenes.

Contenido exclusivo suscriptores

Suscríbete y accede al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

El problema a resolver

En esta práctica el problema a resolver será el mismo que dio origen a LeNet: implementaremos y entrenaremos una Red Convolucional capaz de clasificar automáticamente un dígito escrito a mano presente en una imagen digital.

El set de datos

Usaremos MNIST (Modified National Institute of Standards and Technology), un set de datos que contiene dígitos escritos a mano (60.000 de entrenamiento y 10.000 de prueba).

Cada imagen corresponde a una de 10 posibles categorías (los números del 0 al 9) y está almacenada en escala de grises, con un tamaño de 28x28 pixeles.

Usaremos la librería Keras, y en particular el módulo mnist para leer los sets de entrenamiento y prueba.

Normalización y reajuste del tamaño de los sets

Antes de introducir los datos al modelo que implementaremos en Keras, debemos realizar tres procedimientos:

Creación y entrenamiento del modelo

Usaremos el mismo enfoque secuencial visto en las prácticas anteriores para la implementación del modelo.

Sin embargo, en este caso por tratarse de una Red Convolucional, haremos uso adicionalmente de los módulos Conv2D, MaxPooling2D y Flatten de Keras para realizar la implementación.

De nuevo, al igual que en prácticas anteriores, realizaremos el entrenamiento usando el algoritmo del Gradiente Descendente con un total de 20 iteraciones y un tamaño de lote de 128.

Resultados del entrenamiento

Vemos que la red LeNet que acabamos de entrenar tiene un excelente desempeño con ambos sets de datos. En el caso del entrenamiento alcanza una exactitud del 99.88%, mientras que con el set de prueba se tiene un valor similar: 98.99%.

Con esto concluimos que el modelo logra clasificar con un altísimo grado de exactitud nuestro set de datos (menos de 1 error por cada 100 imágenes) y que además logra generalizar correctamente (pues el desempeño con el set de prueba es muy similar al obtenido con el set de entrenamiento).

Contenido exclusivo suscriptores

Recuerda suscribirte para acceder al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

Muy bien, ya logramos implementar y poner a prueba la red LeNet con ayuda de la librería Keras, y hemos confirmado que efectivamente las Redes Convolucionales resultan siendo una excelente alternativa para tareas de clasificación como la analizada en esta práctica.

En la próxima lección veremos dos arquitecturas, derivadas de LeNet y desarrolladas en los últimos años, y que han logrado alcanzar un desempeño comparable con el del ser humano en estas tareas de clasificación de imágenes. Hablaremos entonces en detalle de AlexNet y VGGNet.

Ver todas las lecciones de este curso