Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes convolucionales (CNN), Unidad 10 — CNN modernas (visión general), 10.1 — Arquitecturas históricas ·

LeNet

LeNet: Una arquitectura histórica en redes convolucionales

Introducción

LeNet, desarrollado por Yann LeCun y sus colegas en 1998, fue uno de los primeros sistemas que demostró la efectividad del aprendizaje profundo para problemas de visión por computadora. LeNet es particularmente relevante no solo porque representaba un hito en el campo, sino también porque formó las bases para muchas arquitecturas modernas utilizadas en procesamiento de imágenes y visión por computadora.

Explicación principal

LeNet se diseñó originalmente para clasificar números manuscritos del conjunto de datos MNIST. Es una arquitectura de dos capas convolucionales seguidas por dos capas fully connected, con un total de 6 capas en total. La estructura básica consta de la siguiente secuencia:

  1. Capas Convolutivas: Estas capas aplican filtros a las imágenes para extraer características relevantes.
  2. Pooling: Se utiliza pooling para reducir la dimensionalidad y mejorar la invariancia espacial.
  3. Capas Fully Connected (FC): Estas capas toman los features extrados por las convoluciones y entran en una red completamente conectada.

Ejemplo de LeNet

A continuación se muestra un esquema simplificado del modelo LeNet:

# Importar librerías necesarias
from keras.models import Sequential
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.layers.core import Dense, Flatten

# Crear la arquitectura de LeNet
model = Sequential()

# Capa convolucional 1
model.add(Conv2D(6, (5, 5), activation='tanh', input_shape=(32, 32, 1)))

# Pooling
model.add(MaxPooling2D(pool_size=(2, 2)))

# Capa convolucional 2
model.add(Conv2D(16, (5, 5), activation='tanh'))

# Pooling
model.add(MaxPooling2D(pool_size=(2, 2)))

# Flatten la salida de las capas convolutivas
model.add(Flatten())

# Capa fully connected 1
model.add(Dense(120, activation='tanh'))

# Capa fully connected 2
model.add(Dense(84, activation='tanh'))

# Salida final (10 clases para MNIST)
model.add(Dense(10, activation='softmax'))

Errores típicos / trampas

  1. Mala configuración de parámetros: El tamaño del kernel en las capas convolutivas y el tamaño de los pools pueden afectar significativamente a la precisión del modelo. Ajustar estos parámetros correctamente puede requerir mucha experiencia o pruebas exhaustivas.
  2. Omisión de preprocesamiento: Es crucial normalizar las imágenes antes de entrenar el modelo, especialmente en capas convolutivas y fully connected. Ignorar este paso puede llevar a resultados no deseables.
  3. Sobreajuste: LeNet es un modelo relativamente sencillo que puede sobreajustarse fácilmente si se ajusta demasiado al conjunto de datos de entrenamiento. Utilizar técnicas como dropout o regularización pueden ayudar a prevenir esto.

Checklist accionable

  1. Investiga y entiende: Asegúrate de entender completamente cómo funcionan las capas convolutivas, pooling y fully connected.
  2. Preprocesa tus datos: Normaliza los datos según sea necesario, especialmente en las capas convolutivas y fully connected.
  3. Tunea parámetros cuidadosamente: Experimenta con diferentes tamaños de kernel y pool size para optimizar el rendimiento del modelo.
  4. Implementa regularización: Utiliza técnicas como dropout o l2 regularización para prevenir sobreajuste.
  5. Mantén un registro: Documenta todos los ajustes realizados y sus resultados para futuras referencias.

Cierre

LeNet fue una pieza crucial en el avance del aprendizaje profundo en visión por computadora, abriendo la puerta a arquitecturas más complejas. Aunque no es tan prevalente como otras arquitecturas modernas, su influencia sigue siendo sentida hoy en día.

Siguientes pasos

  • Explora arquitecturas más modernas: Después de comprender LeNet, puedes probar arquitecturas como AlexNet o VGG para mejorar aún más tus habilidades.
  • Practica con conjuntos de datos reales: Aplica lo aprendido en proyectos prácticos usando conjuntos de datos públicos para visión por computadora.
  • Estudia transfer learning: Utiliza modelos preentrenados como base para tu trabajo, especialmente si tienes un conjunto de datos limitado.

Aprender de las arquitecturas históricas no solo te ayuda a comprender el origen del aprendizaje profundo, sino que también proporciona una sólida base para avanzar en tus proyectos de visión por computadora.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).