Logotipo de Zephyrnet

Dominar LeNet: conocimientos arquitectónicos e implementación práctica

Fecha:

Introducción

LeNet-5, una red neuronal convolucional (CNN) pionera desarrollada por Yann LeCun y su equipo en la década de 1990, supuso un punto de inflexión en la visión por computadora y el aprendizaje profundo. Esta arquitectura innovadora fue diseñada explícitamente para revolucionar el reconocimiento de caracteres escritos a mano e impresos a máquina. A diferencia de los métodos tradicionales, LeNet-5 introdujo un enfoque novedoso que eliminó la necesidad de ingeniería de características manual, procesando directamente imágenes de píxeles a través de capas convolucionales, submuestreo y capas completamente conectadas. Su éxito se extendió más allá del reconocimiento de caracteres, sirviendo como piedra angular de los modelos modernos de aprendizaje profundo e influyendo en arquitecturas posteriores en visión por computadora, reconocimiento de objetos y clasificación de imágenes.

La aplicación temprana de algoritmos de retropropagación por parte de Yann LeCun a problemas prácticos sentó las bases para LeNet-5, diseñado para leer caracteres escritos a mano y sobresaliendo en la identificación de números de códigos postales proporcionados por el Servicio Postal de EE. UU. Sus sucesivas versiones y aplicaciones, como la capacidad de leer millones de cheques diariamente, despertaron un gran interés entre los investigadores, moldeando el panorama de las redes neuronales e inspirando la evolución del aprendizaje profundo.

LeNet-5

El éxito de LeNet-5 y aplicaciones posteriores, como sistemas capaces de leer millones de cheques por día, despertó un gran interés entre los investigadores por las redes neuronales. Si bien las arquitecturas de redes neuronales de mayor rendimiento actuales han evolucionado más allá de LeNet-5, su diseño innovador y sus logros sentaron las bases para numerosos modelos posteriores, dando forma e inspirando significativamente el aprendizaje profundo. LeNet-5 sigue siendo un testimonio de la innovación y un símbolo duradero de la evolución del aprendizaje automático y el reconocimiento de imágenes.

OBJETIVOS DE APRENDIZAJE

  • Explore la importancia histórica y el impacto de LeNet-5 en la evolución del aprendizaje profundo y la visión por computadora.
  • Compare LeNet-5 con arquitecturas de redes neuronales contemporáneas y examine su influencia fundamental en los modelos actuales de aprendizaje profundo.
  • Comprenda la arquitectura de LeNet-5, incluidas sus capas convolucional, de submuestreo y completamente conectada.
  • Analice aplicaciones prácticas y estudios de casos que muestren la eficacia de LeNet-5 en tareas de reconocimiento de imágenes.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Tabla de contenidos.

Entendiendo LeNet

LeNet, también conocida como LeNet-5, es una arquitectura pionera de red neuronal convolucional (CNN) desarrollada por Yann LeCun y su equipo en la década de 1990. Fue diseñado explícitamente para tareas de reconocimiento de caracteres escritos a mano e impresos a máquina. La importancia de LeNet-5 radica en su demostración exitosa del aprendizaje de características jerárquicas y su eficacia en el reconocimiento de caracteres. Su impacto se extiende más allá de su propósito original, influyendo en el desarrollo de modelos modernos de aprendizaje profundo y sirviendo como arquitectura fundamental para avances posteriores en visión por computadora, reconocimiento de imágenes y diversas aplicaciones de aprendizaje automático.

Entendiendo LeNet

La arquitectura de LeNet

LeNet-5 es una red neuronal convolucional (CNN) con una arquitectura específica empleada en tareas de reconocimiento de caracteres. Consta de varias capas, excluida la capa de entrada, que contienen parámetros entrenables. En particular, procesa imágenes de 32×32 píxeles, más significativas que los caracteres de su base de datos, centrándose en el centrado de características potencialmente distintivas. Los valores de los píxeles de entrada están normalizados para una mejor eficiencia de aprendizaje.

Arquitectura de LeNet

