15-CNN Ensemble para Reconocimiento de Dígitos (MNIST)

Este modelo es un ensamble robusto compuesto por 15 Redes Neuronales Convolucionales (CNN) diseñado para la clasificación de dígitos escritos a mano (0-9) basado en el dataset MNIST de Kaggle. Utiliza una técnica de Soft Voting para combinar las predicciones de las 15 redes, logrando una precisión superior y reduciendo la varianza en comparación con una red individual.

Detalles del Modelo

  • Arquitectura: Ensamble de 15 CNNs independientes.
  • Framework: TensorFlow / Keras.
  • Técnicas clave: * Reemplazo del Max Pooling tradicional por capas convolucionales con stride=2.
    • Normalización por lotes (BatchNormalization) para estabilizar el entrenamiento.
    • Regularización mediante Dropout (0.4) para evitar el sobreajuste.
    • Data Augmentation (rotación, zoom, desplazamientos) en tiempo real.
  • Optimizador: Adam con LearningRateScheduler (reducción exponencial del ratio de aprendizaje).

Uso Previsto

Este modelo está diseñado para:

  • Reconocimiento óptico de caracteres (OCR) básico enfocado en dígitos numéricos.
  • Fines educativos y de demostración sobre cómo implementar arquitecturas de ensamble en Deep Learning.

Limitaciones: El modelo espera imágenes de entrada estrictamente en formato 28x28 píxeles en escala de grises. No está diseñado para procesar cadenas de números continuos sin una segmentación previa, ni para reconocer letras u otros símbolos.

Datos de Entrenamiento

El modelo fue entrenado utilizando el dataset Digit Recognizer de Kaggle (derivado del dataset original MNIST), el cual contiene:

  • 42,000 imágenes de entrenamiento.
  • 28,000 imágenes de prueba.

Para aumentar la robustez, se aplicó Data Augmentation generando variaciones dinámicas de las imágenes durante el entrenamiento (rotaciones de hasta 10 grados, zoom del 10%, y desplazamientos del 10%).

Resultados y Evaluación

  • Métrica principal: Accuracy (Precisión).
  • Precisión en Validación: ~99.5% - 99.7% en promedio por cada modelo individual.
  • La técnica de Soft Voting del ensamble eleva la precisión final en el conjunto de prueba ciego (Kaggle Leaderboard).

Impacto Ambiental (Opcional)

Puedes rellenar esta sección con tus datos reales si los tienes.

  • Hardware utilizado: [Ej. GPU NVIDIA Tesla T4 / Kaggle Kernels]
  • Tiempo de entrenamiento: [Ej. 3 horas en total para los 15 modelos]
  • Consumo estimado: [Ej. Moderado, optimizado mediante reducción temprana del Learning Rate]

Cómo usar este modelo en Python

Debido a que este es un ensamble de 15 modelos, debes cargar las redes y promediar sus predicciones:

import numpy as np
import tensorflow as tf

# Suponiendo que has guardado tus modelos como model_0.keras, model_1.keras, etc.
nets = 15
modelos = [tf.keras.models.load_model(f"model_{i}.keras") for i in range(nets)]

def predecir_digito(imagen):
    # Asegurar que la imagen tenga shape (1, 28, 28, 1) y esté normalizada (/255.0)
    resultados = np.zeros((1, 10))
    for modelo in modelos:
        resultados += modelo.predict(imagen)
    
    prediccion_final = np.argmax(resultados, axis=1)
    return prediccion_final[0]
Downloads last month
133
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train IzanMoya/mnist-15cnn-ensemble