Lector pCR

CNN 2D entrenada desde cero que estima, a partir de un corte de resonancia magnética de mama con contraste dinámico (DCE-MRI) adquirida antes del tratamiento neoadyuvante, la probabilidad de respuesta patológica completa (pCR): que tras el tratamiento y la cirugía no quede tumor invasivo.

Uso exclusivamente docente y de investigación. No es un producto sanitario, no está validado clínicamente y no debe usarse para tomar decisiones sobre pacientes. Su capacidad de discriminación es baja (ver Resultados).

Descripción del modelo

Tarea Clasificación binaria por corte: pCR frente a no pCR
Arquitectura CNN propia de 5 bloques; cada bloque aplica 2 × (convolución 3×3 + BatchNorm + ReLU) y max-pooling 2×2. Canales 4 → 8 → 16 → 32 → 64, media global, dropout 0,3 y capa lineal 64 → 1
Parámetros 74.253 por modelo
Preentrenamiento Ninguno: pesos inicializados aleatoriamente y entrenados desde cero
Ensemble 5 modelos, uno por fold de validación cruzada; se promedian sus probabilidades
Calibración Mapa de Platt ajustado con predicciones fuera de fold de un ensemble anidado
Autor Alejandro Barreche Ruiz (Universidad Alfonso X el Sabio, Aprendizaje Automático, 2026)

Ficheros

Fichero Contenido
ensemble.onnx Los 5 modelos y la calibración en un único grafo ONNX (opset 20, 1,8 MB). Es el que usa la aplicación web
model_fold{0..4}.pt Pesos de PyTorch de cada fold (state_dict). Requieren el código del repositorio y architecture.yaml
architecture.yaml Descripción de la arquitectura que construye breast_cnn.models.builder
config.yaml Configuración completa del entrenamiento
metrics.json Métricas de validación interna por fold
onnx_export.json Entradas, salidas, umbral, versiones y comprobación de paridad PyTorch–ONNX
test_evaluation_patient_narrow.json Evaluación en el conjunto de test

SHA-256 de ensemble.onnx: d1338e3c98afd9bbd15bd6411e9db989620fe29499e3aa066d978e25872f2a3f

Entrada y salidas

Entrada images: float32 [N, 3, 256, 256].

  • Los canales son las tres fases de la DCE-MRI en este orden: PRE (antes del contraste), EARLY (captación inicial) y LATE (fase tardía). Son tres instantes temporales, no un color RGB.
  • Cada fase es un PNG en escala de grises de 8 bits y 256 × 256 píxeles, escalado como valor / 255. No se aplica la normalización de ImageNet ni ninguna normalización por fase.
  • El recorte central de 128 × 128 está dentro del modelo: no hay que hacerlo antes.

Salidas, en este orden:

Nombre Forma Significado
fold_probabilities [N, 5] Probabilidad de cada modelo de fold
probability [N] Media de las cinco
calibrated [N] Media tras la calibración de Platt; es la puntuación que se compara con el umbral
fold_calibrated [N, 5] Cada probabilidad de fold con la misma calibración

Umbral: calibrated ≥ 0,351 → pCR. Se fijó en validación interna para una especificidad del 90 % por corte.

Uso

import numpy as np
import onnxruntime as ort
from PIL import Image

phases = [
    np.asarray(Image.open(f"corte_{phase}.png"), dtype=np.float32) / 255
    for phase in ("PRE", "EARLY", "LATE")
]
images = np.stack(phases)[None]  # [1, 3, 256, 256]

session = ort.InferenceSession("ensemble.onnx")
fold_probabilities, probability, calibrated, fold_calibrated = session.run(None, {"images": images})
label = "pCR" if calibrated[0] >= 0.351 else "no pCR"

Datos de entrenamiento

Versión docente de BreastDCEDL (Fridman et al., 2026), construida a partir de las colecciones de TCIA I-SPY1, I-SPY2 y Duke. Contiene unos 10 cortes axiales por paciente.

  • Entrenamiento: 1.097 pacientes (10.945 cortes), de las que 322 (29,4 %) alcanzan pCR. Por cohorte: Duke 209, I-SPY1 104 e I-SPY2 784.
  • Validación interna: 5 folds separados por paciente; los cortes de una paciente nunca se reparten entre entrenamiento y validación.
  • Test: 176 pacientes (53 con pCR), que no intervinieron en ninguna decisión de diseño.

Entrenamiento

  • Pérdida: BCEWithLogitsLoss ponderada con pos_weight = N0 / N1, calculado en cada fold solo con su entrenamiento.
  • Optimización: AdamW con tasa de aprendizaje 10⁻⁴, weight decay 10⁻⁴ y lotes de 32. La tasa sigue un decaimiento coseno planificado para 40 épocas y se usa una media exponencial de los pesos (0,998).
  • Duración: 8 épocas, elegidas con la curva media de validación de los otros folds.
  • Aumento de datos: volteo horizontal, rotación de ±15°, traslación del 10 % y escala de 0,9 a 1,1, idénticos en las tres fases.

Resultados

El AUC es la probabilidad de que, tomando una paciente con pCR y otra sin ella, el modelo puntúe más alto a la primera; 0,5 equivale al azar. La referencia de cohorte asigna a cada paciente la tasa de pCR de su cohorte en entrenamiento, sin mirar la imagen.

Conjunto Unidad AUC Referencia de cohorte
Validación interna (5 folds, media ± desviación) paciente 0,582 ± 0,034 0,549
Test (176 pacientes, IC 95 % por bootstrap) paciente 0,522 [0,442; 0,603] 0,544

Test con el umbral por paciente (0,352):

Valor
Matriz de confusión 5 VP, 48 FN, 114 VN, 9 FP
Sensibilidad 9,4 %
Especificidad 92,7 %
Exactitud equilibrada 0,511

AUC en test por cohorte: Duke 0,59 (42 pacientes), I-SPY1 0,36 (35) e I-SPY2 0,55 (99).

Lectura de los resultados:

  • La diferencia con la referencia de cohorte en test es de −0,022 [−0,102; 0,059]. El modelo no supera a esa referencia, y parte de la señal que capta puede ser la identidad de la cohorte y no el tumor.
  • Esta es la segunda evaluación sobre el mismo conjunto de test. Una versión anterior, más ancha, obtuvo un AUC de 0,591 [0,508; 0,673] en la primera; el modelo final se eligió por la validación interna, no por el test.

Limitaciones

  • Señal débil: con el umbral elegido detecta aproximadamente 1 de cada 10 pacientes con pCR.
  • Usa unos 10 cortes 2D por paciente, no el volumen completo ni una segmentación del tumor.
  • La imagen es la única entrada; no se usan variables clínicas.
  • Solo se ha evaluado en tres cohortes públicas, y el rendimiento varía mucho entre ellas. No se ha probado en otros hospitales ni con otros escáneres.
  • Las probabilidades están calibradas en validación interna. En test su escala puede diferir, porque el ensemble de 5 modelos produce probabilidades menos dispersas que el ensemble anidado usado para calibrar.

Licencia y atribución

El modelo se distribuye bajo CC BY-NC 4.0, la misma licencia que las imágenes con las que se entrenó: no se permite el uso comercial. El código del repositorio tiene su propia licencia.

Si usas el modelo, cita el dataset:

Fridman et al. BreastDCEDL: a standardized deep learning-ready breast DCE-MRI dataset of 2,070 patients. Scientific Data, 2026. doi:10.1038/s41597-026-06589-6

y las colecciones originales de TCIA: I-SPY1, I-SPY2 y Duke Breast Cancer MRI.

Downloads last month
5
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support