La arquitectura de LeNet combina capas convolucionales, de submuestreo y completamente conectadas con patrones de conectividad específicos. Utiliza normalización para píxeles de entrada y una serie de capas para extraer características distintivas de los datos para un aprendizaje eficiente. Además, implementa estrategias únicas para evitar la saturación de las funciones de activación y utiliza funciones de pérdida específicas para un entrenamiento eficiente.

"
"

Estrategias únicas para prevenir la saturación

  • Capa de entrada: LeNet procesa imágenes de 32×32 píxeles, más significativas que los caracteres de la base de datos, con el objetivo de capturar posibles características distintivas en el centro de la imagen.
  • Capas convolucionales y de submuestreo: Capas convolucionales extrae principalmente características de los datos de entrada utilizando filtros o núcleos que se pueden aprender. Cada capa comprende múltiples filtros que se deslizan sobre los datos de entrada (imagen) y realizan multiplicaciones de elementos para producir mapas de características. La capa inicial contiene 6 filtros de tamaño 5×5, que se activan con la función tanh, lo que genera mapas de características de tamaño 28x28x6. Las capas posteriores utilizan 16 filtros del mismo tamaño, generando mapas de características de 10x10x16.
  • Capas de submuestreo, también conocidas como capas de agrupación, se centran en reducir la dimensionalidad de los mapas de características obtenidos de las capas convolucionales. La agrupación implica fusionar o reducir la resolución de los mapas de características, generalmente tomando el valor máximo (MaxPooling) o el valor promedio (AveragePooling) en regiones definidas. Con tamaños de filtro de 2×2 y variaciones de zancada, estas capas dan como resultado tamaños de mapas de características de 14x14x6 y 5x5x16 sucesivamente.
  • Capas totalmente conectadas: La arquitectura incluye capas completamente conectadas etiquetadas como Fx, que procesan la clasificación final en función de las características extraídas. Una capa completamente conectada con 84 neuronas y una capa de salida final con 10 neuronas, empleando la función de activación tanh en la primera y Softmax en la segunda. La función Softmax asigna probabilidades a cada clase, y la probabilidad más alta determina la predicción.
  • Capa de salida: LeNet utiliza unidades de función de base radial para la clasificación, con distintas representaciones de caracteres para el reconocimiento y la corrección.
"

Flujo de trabajo paso a paso

[Input: 28x28x1]
    |
[Conv2D: 6 filters, 5x5, tanh]
    |
[Average Pooling: 2x2, stride 2]
    |
[Conv2D: 16 filters, 5x5, tanh]
    |
[Average Pooling: 2x2, stride 2]
    |
[Flatten]
    |
[Dense: 120, tanh]
    |
[Dense: 84, tanh]
    |
[Dense: 10, softmax (output)]

Capa convolucional 1:

  • Número de filtros: 6
  • Tamaño del grano: 5×5
  • Función de activación: Tanh
  • Forma de entrada: 28x28x1

Capa de agrupación promedio 1:

  • Tamaño de la piscina: 2×2
  • Zancadas: 2

Capa convolucional 2:

  • Número de filtros: 16
  • Tamaño del grano: 5×5
  • Función de activación: Tanh

Capa de agrupación promedio 2:

  • Tamaño de la piscina: 2×2
  • Zancadas: 2

Capas completamente conectadas:

  • Capa densa con 120 unidades y activación Tanh.
  • Capa gruesa con 84 unidades y activación Tanh.
  • Capa de salida con 10 unidades y activación Softmax para clasificación multiclase (conjunto de datos MNIST).
Capas totalmente conectadas | Lenet

Características clave de LeNet

  1. Arquitectura CNN: LeNet-5 fue una red neuronal convolucional pionera que presentaba una arquitectura estructurada con capas convolucionales y de agrupación.
  2. Reconocimiento de patrones en dígitos escritos a mano: Desarrollado inicialmente para el reconocimiento de dígitos escritos a mano, presenta una alta precisión en la identificación y clasificación de caracteres escritos a mano.
  3. Capas convolucionales y de agrupación: Introducción de capas convolucionales para extracción de características y capas de agrupación para reducción de resolución, lo que permite a la red aprender representaciones jerárquicas de forma progresiva.
  4. Activación de no linealidad: Se utilizaron funciones de activación de tangente hiperbólica (tanh), lo que proporciona a la red capacidades no lineales esenciales para capturar relaciones complejas dentro de los datos.
  5. Influencia en el aprendizaje profundo: El éxito de LeNet-5 sentó las bases para los modelos contemporáneos de aprendizaje profundo e influyó significativamente en el desarrollo de redes neuronales para el reconocimiento y clasificación de imágenes.

