Implementación en hardware de una red neuronal artificial para reconocimiento de
imágenes
Descripción general:
En grupos de trabajo, los estudiantes deberán diseñar, entrenar e implementar una red
neuronal artificial (ANN o CNN) capaz de reconocer dígitos escritos a mano utilizando
el conjunto de datos MNIST, o las imágenes de preferencia escogidas por el grupo.
El proyecto busca integrar los conocimientos teóricos y prácticos adquiridos sobre redes
neuronales, aprendizaje profundo y su implementación en hardware reconfigurable
(FPGA).
La red deberá ser entrenada en software (usando Python, TensorFlow, PyTorch, u otra
herramienta elegida por el grupo), y posteriormente traducida a una descripción en
VHDL para ser sintetizada y ejecutada en una FPGA Cyclone IV, y mostrar su
funcionamiento con testbench automatizado en ModelSim.
Objetivos del proyecto:
1. Comprender el proceso completo de diseño e implementación de una red
neuronal: desde el entrenamiento hasta su ejecución en hardware.
2. Aplicar técnicas de optimización para representar eficientemente los pesos y
activaciones en hardware digital.
3. Evaluar el desempeño y precisión de una red neuronal implementada en FPGA
frente a su versión en software.
4. Desarrollar habilidades de documentación, trabajo en equipo y comunicación
técnica.
Fases y entregables del proyecto:
1. Entrenamiento y validación del modelo (Semana del 28 oct al 4 noviembre)
Selección del tipo de red (MLP o CNN sencilla).
Entrenamiento con el dataset MNIST o el escogido por el Grupo.
Reporte de métricas de desempeño: precisión, error de validación y confusión.
Exportación de pesos y estructura del modelo para implementación en hardware.
Entregable parcial:
Carpeta con código de entrenamiento.
Informe técnico corto (máx. 2 páginas) con arquitectura del modelo, resultados de
entrenamiento y justificación de diseño. 7 de noviembre
2. Implementación en hardware (11 noviembre)
Traducción de la red neuronal a VHDL.
Síntesis e implementación en la FPGA Cyclone IV.
Pruebas funcionales con un subconjunto de imágenes.
Demostración de la red funcionando en laboratorio.
Entrega y demostración:
11 de noviembre: presentación del sistema funcionando en FPGA.
o Se evaluará el correcto reconocimiento de dígitos-imagen, tiempo de
respuesta y optimización del diseño.
3. Exposición del proyecto (14 de noviembre)
Cada grupo deberá realizar una presentación oral al curso (15 minutos), en la que se
aborden:
Arquitectura del modelo y elección de parámetros.
Proceso de entrenamiento y resultados.
Estrategia de implementación en FPGA.
Retos, limitaciones y posibles mejoras.
Formato: exposición con diapositivas y demostración breve (video o en vivo).
4. Documento final (entrega 18 de noviembre)
Entrega del informe técnico completo del proyecto (formato PDF), con la siguiente
estructura sugerida:
Estructura del documento final:
1. Portada (nombre del proyecto, integrantes, fecha, curso, docente).
2. Introducción y justificación.
3. Fundamento teórico (breve, centrado en la red seleccionada y principios de
implementación digital).
4. Diseño y entrenamiento del modelo (métricas, arquitectura, parámetros).
5. Implementación en VHDL (diagrama de bloques, descripción de módulos, flujos de
datos).
6. Proyecto de Quartus (vhdl y .mif) + archivos de simulación
7. Resultados de simulación y pruebas en FPGA.
8. Conclusiones y recomendaciones.
9. Referencias bibliográficas.
Criterios de evaluación (100%)
Componente Porcentaje Descripción
Entrenamiento y Calidad del modelo entrenado, reporte de
20%
validación del modelo métricas y comprensión del proceso.
Correcta traducción a VHDL, funcionalidad en
Implementación en FPGA 35%
Cyclone IV, eficiencia y resultados observados.
Claridad, dominio conceptual, trabajo en equipo y
Exposición oral 20%
calidad de la presentación.
Profundidad técnica, organización, redacción y
Documento final 25%
soporte visual (diagramas, gráficos, etc.).
Sugerencias:
Implementación VHDL
Bloques reutilizables neurona (MAC + activación)
Layer Capas (paralelismo - pipeline). Instanciar N neuronas o 1 neurona con planificador
para multiplexar
Controlador FSM
Memorias de pesos (ROM) formato .mif con M9K
Las funciones de activación se pueden hacer con LUT en memoria ROM
Archivo VHDL que integre todos los archivos