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
├── Base_de_Datos/ # Conjunto de datos térmicos (30 casos) y scripts de preprocesamiento
├── 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.gradle
de 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.yaml
generado 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! 👣🔥