Implementación práctica de LeNet:

Importar biblioteca

Comience con el código para implementar LeNet-5 en TensorFlow usando la API de Keras. Es un buen comienzo para trabajar con el conjunto de datos MNIST.

import tensorflow as tf
from tensorflow import keras
from keras.datasets import mnist
from keras.layers import Dense, Flatten, Conv2D, AveragePooling2D
from keras.models import Sequential
from tensorflow.keras.utils import plot_model

Cargar conjunto de datos

Cargue el conjunto de datos MNIST para entrenar y probar imágenes. Esta función carga el conjunto de datos, que consta de imágenes de dígitos escritos a mano y sus respectivas etiquetas. Los datos se dividen en conjuntos de entrenamiento y prueba.

(X_train, y_train), (X_test,y_test) = mnist.load_data()

Salida:

"

Cambiar la forma de

La función de remodelación en este contexto consiste en ajustar la forma de las imágenes para que sean adecuadas para su procesamiento en una CNN. La forma (28, 28, 1) significa que las imágenes son de 28×28 píxeles y tienen un solo canal (imágenes en escala de grises). Esta transformación es necesaria porque la mayoría de las CNN esperan que las imágenes tengan una forma específica, a menudo representada como (ancho, alto, canales).

#perfoming reshape
X_train = X_train.reshape(X_train.shape[0],28,28,1)
X_test = X_test.reshape(X_test.shape[0],28,28,1)
# Check the shape of data 
X_train.shape

Normalización

El fragmento de código que proporcionó normaliza los valores de píxeles de la imagen en los conjuntos de datos de entrenamiento y prueba. Dividir cada valor de píxel entre 255 garantiza que los valores de píxel oscilen entre 0 y 1.

# Normalization ---> convert 0 to 1
X_train = X_train/255
X_test = X_test/255

Una codificación en caliente

Las clases del conjunto de datos MNIST se transforman en datos categóricos con 10 clases. Cada etiqueta se convierte en un vector donde cada elemento representa una clase, con 1 en el índice correspondiente a la clase y 0 en el resto.

# One hot encoding
y_train = keras.utils.to_categorical(y_train,10)
y_test = keras.utils.to_categorical(y_test,10)

Construcción del modelo

Este fragmento de código demuestra la construcción del modelo LeNet-5 utilizando la API Keras Sequential en TensorFlow. Define las capas y sus configuraciones y compila el modelo con un optimizador, una función de pérdida y métricas para su evaluación.

model = Sequential()
# first layer
model.add(Conv2D(6, kernel_size=(5,5), padding="valid", activation="tanh", input_shape =(28,28,1)))
model.add(AveragePooling2D(pool_size=(2,2),strides=2, padding='valid'))

#second layer
model.add(Conv2D(16, kernel_size=(5,5), padding="valid", activation="tanh"))
model.add(AveragePooling2D(pool_size=(2,2),strides=2, padding='valid'))

# flatten layer
model.add(Flatten())

# ANN
model.add(Dense(120, activation='tanh'))
model.add(Dense(84, activation='tanh'))
model.add(Dense(10, activation='softmax'))

model.summary()

Salida:

Lenet

Compilación del modelo

El "compilarEl método prepara el modelo para el entrenamiento definiendo su método de optimización, función de pérdida y las métricas a monitorear.

model.compile(loss= keras.metrics.categorical_crossentropy, optimizer =keras.optimizers.Adam(),
metrics= ['accuracy'])

Entrenamiento modelo: El "cómodo La función entrena el modelo utilizando los datos de entrenamiento proporcionados y lo valida utilizando los datos de prueba.

model.fit(X_train,y_train, batch_size=128,epochs=10 , verbose=1, validation_data=(X_test,y_test))

salida:

Salida | Lenet

Evaluación del modelo

