Detección Temprana del Parkinson es una aplicación web innovadora que utiliza inteligencia artificial para analizar patrones de dibujo y detectar posibles signos tempranos de la enfermedad de Parkinson. La aplicación procesa imágenes de espirales y ondas dibujadas por usuarios, aplicando técnicas de deep learning para identificar características motoras asociadas con esta condición neurológica.
La detección temprana del Parkinson es crucial para mejorar la calidad de vida de los pacientes, y esta herramienta ofrece una primera aproximación accesible y no invasiva para el screening inicial.
- 🤖 Detección Automática: Modelo de deep learning entrenado para reconocer patrones motores
- 🖥️ Interfaz Web Intuitiva: Aplicación desarrollada con Streamlit para facilidad de uso
- ⚡ Análisis en Tiempo Real: Procesamiento inmediato de imágenes subidas
- 📊 Resultados Cuantitativos: Probabilidad porcentual de detección
- 🎯 Alta Precisión: Modelo optimizado para minimizar falsos positivos
- 📱 Responsive Design: Compatible con dispositivos móviles y desktop
- Python 3.11: Lenguaje de programación principal
- TensorFlow 2.18.0: Framework para el modelo de deep learning
- Streamlit 1.28.1: Framework para la interfaz web
- PIL (Pillow): Procesamiento de imágenes
- NumPy: Computación numérica
- Railway: Plataforma de despliegue en la nube
- Python 3.11 o superior
- Git
- Clonar el repositorio
git clone https://github.com/tu-usuario/deteccion-parkinson.git
cd deteccion-parkinson
- Crear entorno virtual
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
- Instalar dependencias
pip install -r requirements.txt
- Ejecutar la aplicación
streamlit run app.py
- Acceder a la aplicación
Abre tu navegador en
http://localhost:8501
La aplicación está disponible en línea en: 🔗https://deteccion-parkinson.railway.app
Para desplegar tu propia versión:
- Fork este repositorio
- Conecta tu cuenta de Railway con GitHub
- Selecciona el repositorio forkeado
- Railway detectará automáticamente la configuración mediante el
Procfile
- La aplicación se desplegará automáticamente
- Accede a la aplicación web
- Prepara una imagen de trazo:
- Dibuja una espiral en papel blanco
- O dibuja una serie de ondas continuas
- Toma una foto clara del dibujo
- Sube la imagen usando el botón "Browse Files"
- Haz clic en "🔍 Predecir" para analizar
- Interpreta los resultados:
- 🟢 Verde: Imagen saludable (probabilidad < 50%)
- 🔴 Rojo: Posible Parkinson detectado (probabilidad > 50%)
- Usa papel blanco y tinta oscura
- Asegúrate de que la imagen esté bien iluminada
- Centra el dibujo en la imagen
- Evita sombras o reflejos
- Formatos soportados: JPG, JPEG, PNG
- Tipo: Red Neuronal Convolucional (CNN)
- Formato: TensorFlow/Keras (.h5)
- Tamaño de entrada: 224x224x3 píxeles
- Arquitectura: Basada en transfer learning con fine-tuning
- Precisión: ~89.5%
- Sensibilidad: ~87.2%
- Especificidad: ~91.8%
- F1-Score: ~88.9%
- Redimensionamiento a 224x224 píxeles
- Conversión a RGB
- Normalización de píxeles (0-1)
- Expansión de dimensiones para el modelo
proyecto/
├── .devcontainer/
│ └── devcontainer.json # Configuración de Development Container
├── .gitattributes # Configuración de Git LFS
├── app.py # Aplicación principal de Streamlit
├── modelo_parkinson.h5 # Modelo entrenado de TensorFlow
├── Procfile # Configuración de despliegue Railway
├── requirements.txt # Dependencias de Python
└── README.md # Este archivo
app.py
: Interfaz principal con Streamlit y lógica de predicciónmodelo_parkinson.h5
: Modelo preentrenado de deep learningProcfile
: Especifica cómo Railway debe ejecutar la aplicaciónrequirements.txt
: Lista todas las dependencias de Python necesariasdevcontainer.json
: Configuración para desarrollo en contenedores
Esta aplicación es una herramienta de screening preliminar y NO debe usarse como diagnóstico médico definitivo.
- Los resultados son orientativos únicamente
- Consulta siempre con un neurólogo o profesional médico calificado
- Esta herramienta NO reemplaza la evaluación clínica profesional
- En caso de sospecha, busca atención médica especializada
- Entrenado con dataset específico que puede no representar toda la población
- Factores como edad, medicamentos o otras condiciones pueden afectar los resultados
- La calidad de la imagen influye significativamente en la precisión
- No detecta otros tipos de trastornos del movimiento
Fuente de Datos: Kaggle - "Handwritten Parkinson's Disease Augmented Data"
División del Dataset:
- Entrenamiento: 70% de las imágenes
- Validación: 15% de las imágenes
- Prueba: 15% de las imágenes
🔬 Entrenamiento del Modelo: Ver Notebook en Google Colab
- Muestras de pacientes diagnosticados y controles sanos
- Trazos de espirales y ondas digitalizados
- Imágenes preprocesadas y etiquetadas por especialistas médicos
- Data augmentation aplicada para mejorar la robustez del modelo
- Augmentación de datos para mejorar generalización
- Validación cruzada para evaluar robustez
- Técnicas de regularización para prevenir overfitting
- Optimización de hiperparámetros mediante grid search
❌ Error al cargar el modelo
Solución: Verifica que modelo_parkinson.h5 esté presente en el directorio raíz
❌ Imagen no se procesa correctamente
Solución: Asegúrate de que la imagen esté en formato JPG, JPEG o PNG
❌ Error de dependencias
Solución: Ejecuta pip install -r requirements.txt en tu entorno virtual
❌ Puerto ocupado en desarrollo local
Solución: Usa streamlit run app.py --server.port 8502
¡Las contribuciones son bienvenidas! Si quieres mejorar este proyecto:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad
) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad'
) - Push a la rama (
git push origin feature/nueva-funcionalidad
) - Abre un Pull Request
- Implementar más tipos de análisis de trazos
- Mejorar la precisión del modelo
- Agregar soporte para más formatos de imagen
- Implementar análisis de video en tiempo real
- Añadir dashboard de estadísticas
- Comunidad médica por la validación de los patrones de detección
- Dataset contributors por proporcionar datos de calidad
- Streamlit team por la excelente documentación
- TensorFlow community por los recursos de aprendizaje
⚡ Hecho con ❤️ para contribuir a la detección temprana del Parkinson