Detección de Melanoma con Deep Learning: De la Imagen al Diagnóstico Asistido

En esta entrada explico cómo he desarrollado un modelo de clasificación de lunares benignos y malignos a partir de imágenes, y cómo estoy evolucionando el proyecto hacia un enfoque más clínico usando criterios ABCDE del melanoma.

PROYECTOS

6/17/20252 min read

Clasificación de lunares con Deep Learning: de CNNs simples a criterios clínicos ABCDE

Uno de mis primeros proyectos personales en visión por computadora ha sido aplicar redes neuronales convolucionales (CNNs) para clasificar imágenes de lunares benignos y malignos. Es un tema sensible e interesante desde el punto de vista biomédico, así que decidí ir más allá de una simple red funcional.

🧪 Primera versión del proyecto

En la versión inicial:

  • Usé ImageDataGenerator con augmentación para compensar la escasez de imágenes.

  • Entrené una CNN desde cero en TensorFlow/Keras.

  • Utilicé carpetas separadas para imágenes benignas y malignas.

  • Apliqué callbacks como EarlyStopping y ModelCheckpoint.

Obtuve resultados funcionales, pero la precisión del modelo no fue lo suficientemente buena para un caso clínico real, y empecé a notar los límites de usar solo una CNN "black box" con augmentaciones agresivas.

🔄 Redefiniendo el enfoque: de CNN a un modelo clínicamente orientado

Decidí replantear el pipeline con una aproximación más rigurosa y alineada con el análisis médico:

1. Evitar modificaciones que deformen las imágenes

Las alteraciones por rotaciones, zoom o desplazamientos pueden comprometer estructuras clave en lesiones cutáneas. Prefiero trabajar con las imágenes originales.

2. Crear un archivo CSV con metadatos

Estoy construyendo un CSV que contenga, para cada imagen:

  • Nombre del archivo

  • Etiqueta (benigno/maligno)

  • Y ahora también características clínicas extraídas automáticamente

3. Extraer métricas basadas en el criterio ABCDE del melanoma:

  • Asimetría: diferencia de forma entre mitades.

  • Bordes: grado de irregularidad (usando contornos y medidas geométricas).

  • Color: cantidad de tonos dominantes y variabilidad en el histograma.

  • Diámetro: medida en píxeles.

  • (En futuro) Evolución: si se dispone de imágenes temporales.

Estas características serán computadas con funciones específicas en Python y OpenCV, y almacenadas en el CSV para su análisis posterior.

4. Entrenar un nuevo modelo con datos estructurados

Con el CSV, utilizaré algoritmos como:

  • Random Forests o XGBoost (alta precisión y explicabilidad),

  • O incluso una arquitectura híbrida CNN + capas densas tabulares.

🔍 Próximos pasos

  • Finalizar el extractor automático de características ABCDE.

  • Evaluar el rendimiento de diferentes modelos sobre los datos estructurados.

  • Documentar todo el proceso en GitHub, con notebooks y comparativas.

📁 Repositorio del proyecto

Todo el código está disponible (y en evolución constante) en mi GitHub:
👉 [enlace al repo]

🔚 Reflexión final

Este proyecto ha sido una gran forma de profundizar en visión por computador, clasificación binaria, buenas prácticas de entrenamiento y, sobre todo, en cómo adaptar los modelos a los requisitos clínicos reales. No se trata solo de que funcione: se trata de que tenga sentido y se pueda confiar en él.