El modelo "evaluar()" La función se utiliza para evaluar el rendimiento del modelo en un conjunto de datos de prueba. El resultado proporciona la pérdida de la prueba y la precisión de la prueba.

score = model.evaluate(X_test,y_test)

print('Test loss', score[0])
print('Test Accuracy', score[1])
evaluación de modelos | Lenet

Visualización:

# Create a bar chart to visualize the comparison
import matplotlib.pyplot as plt
predicted_labels = np.argmax(predictions, axis=1)

# Compare predicted labels with true labels
correct_predictions = np.equal(predicted_labels, np.argmax(y_test, axis=1))

plt.figure(figsize=(12, 6))
plt.bar(range(len(y_test)), correct_predictions, 
color=['green' if c else 'red' for c in correct_predictions])
plt.title('Comparison of Predicted vs. True Labels')
plt.xlabel('Sample Index')
plt.ylabel('Correct Prediction (Green: Correct, Red: Incorrect)')
plt.show()

Salida:

Salida | Lenet

Impacto y importancia de LeNet

La influencia de LeNet se extiende mucho más allá de su tarea original. Su éxito allanó el camino para una exploración más profunda de las redes neuronales convolucionales (CNN). Su diseño y rendimiento eficientes en tareas de reconocimiento de dígitos sientan las bases para avances en diversas aplicaciones de visión por computadora, incluida la clasificación de imágenes, la detección de objetos y el reconocimiento facial.

Impacto y significado de LeNet
  • Revolución en el reconocimiento de caracteres escritos a mano: El éxito de LeNet-5 en el reconocimiento de dígitos y caracteres escritos a mano condujo a una transformación en diversas aplicaciones prácticas, en particular en el reconocimiento de códigos postales y cheques. Su capacidad para reconocer caracteres con precisión contribuyó a la adopción generalizada de redes neuronales en estas aplicaciones.
  • Influencia en las arquitecturas futuras: Los principios de diseño arquitectónico de LeNet sentaron las bases para numerosos modelos CNN posteriores. Su uso innovador de convolución, submuestreo y capas completamente conectadas inspiró el desarrollo de arquitecturas de redes neuronales más complejas y sofisticadas para diversas tareas basadas en imágenes.
  • Promoción del aprendizaje profundo: El éxito de LeNet-5 demostró el potencial de las redes de aprendizaje profundo en el reconocimiento de imágenes, lo que inspiró más investigación y desarrollo en este campo. Su impacto en la comunidad investigadora condujo a un cambio de paradigma hacia el uso de redes neuronales profundas para diversas tareas basadas en la visión y sentó las bases para avances posteriores en el dominio.

Aplicación de LeNet

El impacto de LeNet se extiende a numerosas aplicaciones del mundo real. Desde reconocer dígitos escritos a mano en los servicios postales hasta revolucionar la atención médica al ayudar en el análisis de imágenes médicas, los conceptos fundamentales de LeNet han influido en innumerables campos.

  • Procesamiento de documentos: Las capacidades de LeNet se han utilizado para escanear y analizar documentos, analizar y procesar diferentes tipos de información, extraer datos de documentos y automatizar tareas de entrada de datos en diversas industrias.
  • Reconocimiento de escritura a mano: El éxito de LeNet en el reconocimiento de caracteres y dígitos escritos a mano sigue siendo fundamental en los sistemas de reconocimiento óptico de caracteres (OCR) utilizados en el procesamiento de texto escrito a mano en cheques bancarios, servicios postales y formularios. Es aplicable para digitalizar documentos históricos y reconocer información escrita a mano en varios formatos.
  • Autenticación biométrica: Las capacidades de reconocimiento de escritura a mano de LeNet se han aplicado al análisis de firmas y huellas dactilares, permitiendo métodos de autenticación biométrica y mejorando los sistemas de seguridad.
  • Análisis de vídeo en tiempo real: Los conceptos fundamentales de LeNet sirven como base para el análisis de vídeo en tiempo real, como el seguimiento de objetos, los sistemas de vigilancia, el reconocimiento facial y los vehículos autónomos.
  • Clasificación de imágenes: Los principios de LeNet influyen en los sistemas modernos de clasificación de imágenes. Las aplicaciones incluyen clasificar y categorizar objetos en imágenes para numerosos dominios, como la identificación de objetos en fotografías, control de calidad en la fabricación, análisis de imágenes médicas y sistemas de seguridad para la identificación de objetos.

