Reconocimiento de Lenguaje de Señas Mexicanas (LSM) en tiempo real, desde la cámara web, con una red neuronal convolucional entrenada sobre un conjunto de datos que capturamos nosotros mismos.
27 clases: los dígitos y el alfabeto dactilológico (0, a–z).
1. Captura y preprocesamiento — TrainingDataCollection.py / TestingDataCollection.py
La cámara muestra la imagen en espejo con una región de interés marcada. El usuario coloca la mano dentro del recuadro y presiona la tecla de la seña que está haciendo. Cada captura pasa por:
BGR → escala de grises → desenfoque gaussiano (5×5)
→ umbral adaptativo gaussiano → binarización invertida con Otsu
→ redimensionado a 300×300 → JPEG
El resultado es una silueta binaria de la mano, independiente de la iluminación y del color de piel — que es justo lo que hace que el modelo generalice.
2. Entrenamiento — Models/
CNN en TensorFlow/Keras sobre imágenes de 128×128 en escala de grises:
Conv2D(32, 3×3, ReLU) → MaxPool(2×2)
Conv2D(32, 3×3, ReLU) → MaxPool(2×2)
Flatten
Dense(128, ReLU) → Dropout(0.4)
Dense(96, ReLU) → Dropout(0.4)
Dense(64, ReLU)
Dense(27, Softmax)
Optimizador Adam, entropía cruzada categórica, ~4.2M parámetros.
Lo interesante del repositorio no es el modelo final, sino el camino. Models/ conserva las nueve versiones:
| Modelo | Imágenes de entrenamiento | Épocas | Exactitud (validación) |
|---|---|---|---|
| 1 | 2,203 | 5 | 28% |
| … | |||
| 9 | 7,003 | 10 | 82% |
La mayor parte de la ganancia vino de triplicar el conjunto de datos, no de complicar la arquitectura. Los ajustes al modelo (padding same, más épocas, regularización con dropout) aportaron; los datos aportaron más.
FoldersCreation.py Crea el árbol de carpetas del dataset (27 clases)
TrainingDataCollection.py Captura y preprocesa imágenes de entrenamiento
TestingDataCollection.py Lo mismo, para el conjunto de prueba
Models/ Los 9 notebooks y sus modelos entrenados (.h5 / .json)
dataSet/ Imágenes de entrenamiento y prueba
pip install opencv-python numpy tensorflowpython FoldersCreation.py # crear el árbol de carpetas
python TrainingDataCollection.py # capturar datos: presiona 0, a–z sobre cada señaDespués, abre cualquier notebook de Models/ para entrenar.
- Fernando López Ramírez — @Fernando74lr
- Moisés Miles Barajas — @moyhatake
- Anthony Ibrail Ortega Méndez — @anthonyibrail
Proyecto del curso Visión para Robots, Tecnológico de Monterrey, semestre FJ 2023.