Este repositorio contiene un modelo de segmentación para dermatomas podales basado en imágenes térmicas. Su objetivo principal es proporcionar herramientas y recursos para la segmentación de regiones específicas del pie, utilizando técnicas de aprendizaje profundo.
├── App/ # Código fuente de la aplicación móvil
├── Models/ # Enlaces a modelos entrenados en Kaggle (>25 MB)
├── notebooks/ # Jupyter notebooks de entrenamiento, inferencia y análisis
└── README.md # Documentación principal (este archivo)
Contiene todo lo generado por Android Studio y Chaquopy para la aplicación móvil:
- Archivos Kotlin (
.kt) - Scripts Python (
.py) integrados con Chaquopy - Archivos de configuración Gradle
Nota: Usamos el plugin de Chaquopy para ejecutar scripts de Python dentro de la app, lo que facilita:
- El uso de OCR para extraer regiones de interés
- La aplicación de registro no rígido para alinear secuencias
- La carga y ejecución de modelos
.tflite
Incluye los 30 casos de imágenes térmicas originales y máscaras de segmentación:
├── Imágenes/
└── Mascaras - Manuales/
└── Mascaras - Red/
Estos datos sirvieron para entrenar y validar los modelos de segmentación.
Aquí encontrarás un archivo models.md con enlaces a los modelos entrenados y alojados en Kaggle (GitHub no acepta archivos >25 MB):
- ResUNet + EfficientNetB3 (.tflite): mejor combinación de métricas usada en la app
- ResUNet + ResNet34
- YOLOv11 (segmentación y detección)
- resunet-resnet34-mamitas-train:
Cuaderno para entrenar el modelo con arquitectura ResUNet con Backbone de Resnet34 para segmentación de pies. - resunet-resnet34-mamitas-test:
Cuaderno para realizar inferencia con el modelo ResUNet con Backnone de Resnet34 entrenado.
- resunet-efficientnetb3-mamitas-train:
Cuaderno para entrenar el modelo con arquitectura ResUNet con Backbone de EfficientnetB3 para segmentación de pies. - resunet-efficientenetb3-mamitas-test:
Cuaderno para realizar inferencia con el modelo ResUNet con Backnone de EfficientnetB3 entrenado.
- yolov11-mamitas-seg-train:
Cuaderno para entrenar YOLOv11 para segmentación de pies. - yolov11-mamitas-seg-test-and-metrics:
Cuaderno para realizar inferencia con el modelo YOLOv11 entrenado y sacar las metricas de Dice, Jaccard, Sensitivity, Specificity.
- yolov11-mamitas-obj-dect-train:
Cuaderno para entrenar YOLOv11 para detección de pies. - yolov11-mamitas-seg-test-and-metrics:
Cuaderno para realizar inferencia con el modelo YOLOv11 de detección entrenado.
- mamitas-map-dermatomes-and-temperature.ipynb:
implementación de OCR + alineamiento no rígido y gráficas de evolución de temperatura vs. tiempo.
- Android Studio (proyecto Kotlin + Chaquopy)
- Python ≥3.10
- TensorFlow ≥2.15
- PyTorch (YOLOv11)
- OpenCV, NumPy, Matplotlib
- Kaggle API & Roboflow API
- Ultralytics (YOLOv11)
Chaquopy ya viene configurado en el
build.gradlede la carpetaApp/.
- Abre el proyecto en Android Studio.
- Asegúrate de tener conexión a Internet para descargar dependencias de Chaquopy.
- Compila y ejecuta en un dispositivo o emulador con cámara.
- La app capturará la zona plantar, ejecutará OCR y regresará la segmentación usando el modelo
.tflite.
- Ve a la carpeta de App/apk/ en tu telefono
- Descarga la apk
- Abrela e instala la aplicación
- Clona el repo:
git clone https://github.com/tu_usuario/mamitas.git cd mamitas/notebooks - Instala requisitos:
pip install -r requirements.txt
- Ejecuta el notebook de tu interés:
- Entrenamiento: guarda pesos en Models/
- Inferencia: inserta tus imágenes en datasets/Mamitas/...
- Análisis térmico: abre mamitas-map-dermatomes-and-temperature.ipynb
- Una vez entrenado el modelo o si decides utilizar uno preentrenado, abre el cuaderno de inferencia correspondiente.
- Asegúrate de tener las imágenes de prueba organizadas en la carpeta correcta (para ResUNet:
./datasets/Mamitas/Test/images/; para YOLOv11, se usará el archivo de configuracióndata.yamlgenerado durante el proceso de descarga). - Ejecuta el cuaderno para obtener los resultados de segmentación.
Los cuadernos esperan que los datos estén organizados de la siguiente manera:
datasets/
└── Mamitas/
├── Train/
│ ├── images/
│ └── masks/
├── Valid/
│ ├── images/
│ └── masks/
├── Test/
│ ├── images/
│ └── masks/
Para YOLOv11, la estructura es ligeramente diferente y se configura mediante el archivo data.yaml que se genera al descargar el dataset.
A continuación, se muestran algunas métricas de rendimiento para segmentación y para detección en el modelo YOLO que se han obtenido en el proyecto para la segmentación de pies:
| Modelo | Variante | Dice Coefficient | Jaccard Index | Sensitivity | Specificity |
|---|---|---|---|---|---|
| ResUNet/Resnet34 | default | 0.96213 | 0.92907 | 0.96298 | 0.96298 |
| ResUNet/EffcientenetB3 | default | 0.98637 | 0.97333 | 0.98698 | 0.98698 |
| YOLOv11/Segmentation | segmentation | 0.98236 | 0.96535 | 0.99157 | 0.99216 |
| Modelo | Variante | Precision (P) | Recall (R) | mAP50 | mAP50-95 |
|---|---|---|---|---|---|
| YOLOv11/Detection | segmentation | 1 | 1 | 0.995 | 0.995 |
Los cuadernos incluyen visualizaciones de los resultados de entrenamiento y ejemplos de inferencia. Los modelos entrenados se guardan en la carpeta ./models/ y los resultados de evaluación se almacenan en ./results/.
A continuación se presentan ejemplos visuales del proceso completo:
- Imagen de Entrada:
- Detección:
- Segmentación:
¡Las contribuciones son bienvenidas! Si encuentras errores o tienes sugerencias para mejorar estos cuadernos, por favor abre un issue o envía una pull request.
Este proyecto se distribuye bajo la licencia BSD 2-Clause. Consulta el archivo LICENSE para más detalles.
¡Listo para segmentar dermatomas podales con técnicas de aprendizaje profundo! 👣🔥