Desafíos y limitaciones de LeNet

  • Eficiencia de extracción de características: Con la evolución de las arquitecturas de redes neuronales, los modelos más nuevos tienen formas más eficientes de extracción de características, lo que hace que LeNet sea comparativamente menos eficiente a la hora de identificar patrones y características complejos.
  • Adaptabilidad limitada: Su arquitectura, diseñada para tareas específicas como el reconocimiento de caracteres escritos a mano, podría no ser transferible directamente a otros dominios sin modificaciones sustanciales.
  • Escalabilidad: Aunque es un modelo pionero, LeNet podría carecer de la escalabilidad para adaptarse al procesamiento de datos moderno y a las demandas de aprendizaje profundo.
  • Sobreajuste: LeNet podría sufrir un sobreajuste cuando se trata de conjuntos de datos más complejos, lo que requeriría técnicas de regularización adicionales para mitigar este problema.

Los investigadores han desarrollado arquitecturas CNN más complejas para superar estas limitaciones, incorporando técnicas sofisticadas para abordar estos desafíos y al mismo tiempo mejorar el rendimiento en diversas tareas.

Conclusión

LeNet, como una de las primeras redes neuronales convolucionales, es un hito fundamental en el aprendizaje profundo. Su creación por parte de Yann LeCun y el equipo marcó un gran avance, particularmente en el reconocimiento de caracteres escritos a mano y el análisis de imágenes. LeNet enfrenta desafíos para adaptarse a tareas complejas modernas y conjuntos de datos diversos debido a la simplicidad arquitectónica y al posible sobreajuste. Su legado sigue siendo vital, inspira arquitecturas más avanzadas y desempeña un papel crucial en el desarrollo de modelos de aprendizaje profundo.

El inicio de LeNet marcó un momento crucial en la historia del aprendizaje profundo. Su éxito en las tareas y principios de reconocimiento de imágenes ha sentado las bases para la evolución de las redes neuronales convolucionales modernas. Su legado duradero continúa dando forma al panorama de la visión por computadora y la inteligencia artificial.

Puntos clave

  • Introdujo el concepto de capas convolucionales y de submuestreo, sentando las bases para las arquitecturas modernas de aprendizaje profundo.
  • Si bien LeNet logró avances significativos en su momento, sus limitaciones en el manejo de conjuntos de datos diversos y complejos se han vuelto evidentes.
  • Se introdujeron capas convolucionales y de submuestreo, revolucionando el aprendizaje profundo.

Preguntas frecuentes

P1: ¿Qué es LeNet?

R: LeNet es una red neuronal convolucional (CNN) diseñada por Yann LeCun y su equipo en la década de 1990. Fue desarrollado para el reconocimiento de caracteres escritos a mano y el análisis de imágenes.

P2: ¿Cuáles son las aplicaciones de LeNet en el mundo actual?

R: Las aplicaciones de LeNet son reconocimiento óptico de caracteres, reconocimiento de dígitos y letras, y tareas de clasificación de imágenes en sistemas de seguridad y atención médica.

P3: ¿Por qué es importante LeNet en la historia de las redes neuronales?

R: LeNet fue fundamental como una de las primeras aplicaciones exitosas de las CNN. Sirvió como piedra angular en el desarrollo de redes neuronales para tareas de reconocimiento de imágenes.

P4: ¿Cómo afectó LeNet al desarrollo de modelos de IA?

R: El éxito de LeNet generó una ola de interés en las redes neuronales, avances posteriores en visión por computadora y aprendizaje profundo. Sus principios de diseño y arquitectura influyeron en el desarrollo de muchos modelos de IA modernos.

P5: ¿Qué aprendizaje podemos extraer de la arquitectura de LeNet?

R: La arquitectura de LeNet introdujo el concepto de extracción de características jerárquicas a través de capas convolucionales. Permitir el reconocimiento de patrones efectivo, que se convirtió en un estándar en los modelos modernos de aprendizaje profundo.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img