/ Proyectos / Salud / Displasia de cadera
Detección temprana de displasia de cadera en infantes: ResNet50 y GANs sobre radiografías pélvicas
Clasificación de displasia del desarrollo de cadera (DDC) combinando transfer learning con ResNet50 y aumento de datos médicos escasos con redes generativas antagónicas (GANs).
El objetivo era clasificar radiografías pélvicas de infantes de 3 a 6 meses como presencia o ausencia de displasia del desarrollo de cadera (DDC), una condición donde el diagnóstico manual depende fuertemente de la experiencia del radiólogo y muestra variabilidad interobservador. El problema real: el dataset disponible tenía solo 354 sujetos (120 con DDC, 234 normales), un tamaño típico en imagen médica pediátrica, pero insuficiente para entrenar una red profunda desde cero sin sobreajustar.
Se combinaron dos técnicas complementarias: una GAN para generar radiografías sintéticas y balancear las clases sin depender de más pacientes reales, y transfer learning con ResNet50 preentrenado en ImageNet para aprovechar filtros visuales ya aprendidos en vez de partir de cero. El hallazgo más importante no fue solo la exactitud final. Fue confirmar, con un baseline honesto, que la ganancia venía de la arquitectura y del balanceo combinados, no de una sola de las dos.
Mapa del casoContenido
- Diagrama de la solución. Los bloques del pipeline, de la radiografía cruda a la predicción final, con un demo interactivo del umbral de decisión
- Construcción de la solución. Cómo la escasez real de datos médicos dirigió cada decisión
- Condiciones del proyecto. Restricciones reales y opciones descartadas antes de construir
- Pasos. Qué se dejó al agente y qué criterio se aplicó en cada uno
- Proceso de iteración. El ajuste documentado entre modelos clásicos, CNN y transfer learning
- Descargables. Notebook, diagrama y repositorio del proyecto
- Lecciones importantes. La lección concreta que deja este caso
Estructura de alto nivelDiagrama de la solución
Pasa el cursor sobre cada bloque para ver qué hace ese paso.
El balanceo con GAN se hizo antes de comparar arquitecturas, no después, porque comparar modelos sobre un dataset todavía desbalanceado habría premiado artificialmente al modelo con más capacidad de memorizar la clase mayoritaria (Normal).
Para que esto no se quede en el notebook, puedes explorar abajo cómo cambia el balance de clases con la GAN, cómo se compara ResNet50 contra el baseline, y qué pasa con la sensibilidad y la precisión al mover el umbral de decisión (demo educativa, no diagnóstica):
¿Qué cambia el aumento de datos con GAN?
El dataset real tiene muchos más casos normales que casos con DDC. La GAN no duplica imágenes existentes: genera radiografías sintéticas nuevas para la clase minoritaria.
CNN baseline vs. ResNet50 con transfer learning
Mismas condiciones de entrenamiento, mismo dataset balanceado con GAN. La diferencia es solo la arquitectura.
Mueve el umbral de decisión
A umbral 0.50 se muestran las métricas del modelo ResNet50 reportadas en el estudio. Fuera de ese punto, la curva es una aproximación pedagógica de la relación sensibilidad-precisión, no una medición real.
El Caso B muestra por qué el umbral importa: con un umbral más alto (más "preciso"), un caso borderline real como este puede pasar como Normal. Es exactamente la clase de decisión que un especialista revisa, no el modelo solo.
Cómo se construyóConstrucción de la solución
Condiciones del proyecto
| Restricción | Dato |
|---|---|
| Tamaño del dataset real | 354 sujetos: 120 con DDC, 234 normales, de 2 hospitales de Jordania |
| Privacidad de datos médicos | No es posible ampliar el dataset simplemente pidiendo más radiografías de pacientes |
| Formato de entrada | Radiografías pélvicas AP en escala de grises, tamaños heterogéneos |
| Objetivo del proyecto | Sistema de apoyo diagnóstico, no reemplazo del especialista |
| Opción | Por qué se descartó |
|---|---|
| Entrenar una CNN profunda desde cero | 354 sujetos no alcanzan para aprender buenos filtros visuales sin sobreajustar |
| Balancear solo con oversampling clásico (rotar, voltear, recortar) | Genera variaciones triviales de las mismas imágenes, no información nueva |
| GAN para datos sintéticos + transfer learning con ResNet50 | Aporta variedad real al conjunto de entrenamiento y reutiliza conocimiento visual ya aprendido en vez de partir de cero |
Pasos
Confirmar que había señal antes de comprometerse con una arquitectura
Agente: propuso ir directo a entrenar un clasificador sobre las imágenes crudas.
Criterio aplicado: primero explorar la separabilidad de las clases con K-Means y PCA sobre características extraídas, para confirmar que había una señal recuperable antes de invertir en una arquitectura más compleja.
Balanceo del dataset con GAN, no solo con transformaciones simples
Agente: sugirió aumentar los datos solo con rotaciones, volteos y recortes.
Criterio aplicado: entrenar un generador y un discriminador de forma adversarial para producir radiografías sintéticas nuevas, y balancear el dataset de 120/234 a 350 sujetos por clase, en vez de duplicar variaciones triviales de las mismas imágenes.
Un baseline honesto antes del modelo final
Agente: propuso ir directo a ResNet50 y reportar solo esa métrica.
Criterio aplicado: entrenar primero SVM, Árbol de Decisión y una CNN simple como comparación, para que la ganancia de ResNet50 fuera medible frente a algo, no solo asumida.
Transfer learning en dos fases, no entrenamiento completo desde el inicio
Agente: sugirió entrenar ResNet50 completo desde el primer epoch.
Criterio aplicado: congelar el modelo base preentrenado en ImageNet y entrenar solo la cabeza nueva primero; después liberar las últimas 20 capas y hacer fine-tuning con un learning rate mucho más bajo, para no destruir los pesos preentrenados con gradientes grandes sobre un dataset pequeño.
Proceso de iteración
Ajuste documentado, no forzado
Antes de llegar a ResNet50, se probaron modelos clásicos (SVM, Árbol de Decisión) sobre características extraídas de la imagen, y una CNN simple entrenada desde cero como baseline. También se entrenó InceptionV3 con transfer learning como segunda comparación. Ninguno de los modelos clásicos ni el CNN baseline superó el 75% de exactitud, mientras que ResNet50 con fine-tuning alcanzó 97.4%, lo que confirmó que la combinación de transfer learning y datos balanceados con GAN sí justificaba la complejidad extra frente a un enfoque más simple.
CierreLecciones importantes
Un accuracy de 97.4% se lee muy distinto según el tamaño del dataset detrás. Aquí son 354 sujetos reales de dos hospitales, balanceados con datos sintéticos generados por una GAN entrenada sobre esos mismos 354 casos. Eso no invalida el resultado, pero sí cambia lo que se puede afirmar con él: es evidencia de que la arquitectura y el balanceo funcionan, no una prueba de que el modelo generaliza a otras poblaciones o equipos de radiografía. Esa distinción, entre "el pipeline funciona" y "el modelo está listo para clínica", es la que un jurado de tesis pregunta primero, y es la que este proyecto documenta con honestidad en vez de esconder.
Si quieres ver el estado más reciente y amplio de la literatura en este campo, esta revisión sistemática es una buena referencia del nivel de evidencia que se espera antes de hablar de uso clínico real: Artificial Intelligence to Detect Developmental Dysplasia of Hip: A Systematic Review.
Termina ya tu proyecto
¿Tienes un proyecto similar y no sabes por dónde empezar? Yo te ayudo a diseñarlo.
El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.
Sin registro. Acceso inmediato