Se requiere una suscripción a JoVE para ver este contenido. Inicie sesión o comience su prueba gratuita.

Artículo de método

Análisis cuantitativo automatizado de la vasculatura pulmonar en hernia diafragmática congénita utilizando aprendizaje profundo

117 vistas

DOI:

10.3791/70428

8 de mayo de 2026

En este artículo

Resumen

Este protocolo describe una cadena de aprendizaje profundo totalmente automatizada para segmentar y analizar la vasculatura pulmonar en tomografías computarizadas neonatales. El método permite la evaluación morfométrica cuantitativa del desarrollo vascular en sujetos de hernia diafragmática congénita (CDH) y de control, apoyando la caracterización no invasiva de la hipoplasia pulmonar y el subdesarrollo vascular.

Resumen

La hernia diafragmática congénita (HCD) se caracteriza por hipoplasia pulmonar y subdesarrollo vascular, lo que conduce a un alteración del intercambio gaseoso y una alta mortalidad neonatal. La evaluación precisa y cuantitativa de la vasculatura pulmonar es crucial para comprender la gravedad de la enfermedad, pero la segmentación manual de redes vasculares tridimensionales en imágenes médicas es laboriosa y depende del operador.

Este protocolo presenta un método totalmente automatizado basado en aprendizaje profundo para la segmentación de vasos pulmonares y el análisis morfométrico mediante tomografía computarizada postnatal (TC). La cadena incluye pasos de preprocesamiento estandarizados —conversión a unidades de Hounsfield, ventanas, remuestreo isotrópico y ecualización adaptativa de histogramas con contraste limitado (CLAHE)— para normalizar los datos de imagen y mejorar la visibilidad vascular. A continuación, se entrena una arquitectura de red neuronal convolucional (CNN) U-Net para segmentar la vasculatura pulmonar, seguida de un algoritmo de esqueletización tridimensional para cuantificar parámetros morfométricos como el número de ramas, la longitud media de las ramas y la profundidad generacional.

Los resultados representativos demuestran que el modelo propuesto alcanza una alta precisión de segmentación, siendo la configuración de aprendizaje por transferencia el que ofrece el mejor rendimiento. El análisis morfométrico cuantitativo revela una complejidad vascular marcadamente reducida en la HCD en comparación con los pulmones control, lo que es coherente con las características patológicas conocidas de la hipoplasia pulmonar.

Este enfoque automatizado permite la evaluación reproducible, cuantitativa y no invasiva de la morfología vascular pulmonar en la CDH. El método puede adaptarse a otras modalidades de imagen y aplicarse a estudios sobre el desarrollo pulmonar fetal y neonatal, facilitando la investigación traslacional y la integración clínica futura.

Introducción

La hernia diafragmática congénita (HCD) es una anomalía congénita potencialmente mortal caracterizada por un defecto diafragmático, que conduce a la hernia de vísceras abdominales enel tórax 1,2. Esta compresión física afecta gravemente el desarrollo pulmonar, provocando hipoplasia pulmonar e hipertensión pulmonar persistente (HPP), que son los principales factores de morbilidad y mortalidad. Además de la hipoplasia pulmonar y el subdesarrollo vascular, el deterioro del desarrollo cardíaco y la disfunción ventricular también han demostrado influir significativamente en los resultados clínicos en neonatos con DHC. La fisiopatología subyacente implica un desarrollo anormal tanto de las vías respiratorias como del lecho vascular pulmonar, lo que conduce a una reducción del número de vasos, aumento de la muscularización de las arteríolas y, en consecuencia, una resistencia vascular elevada 3,4. Se necesitan biomarcadores objetivos y cuantitativos para estratificar con precisión el riesgo, guiar intervenciones y monitorizar la respuesta al tratamiento en pacientes conCDH 5. Un aspecto fundamental de esta evaluación es el análisis detallado de la vasculatura pulmonar, que puede aportar información sobre la extensión de la hipoplasia pulmonar y la capacidad funcional de los pulmones. Los avances en las técnicas de imagen, especialmente en la tomografía computarizada (TC), han mejorado nuestra capacidad para visualizar y cuantificar la vasculatura pulmonar con grandetalle 6,7.

Aunque la Tomografía Computarizada (TC) postnatal proporciona detalles anatómicos de alta resolución de los pulmones, el análisis del intrincado árbol vascular pulmonar sigue siendo un reto. Los métodos existentes para la segmentación vascular suelen basarse en técnicas tradicionales de procesamiento de imagen que requieren una intervención manual significativa, son susceptibles a artefactos de imagen y pueden no ser robustos ante las graves distorsiones anatómicas enCDH 7,8,9,10. El aprendizaje profundo, especialmente las redes neuronales convolucionales (CNN) como la arquitectura U-Net, ha logrado un éxito notable en la segmentación automatizada de imágenes médicas. Sin embargo, muchos modelos existentes se entrenan en sujetos sanos u otros contextos de enfermedades, limitando su aplicabilidad a anomalías congénitas como laCDH 10,11,12,13.

A pesar de estos avances, siguen existiendo lagunas significativas en la literatura. Muchos estudios se han centrado en individuos sanos o en condiciones pulmonares específicas, con poca atención a anomalías congénitas como laCDH 12. Además, aunque los modelos de aprendizaje profundo han mostrado una mejora en el rendimiento, a menudo requieren grandes conjuntos de datos anotados para el entrenamiento, que no siempre están disponibles para condiciones raras como la CDH. Además, los modelos existentes no han abordado completamente el desafío de distinguir entre diferentes tipos de vasos pulmonares (por ejemplo, arterias y venas) en presencia de distorsiones anatómicas graves causadas por la HCD. Esta limitación subraya la necesidad de más investigaciones para desarrollar modelos más robustos que puedan segmentar y analizar con precisión la vasculatura pulmonar en pacientes con CDH.

Este estudio pretende abordar estas carencias desarrollando y validando un marco de aprendizaje profundo totalmente automatizado para segmentar la vasculatura pulmonar y extraer características morfométricas cuantitativas de las tomografías computarizadas. Una innovación clave de nuestro enfoque es entrenar nuestro modelo con un conjunto combinado de pacientes con HCD y control, lo que le permite aprender una representación robusta tanto de patrones vasculares normales como patológicos. Aunque la TC implica radiación ionizante, lo que la hace inadecuada para el cribado longitudinal rutinario, este estudio sirve como una prueba de concepto crucial. El objetivo principal de este estudio es establecer que la cuantificación radiológica automatizada de la estructura vascular es factible y puede diferenciar de forma fiable a los pacientes con CDH de los controles. El éxito en este ámbito proporciona la validación necesaria para adaptar este marco cuantitativo a modalidades de imagen libres de radiación, como la Resonancia Magnética (RM), para futuras aplicaciones clínicas.

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Protocolo

Todos los procedimientos que involucraron a participantes humanos se llevaron a cabo de acuerdo con las directrices del comité de ética en investigación humana institucional y fueron aprobados por la Junta de Revisión Institucional (IRB #2017-6361). El estudio se realizó en cumplimiento con las normas regulatorias aplicables. Los datos de los pacientes se recopilaron retrospectivamente y se desidentificaron antes del análisis. Una visión general del sistema desarrollado se muestra en la Figura 1.

1. Preprocesamiento de imágenes

  1. Carga las tomografías computarizadas en bruto de pacientes neonatales en formato DICOM en el entorno laboral.
    1. Abre el software de análisis de imágenes médicas y crea un nuevo espacio de trabajo para proyectos.
    2. Haz clic en Archivo > Importar > serie DICOM .
    3. Navega a la carpeta que contiene la tomografía torácica neonatal en formato DICOM y selecciona la serie completa de imágenes.
    4. Verifica que todas las secciones de la serie estén correctamente detectadas y ordenadas en función de los metadatos de adquisición (por ejemplo, número de instancia).
    5. Confirma las dimensiones de la imagen, el espaciado de los vóxeles y el grosor de los cortes en el panel de metadatos para asegurar la consistencia entre los escaneos.
    6. Carga la serie en el espacio de trabajo e inspecciona visualmente las vistas axiales, coronales y sagitales para confirmar la orientación correcta y la ausencia de errores de carga.
  2. Convierte archivos DICOM al formato NIfTI usando software de código abierto para facilitar la manipulación y el análisis.
    1. Abre una ventana de terminal dentro del entorno de computación científica.
    2. Navega al directorio que contiene la serie de imágenes DICOM usando el comando cd.
    3. Ejecuta la herramienta de conversión de DICOM a NIfTI usando la siguiente estructura de comandos: dcm2niix -z y -f output_filename -o /output_directory /input_directory
    4. Asegúrate de que la compresión esté habilitada (-z y) para generar un archivo .nii.gz comprimido.
    5. Verifica que el archivo de salida se haya generado correctamente en el directorio de salida especificado.
    6. Abre el archivo NIfTI convertido en un visor de imágenes médicas e inspecciona visualmente los planos axial, coronal y sagital para confirmar la orientación espacial correcta y la integridad de la imagen.
    7. Confirma el espaciado de los vóxeles y las dimensiones de la imagen para asegurar la consistencia entre todos los sujetos antes del preprocesado.
  3. Convierte las intensidades de imagen a Unidades de Hounsfield (HU) usando metadatos específicos del escáner o fórmulas estándar.
    1. Extrae los parámetros de metadatos DICOM Rescale Slope y Rescale Intercept del encabezado de imagen para cada escaneo.
    2. Para cada valor de intensidad vóxel (I_raw), calcula la Unidad de Hounsfield (HU) correspondiente usando la siguiente fórmula: HU = (pendiente de reescalado I_raw ×) + intercepto de reescala.
    3. Aplicar la conversión a todo el volumen de imagen 3D utilizando operaciones matriciales elemento por elemento dentro del entorno informático científico.
    4. Confirma la conversión correcta verificando que las regiones aéreas sean aproximadamente −1000 HEU y que las regiones de tejidos blandos estén dentro de los rangos fisiológicos esperados.
    5. Guarda el volumen convertido como un nuevo archivo NIfTI para preservar los datos originales.
  4. Aplica ventanas para resaltar los pulmones y los tejidos blandos. Ajusta el nivel de ventana (WL) a -400 HU y el ancho de ventana (WW) a 1500 HU.
    1. Abre el archivo NIfTI convertido en el software de visualización de imágenes.
    2. Navega hasta la pantalla de imagen o el panel de ajustes de intensidad.
    3. Selecciona la opción de ajuste de ventana/nivel .
    4. Ajusta manualmente el valor de Nivel de Ventana (WL) a -400 Unidades de Hounsfield (HU).
    5. Establece el valor de Ancho de Ventana (WW) a 1500 HU.
    6. Confirma y aplica la configuración para actualizar la visualización de la imagen.
    7. Verifica que el parénquima pulmonar y los vasos pulmonares sean claramente distinguibles de las estructuras óseas y mediastínicas antes de proceder con los pasos posteriores de preprocesamiento.
  5. Realizar remuestreo isotrópico para asegurar que las dimensiones de los vóxeles sean uniformes (por ejemplo, 1 mm × 1 mm × 1 mm) mediante interpolación trilineal.
    1. Carga la imagen NIfTI en el entorno Python usando una biblioteca de procesamiento de imágenes médicas.
    2. Extrae el espaciado original de los voxels de los metadatos de la cabecera de la imagen.
    3. Defina el espaciado isotrópico del objetivo como (1,0, 1,0, 1,0) mm.
    4. Calcular las nuevas dimensiones de la imagen usando la fórmula: new_size = original_size × (original_spacing / target_spacing)
    5. Inicializar un objeto de remuestreo.
    6. Configura el método de interpolación en interpolación trilineal.
    7. Asigna el espaciado de los vóxeles objetivo (1,0 mm × 1,0 mm × 1,0 mm).
    8. Establece el nuevo tamaño de imagen calculado.
    9. Conserva la dirección original de la imagen y los metadatos de origen.
    10. Ejecuta la operación de remuestreo.
    11. Guarda la imagen remuestreada en formato NIfTI para los siguientes pasos de preprocesado.
    12. Verifica el espaciado isotrópico comprobando las dimensiones actualizadas del vóxel en el encabezado de la imagen antes de continuar.
  6. Aplicar la Ecualización Adaptativa de Histograma Limitado por Contraste (CLAHE) para mejorar el contraste y la visibilidad de las estructuras vasculares.
    1. Importa la biblioteca de procesamiento de imágenes necesaria al entorno Python.
    2. Convertir el volumen 3D CT remuestreado a formato en escala de grises de 8 bits si es necesario, usando normalización lineal de intensidad para mapear el rango seleccionado de HU a 0–255.
    3. Procesa el volumen CT corte por corte en el plano axial para aplicar CLAHE en 2D.
    4. Inicializa el objeto CLAHE usando los siguientes parámetros: clipLimit = 2.0, tileGridSize = (8, 8).
    5. Para cada corte axial, aplica la función CLAHE para mejorar el contraste local.
    6. Reconstruye los cortes procesados en un volumen 3D tras la aplicación de CLAHE.
    7. Guarda el volumen con contraste mejorado en formato NIfTI para segmentaciones posteriores.
    8. Verifica visualmente que los vasos pulmonares sean más distinguibles del parénquima circundante sin una amplificación excesiva del ruido antes de proceder.
  7. Inspecciona visualmente un subconjunto de imágenes preprocesadas para garantizar la calidad y consistencia en todo el conjunto de datos.
    1. Selecciona al azar al menos el 10% del conjunto total de datos para la evaluación manual de la calidad.
    2. Abre cada volumen preprocesado seleccionado en el visor de imágenes médicas.
    3. Inspeccionar los planos axial, coronal y sagital para verificar lo siguiente: orientación espacial correcta; Ausencia de artefactos de truncamiento; Aplicación adecuada de los parámetros de ventanas; Remuestreo isotrópico exitoso (espaciado uniforme de vóxeles); Mejora adecuada del contraste después de CLAHE.
    4. Confirmar que los vasos pulmonares son claramente distinguibles de las estructuras parenquimales adyacentes sin una amplificación excesiva del ruido.
    5. Compara imágenes preprocesadas con volúmenes originales convertidos en HU para asegurarte de que los pasos de preprocesamiento no introdujeron distorsiones ni inconsistencias anatómicas.
    6. Documenta cualquier error de preprocesamiento y repite el preprocesamiento para los casos afectados si es necesario.

2. Anotación manual

  1. Seleccione un subconjunto representativo de tomografías computarizadas tanto de pacientes de control como de pacientes con CDH para usarlas en anotaciones manuales. Asegurar una distribución equilibrada de la variabilidad anatómica.
    1. Identificar todas las tomografías computarizadas preprocesadas elegibles tanto de las cohortes de control como de CDH.
    2. Excluye los escáneres con artefactos graves de movimiento o cobertura pulmonar incompleta.
    3. Selecciona aleatoriamente un número predefinido de casos de cada grupo para asegurar una representación equilibrada.
    4. Asegurar la inclusión de casos que demuestren una variedad de variabilidad anatómica, incluyendo diferencias en el volumen pulmonar, la densidad vascular y la severidad del desplazamiento mediastinal.
    5. Confirmar que los casos seleccionados de CDH presentan distintos grados de hipoplasia pulmonar, cuando esté disponible.
    6. Documenta los identificadores de caso seleccionados antes de proceder con la anotación manual.
  2. Carga las imágenes preprocesadas de NIfTI en una herramienta de anotación de imágenes médicas 3D.
    1. Abre el software de anotación de imágenes médicas 3D.
    2. Crea un nuevo proyecto o una sesión de segmentación.
    3. Haz clic en Archivo > Abrir imagen (o opción de importación equivalente).
    4. Navega al directorio que contiene el archivo preprocesado NIfTI (.nii o .nii.gz) y selecciona la imagen.
    5. Confirma la carga exitosa verificando la orientación correcta de la imagen en las vistas axial, coronal y sagital.
    6. Ajusta la configuración de pantalla si es necesario para optimizar la visualización.
    7. Crea una nueva etiqueta de segmentación o capa de máscara para almacenar anotaciones vasculares manuales.
    8. Guarda el archivo del proyecto antes de iniciar la anotación manual.
  3. Utilizando vistas axiales, coronales y sagitales, segmenta manualmente la vasculatura pulmonar delineando las estructuras vasculares en cada corte relevante.
    1. Activa la capa de etiquetas de segmentación creada en el paso 2.2.
    2. Selecciona la herramienta de dibujo manual o pincel dentro del software de anotación.
    3. Ajusta el tamaño del cepillo dinámicamente según el diámetro del recipiente para asegurar un trazado preciso de los límites.
    4. Utilizando cortes axiales como plano de referencia principal, delinea manualmente las estructuras vasculares pulmonares visibles, incluyendo tanto ramas arteriales como venosas.
    5. Excluye estructuras no vasculares como bronquios, paredes de las vías respiratorias y tejidos mediastinales.
    6. Desplaza sección por corte por todo el volumen pulmonar para asegurar una anotación continua de cada rama vascular.
    7. Valida cruzadamente cada región anotada en vistas coronales y sagitales para confirmar la consistencia anatómica y evitar discontinuidades.
    8. Incluir recipientes hasta las ramas más pequeñas y visualmente distinguibles, evitando la sobresegmentación de artefactos de ruido.
    9. Renderizar periódicamente una vista previa 3D de la segmentación para verificar la continuidad espacial del árbol vascular.
    10. Guarda la máscara de segmentación completada en formato NIfTI antes de proceder al entrenamiento del modelo.
  4. Anota solo los vasos pulmonares, excluyendo el corazón, los bronquios y las estructuras no pulmonares principales.
    1. Identifica las arterias y venas pulmonares dentro del parénquima pulmonar utilizando las cortes axiales como referencia principal.
    2. Incluye ramas vasculares intraparenquimales que se originan en las arterias pulmonares principales y se extienden distalmente dentro de los campos pulmonares.
    3. Excluye las cámaras cardíacas, las aurículas, los ventrículos y los grandes vasos.
    4. Excluye las estructuras de las vías respiratorias, incluidos los bronquios y las paredes bronquiales, distinguiéndolas de los vasos basándose en la morfología y las características luminales.
    5. Evita etiquetar tejidos blandos mediastinales, pleuras y estructuras de la pared torácica.
    6. Utiliza vistas multiplanares (axiales, coronales, sagitales) para confirmar que las estructuras anotadas siguen la continuidad vascular esperada y los patrones de ramificación.
    7. Cuando la diferenciación vaso-vía aérea es incierta, verifica la continuidad entre las secciones adyacentes para confirmar la trayectoria vascular antes de marcar.
    8. Realizar una representación 3D final del volumen segmentado para asegurarse de que solo se haya incluido el árbol vascular pulmonar.
  5. Si está disponible, consulte a expertos en imagen clínica para validar regiones ambiguas durante la anotación.
    1. Identificar regiones en las que los límites de los vasos sean inciertos debido al bajo contraste, la distorsión anatómica o la proximidad a los bronquios o estructuras mediastinales.
    2. Marca estas regiones dentro del software de anotación usando una herramienta temporal de etiqueta o comentario.
    3. Presenta las zonas marcadas a un experto en imagen clínica.
    4. Revisa conjuntamente las vistas axial, coronal y sagital para determinar si la estructura representa la vasculatura pulmonar.
    5. Modifica la máscara de segmentación según el consenso de los expertos.
    6. Documenta cualquier región corregida antes de finalizar la máscara de la verdad en el terreno.
  6. Realizar la validación entre evaluadores haciendo que al menos dos anotadores independientes revisen y perfeccionen cada segmentación. En caso de desacuerdo, se alcanza un consenso mediante discusión o arbitraje.
    1. Asignar cada tomografía seleccionada a dos anotadores independientes con experiencia en análisis de imagen torácica.
    2. Asegúrate de que los anotadores realicen la segmentación de forma independiente y estén cegados ante los resultados de los demás.
    3. Tras completar las anotaciones independientes, compara las máscaras de segmentación usando una métrica de solapamiento cuantitativa (por ejemplo, coeficiente de similitud de Dice).
    4. Identifica las regiones de desacuerdo calculando las diferencias voxel entre máscaras.
    5. Revisa las regiones discrepantes conjuntamente en los planos axial, coronal y sagital.
    6. Alcanzar consenso mediante una discusión estructurada.
    7. Si persiste el desacuerdo, implica a un tercer revisor senior para arbitrar la decisión final.
    8. Guarda la máscara de segmentación por consenso como la etiqueta final de la verdad fundamental para el entrenamiento de modelos.
  7. Guarda las máscaras anotadas del recipiente en la misma resolución y espacio que las imágenes originales de TC. Guárdalos en formato NIfTI usando convenciones de nombres consistentes.
    1. Asegúrese de que la máscara de segmentación de consenso final se almacene como un mapa binario de etiquetas, donde a los vóxeles vasculares se les asigna un valor 1 y a los vóxeles de fondo se les asigna un valor 0.
    2. Confirma que la máscara de segmentación conserva el mismo espacio vóxel, dimensiones de imagen, origen y matriz de orientación que la imagen CT preprocesada correspondiente.
    3. Exporta la máscara de segmentación en formato NIfTI (.nii o .nii.gz) usando la función de exportación del software de anotación.
    4. Utiliza una convención de nombres coherente estructurada de la siguiente manera: SubjectID_Group_VesselMask.nii.gz; (por ejemplo, CDH_012_VesselMask.nii.gz).
    5. Almacena las máscaras en un directorio dedicado paralelo al conjunto de datos de imágenes para mantener la coherencia de emparejamiento.
    6. Realizar una verificación final recargando tanto la imagen CT como su correspondiente máscara para confirmar la alineación espacial perfecta antes del entrenamiento del modelo.
  8. Utiliza estas segmentaciones etiquetadas manualmente como la verdad fundamental para el entrenamiento y evaluación de modelos.

3. Entrenamiento y validación de modelos

  1. Organiza el conjunto de datos en tres subconjuntos: conjuntos de entrenamiento, validación y pruebas. En este estudio, utiliza 35 casos de control y 20 casos de CDH para entrenamiento, 5 de control y 10 casos de CDH para validación, y espera el resto para pruebas independientes.
    1. Compila todas las imágenes de CT preprocesadas y sus correspondientes máscaras de vaso de consenso en un único conjunto de datos.
    2. Realizar la división de conjuntos de datos a nivel de paciente para evitar fugas de datos entre subconjuntos.
    3. Asigna aleatoriamente 35 casos de control y 20 casos CDH al conjunto de entrenamiento.
    4. Asigna aleatoriamente 5 casos de control y 10 casos CDH al conjunto de validación.
    5. Asignar todos los casos restantes a un conjunto de pruebas independiente de retención que no se acceda durante el entrenamiento del modelo o el ajuste de hiperparámetros.
    6. Asegúrese de que cada imagen de TC y su correspondiente máscara de segmentación permanezcan emparejadas durante todo el proceso de división.
    7. Verifica la distribución de clases en cada subconjunto para mantener la representación tanto de los casos de control como de CDH.
    8. Documentar la asignación final de identificadores de sujeto para su reproducibilidad.
  2. Normaliza los valores de intensidad de todas las imágenes entre 0 y 1 para mejorar la convergencia de redes neuronales durante el entrenamiento.
    1. Para cada volumen de TC, primero se restringen los valores de intensidad a un rango predefinido de Unidades de Hounsfield para eliminar valores extremos.
    2. Aplica recorte de intensidad de modo que los valores inferiores a −1000 HU se fijen a −1000 HU y los valores superiores a 500 HU se fijen en 500 HU.
    3. Realizar la normalización min–max de forma independiente para cada volumen usando la siguiente transformación: Valor normalizado = (I − I_min) / (I_max − I_min), donde I_min y I_max corresponden a los valores de intensidad mínima y máxima recortados del volumen.
    4. Aplicar la normalización al volumen 3D completo usando operaciones elemento por elemento dentro del entorno computacional.
    5. Verifica que todas las intensidades vóxeles estén dentro del intervalo [0, 1] antes de introducir los datos en la red neuronal.
    6. Asegúrate de que los parámetros de normalización se deriven de forma independiente para cada imagen para evitar fugas de información entre conjuntos de entrenamiento, validación y prueba.
  3. Implementa una arquitectura de red neuronal convolucional U-Net usando un framework de aprendizaje profundo como PyTorch o TensorFlow.
    1. Crea un nuevo proyecto en un entorno de desarrollo de aprendizaje profundo y establece una semilla aleatoria fija para la reproducibilidad.
    2. Definamos una arquitectura U-Net 2D (Figura 2) para segmentación binaria con una estructura codificador-decodificador y conexiones de salto.
    3. Configura la entrada del modelo como cortes CT de canal único (escala de grises) y establece la salida del modelo como un mapa de probabilidad de canal único que representa la verosimilitud del recipiente.
    4. Configura la capa final para que utilice una función de activación sigmoide que produzca valores en el rango [0, 1].
    5. Define la función de pérdida para la segmentación binaria (por ejemplo, entropía cruzada binaria) e inicializa un optimizador.
    6. Especifica los hiperparámetros de entrenamiento, incluyendo el tamaño del lote, el número de épocas y la tasa de aprendizaje, y registra estos valores para los informes.
    7. Prepara cargadores de datos para alimentar los conjuntos de datos de entrenamiento y validación en el modelo mediante barajado y agrupamiento constantes.
    8. Guarda la definición completa del modelo y la configuración de hiperparámetros para la reproducibilidad.
  4. Configura el modelo con una estructura codificador-decodificador, incorporando conexiones de salto y capas de normalización por lotes para mejorar la precisión de segmentación.
    1. Definamos un codificador formado por bloques convolucionales repetidos. Asegúrate de que cada bloque incluya:
      Dos capas convolucionadas 2D consecutivas (tamaño del núcleo 3 × 3, relleno = 1)
      Normalización por lotes aplicada tras cada convolución
      Activación de la Unidad Lineal Rectificada (ReLU)
    2. Aplica 2 × 2 de pooling máximo con un paso de 2 después de cada bloque de codificador para reducir progresivamente la resolución espacial.
    3. Duplica el número de canales de feature tras cada paso de downswing.
    4. Defina el decodificador usando convolución transpuesta (núcleo 2 × 2, paso 2) para el muestreo adicional.
    5. Concatenate feature mapea desde la capa codificadora correspondiente a la capa decodificadora mediante conexiones de salto para preservar la información espacial.
    6. Aplica dos capas convolucionales con normalización por lotes y activación de ReLU tras cada paso de concatenación.
    7. Utiliza una capa final de convolución 1 × 1 para mapear características a una salida de un solo canal.
    8. Aplicar una función de activación sigmoide para producir un mapa de probabilidad voxel para la segmentación de vasos.
  5. Tren tres configuraciones del modelo:
    1. Modelo base (entrenamiento desde cero)
      1. Inicializar los pesos U-Net de forma aleatoria (por ejemplo, inicialización He).
      2. Utiliza solo el conjunto de datos de arterias-venas anotado manualmente como entrada.
      3. Redimensiona las imágenes de entrada a 512 × 512 píxeles.
      4. Normalizar los valores de intensidad al rango [0,1].
      5. Configura el tamaño del lote a 8 (o máximo permitido por la memoria GPU).
      6. Usa optimizador Adam con tasa de aprendizaje = 1 × 10⁻4.
      7. Utiliza la Entropía Cruzada Binaria (para segmentación binaria) o la Pérdida de Entropía Cruzada (para la clasificación arteria-vena).
      8. Entrena durante 30 épocas.
      9. Monitoriza la pérdida de validación después de cada época.
      10. Guarda los pesos del modelo correspondientes a la menor pérdida de validación.
      11. En PyTorch, sigue los pasos 3.5.1.13–3.5.1.14.
      12. Define optimizador: torch.optim.Adam(model.parameters(), lr=1e-4)
      13. Define pérdida: torch.nn.BCEWithLogitsLoss() o torch.nn.CrossEntropyLoss()
      14. Usa model.train() durante el entrenamiento y model.eval() durante la validación.
    2. Modelo de segmentación-entrada (entrada de máscara auxiliar de recipiente)
      1. Modifica la capa de entrada para aceptar dos canales:
        Canal 1: Imagen CT
        Canal 2: Máscara binaria de segmentación de vasos
      2. Concatena la imagen CT y la máscara del recipiente a lo largo de la dimensión del canal antes de introducirlas en la red.
      3. Mantén la arquitectura idéntica al modelo base.
      4. Usa el mismo optimizador, tasa de aprendizaje, tamaño de lote y número de época que en el paso 3.5.1.
      5. Guarda los pesos con mejor rendimiento basándote en la validación de la puntuación F1.
    3. Modelo de aprendizaje por transferencia (inicialización preentrenada)
      1. Carga los pesos U-Net preentrenados entrenados sobre un conjunto genérico de segmentación de embarcaciones (tal como se describe en el informe de progreso).
      2. Congelar capas de codificador durante las primeras 5 épocas (paso opcional de estabilización).
      3. Descongela todas las capas y continúa ajustando para las épocas restantes.
      4. Usa tasa de aprendizaje reducida = 5 × 10⁻5 durante el ajuste fino.
      5. Entrena durante 30 épocas en total.
      6. Aplica el flipping horizontal como aumento de datos durante el entrenamiento.
      7. Guarda el modelo con la puntuación F1 de validación más alta.
  6. Utiliza la pérdida binaria de entropía cruzada y el optimizador de Adam con una tasa de aprendizaje inicial de 0,001. Reducir la tasa de aprendizaje de forma adaptativa si la pérdida de validación se estanca.
    1. Definición de la función de pérdida
      1. Para la segmentación binaria de vasos, utiliza la pérdida binaria de entropía cruzada con logitas.
      2. En PyTorch, define: criterion = torch.nn.BCEWithLogitsLoss()
      3. Si se realiza una clasificación arteria-vena multiclase, usa: criterion = torch.nn.CrossEntropyLoss()
    2. Definición del optimizador
      1. Utiliza el optimizador Adam con una tasa de aprendizaje inicial de 0,001.
      2. En PyTorch: optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    3. Posibilitación de la reducción de la tasa de aprendizaje adaptativo
      1. Implementa un programador de tasa de aprendizaje para reducir la tasa de aprendizaje cuando la pérdida de validación deje de mejorar.
      2. Usa el planificador ReduceLROnPlateau.
      3. En PyTorch: planificador = torch.optim.lr_scheduler. ReduceLROnPlateau(
        optimizador,
        modo='min',
        factor=0,5,
        paciencia=5,
        verbose=True
        )
      4. Después de cada fase de validación, llama: scheduler.step(validation_loss)
    4. Configuración del bucle de entrenamiento.
      1. Para cada época, sigue los pasos 3.6.4.2–3.6.4.7:
      2. Establecer modelo en modo de entrenamiento: model.train()
      3. Realiza un pase hacia adelante.
      4. Pérdida de cómputo.
      5. Retropropagación: pérdida.backward()
      6. Actualizaciones de pesos: optimizer.step()
      7. Cero gradientes antes de la siguiente iteración: optimizer.zero_grad()
      8. Tras la fase de entrenamiento, se cambia al modo de evaluación usando model.eval() y calcula la pérdida de validación.
    5. Parar temprano (opcional pero recomendado)
      1. Si la pérdida de validación no mejora durante 10 épocas consecutivas, detén el entrenamiento para evitar el sobreajuste.
  7. Aplicar técnicas de aumento de datos como rotaciones aleatorias, volteos y deformaciones elásticas para aumentar la robustez y reducir el sobreajuste.
    1. Definición de una tubería de aumento
      1. Aplica las mejoras solo al conjunto de datos de entrenamiento.
      2. Aplicar transformaciones espaciales idénticas tanto a la imagen CT como a su correspondiente máscara de segmentación.
    2. Rotaciones aleatorias.
      1. Aplica rotaciones aleatorias en el plano entre -15° y +15°.
      2. En PyTorch (usando visión con antorcha o Albumentaciones): RandomRotation(degrees=15)
    3. Volteretas horizontales y verticales.
      1. Aplica un giro horizontal con probabilidad p = 0,5.
      2. Aplica un flip vertical con probabilidad p = 0,5 (si es anatómicamente aceptable).
    4. Deformación elástica.
      1. Aplica una transformación elástica para simular la variabilidad anatómica.
      2. Utiliza parámetros de deformación pequeños para evitar distorsiones poco realistas.
    5. Ejemplo de implementación (PyTorch + Albumentas)
      1. Define la canalización de transformación antes del entrenamiento:
        transform = A.Compose([
        A. Rotar(límite=15, p=0,5),
        A.Volteo Horizontal(p=0,5),
        A.ElasticTransform(alpha=1, sigma=50, alpha_affine=10, p=0.3)
        ])
      2. Aplica la transformación dentro del método de conjunto de datos __getitem__()) para asegurar la transformación sincronizada de imagen y máscara.
    6. Validación y conjuntos de prueba
      1. No apliques aumentos a conjuntos de datos de validación o prueba.
      2. Usa solo normalización y redimensionamiento para estos conjuntos.
    7. Control de calidad.
      1. Inspecciona visualmente las muestras aumentadas antes del entrenamiento para asegurar la plausibilidad anatómica.
      2. Verifica que las mascarillas permanezcan alineadas con las imágenes transformadas.
  8. Entrenar el modelo para un número fijo de épocas o hasta la convergencia, monitorizando el rendimiento en el conjunto de validación después de cada época.
    1. Definición de duración del entrenamiento
      1. Fija el número máximo de épocas de entrenamiento en 30.
      2. Alternativamente, continúa entrenando hasta que se cumplan los criterios de convergencia (véase Paradas Tempranas más abajo).
    2. Bucle de entrenamiento
      1. Para cada época, sigue los pasos 3.8.2.2–3.8.2.10:
      2. Pon el modelo en modo entrenamiento: model.train()
      3. Itera sobre todos los mini-lotes del conjunto de entrenamiento.
      4. Carga un lote de imágenes CT y las máscaras correspondientes.
      5. Realiza un pase hacia adelante.
      6. Calcular la pérdida usando la función de pérdida definida.
      7. Gradientes de retropropagación: loss.backward()
      8. Actualizar pesos del modelo: optimizer.step()
      9. Restablecer gradientes antes del siguiente lote: optimizer.zero_grad()
      10. Calcula la pérdida media de entrenamiento para la época.
    3. Paso de validación (después de cada época)
      1. Cambiar modelo a modo de evaluación: model.eval()
      2. Desactivar el cálculo de gradientes: con torch.no_grad():
      3. Iterar sobre el conjunto de datos de validación.
      4. Realiza un pase hacia adelante.
      5. Pérdida de validación computada.
      6. Calcular métricas de rendimiento (puntuación F1, precisión, sensibilidad, puntuación DICE).
      7. Registrar pérdidas de validación y métricas.
    4. Ajuste de la tasa de aprendizaje
      1. Actualizar el planificador tras el paso de validación: scheduler.step(validation_loss)
    5. Criterios de convergencia
      1. Deja el entrenamiento si la pérdida de validación no mejora durante 10 épocas consecutivas (paradas tempranas), o si las métricas de rendimiento se estancan.
    6. Puntos de control de modelos
      1. Guarda los pesos del modelo cada vez que mejore la puntuación de validación F1.
      2. Conservar el modelo con mejor rendimiento para la evaluación final en el conjunto de pruebas.
    7. Tala
      1. Almacenar valores de pérdida de entrenamiento y validación por época.
      2. Grafica las curvas de aprendizaje (pérdida vs. época) para verificar el comportamiento de convergencia.
  9. Selecciona el modelo con mejor rendimiento en función de la puntuación F1 más alta en el conjunto de datos de validación.
    1. Seguimiento de métricas de validación
      1. Después de cada época, calcula la puntuación F1 en el conjunto de datos de validación.
      2. Guarda la puntuación F1 junto con el número de época correspondiente.
    2. Comparación de modelos
      1. Compara las puntuaciones de validación F1 en todas las épocas.
      2. Identifica la época que logró la puntuación más alta en la validación F1.
    3. Puntos de control de modelos
      1. Durante el entrenamiento, guarda los pesos del modelo cada vez que mejore la puntuación de validación en F1.
    4. Selección final del modelo
      1. Tras completar el entrenamiento, carga los pesos correspondientes a la puntuación más alta de validación en F1:
        model.load_state_dict(torch.load("best_model.pth"))
    5. Pruebas independientes
      1. Evalúa el modelo seleccionado solo una vez en el conjunto de datos de prueba independiente.
      2. No utilices el rendimiento del conjunto de pruebas para la selección de modelos.
    6. Reproducibilidad
      1. Registra el número de época seleccionado y las métricas de validación correspondientes.
      2. Corregir semillas aleatorias para asegurar la reproducibilidad.
  10. Guarda los pesos y configuraciones entrenados del modelo para tareas de segmentación posteriores.

4. Segmentación y esqueletización

  1. Carga el modelo entrenado de U-Net y aplícalo a los TAC preprocesados en el conjunto de pruebas independiente.
  2. Para cada escaneo, se genera una máscara de segmentación binaria de la vasculatura pulmonar aplicando un umbral a la salida probabilística del modelo.
  3. Inspeccionar visualmente los resultados de la segmentación para confirmar la plausibilidad anatómica, especialmente en regiones afectadas por la distorsión inducida por CDH.
  4. Convierte las máscaras binarias 3D segmentadas en representaciones esqueléticas usando un algoritmo de adelgazamiento 3D implementado en software.
  5. Etiqueta el esqueleto vascular usando un algoritmo de búsqueda en amplitud, designando el tronco pulmonar como nodo raíz y asignando niveles de generación a cada rama según la conectividad.
  6. Eliminar componentes pequeños y desconectados o ramas espurias que probablemente se deban a ruido o errores de segmentación, utilizando un umbral mínimo de tamaño vóxel o longitud de rama.
  7. Guarda las estructuras esqueletizadas en formatos 3D de malla o gráficos compatibles (por ejemplo, VTK o SWC) para un análisis morfométrico adicional.

5. Extracción de características morfométricas

  1. Carga los gráficos vasculares esqueletizados generados a partir de las imágenes segmentadas de TC.
  2. Identifica todas las ramas individuales recorriendo la estructura del grafo entre los puntos de bifurcación y los nodos terminales.
  3. Calcula el número total de ramas sumando todos los segmentos identificados dentro del gráfico vascular.
  4. Calcular la longitud de cada rama sumando las distancias euclidianas entre vóxeles conectados a lo largo del esqueleto.
  5. Determina la longitud media de las ramas promediando las longitudes de todas las ramas en el esqueleto de cada sujeto.
  6. Asignar niveles de generación a cada rama comenzando desde la arteria pulmonar principal como generación 0 e incrementando uno en cada bifurcación usando un recorrido en ancho hacia adelante.
  7. Calcular el número máximo de generaciones distales identificando el camino más largo desde el nodo raíz hasta cualquier rama terminal.
  8. Calcula el número máximo de generaciones proximales identificando el camino más largo desde cualquier rama periférica de vuelta a la raíz.
  9. Almacenar todas las características morfométricas en una hoja de cálculo estructurada o formato de base de datos (por ejemplo, CSV o SQL) con identificadores de sujeto, grupo de diagnóstico y métricas extraídas.
  10. Inspecciona visualmente un subconjunto de esqueletos y las correspondientes características morfométricas para confirmar la precisión y la plausibilidad biológica.

6. Análisis de clasificación

  1. Importa el conjunto de datos estructurado que contiene características morfométricas (por ejemplo, recuento total de ramas, longitud media de rama, profundidad de generación distal y proximal) y las etiquetas diagnósticas correspondientes (CDH o control).
  2. Divide el conjunto de datos en conjuntos de entrenamiento y prueba usando muestreo estratificado para mantener la distribución de clases.
  3. Implementa clasificadores de Bosque Aleatorio y Árbol de Decisión usando una biblioteca estándar de aprendizaje automático.
  4. Configura parámetros del modelo como el número de estimadores (por ejemplo, 100 árboles para Random Forest) y la profundidad máxima en función del rendimiento de validación cruzada.
  5. Entrena cada clasificador usando el subconjunto de entrenamiento de los datos.
  6. Evalúa el rendimiento en la clasificación del conjunto de pruebas de retención usando la precisión como métrica principal.
  7. Generar matrices de confusión para evaluar las tasas de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos para la detección de CDH.
  8. Compara el rendimiento de los clasificadores de Bosque Aleatorio y Árbol de Decisión, y selecciona el modelo con mayor precisión para informar resultados representativos.
  9. Visualiza los resultados de la clasificación usando gráficos de barras, curvas ROC o árboles de decisión si procede, y guarda los resultados para incluirlos en las figuras.
  10. Documenta todos los parámetros del modelo, métricas de rendimiento y cualquier preprocesamiento aplicado a los datos para garantizar la reproducibilidad.

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Resultados

El modelo de aprendizaje profundo entrenado con aprendizaje por transferencia logró el mayor rendimiento de segmentación entre todas las configuraciones, con una precisión de 0,714, sensibilidad de 0,706 y puntuación F1 de 0,672 en el conjunto de pruebas independiente. El modelo base entrenado desde cero mostró un rendimiento reducido (precisión: 0,703, sensibilidad: 0,589, puntuación F1: 0,551), mientras que el modelo de segmentación-entrada tuvo un rendimiento moderado (puntuación F1: ...

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Discusión

Varios pasos de este protocolo son fundamentales para lograr resultados precisos y reproducibles. La etapa de preprocesamiento de imagen debe ejecutarse con cuidado, especialmente la conversión a unidades de Hounsfield y la aplicación de ventanas (WL = -400 HU, WW = 1500 HU), ya que estos parámetros determinan la visibilidad de las estructurasvasculares 14,15,16,17.<...

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Divulgaciones

Los autores no tienen ninguna declaración financiera que declarar.

Agradecimientos

Emrah Aydin contó con el apoyo del Programa Internacional de Becas Postdoctorales para Ciudadanos Turcos (1059B191501313) del Consejo de Investigación Científica y Tecnológica de Turquía (TÜBİTAK). Aslıgül Aksan y Mustafa Ekrem Erkan contaron con el apoyo del Consejo de Investigación Científica y Tecnológica de Turquía (TÜBİTAK) 2209-A - Programa de Apoyo a Proyectos de Investigación para Estudiantes de Grado.

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Materiales

Lista de materiales utilizados en este artículo
NombreEmpresaNúmero de catálogoComentarios
Análisis 12.0AnalyzeDirecthttps://analyzedirect.com/Utilizado para revisión de imágenes, edición y mediciones de TC
Datos de tomografía computarizada (escaneos torácicos postnatales)Archivo InstitucionalN/AConjunto de datos retrospectivo de neonatos CDH y control
DCM2NIIXCódigo abierto (GitHub)https://github.com/rordenlab/dcm2niixConvierte DICOM al formato NIfTI
ITK-SNAPCódigo abierto (http://www.itksnap.org)http://www.itksnap.orgHerramienta de anotación de imágenes médicas 3D
NetworkXCódigo abiertohttps://networkx.orgUtilizado para el análisis de árboles vasculares basados en grafos
OpenCV (función CLAHE)Código abiertohttps://opencv.orgUtilizado para la mejora del contraste de imagen
Pandas, InsensibilidadCódigo abiertohttps://pandas.pydata.org, https://numpy.orgGestión de datos y operaciones numéricas
Python 3.8+Fundación de Software Pythonhttps://www.python.orgLenguaje de programación para análisis y desarrollo de modelos
PyTorch 1.13+Meta IAhttps://pytorch.orgMarco de aprendizaje profundo para la implementación de U-Net
Imagen de ScikitCódigo abiertohttps://scikit-image.orgBiblioteca de procesamiento de imágenes utilizada para esqueleto.
Scikit-learnCódigo abiertohttps://scikit-learn.orgBiblioteca de aprendizaje automático para clasificación
Ubuntu 20.04 LTSCanónicohttps://ubuntu.comSistema operativo utilizado en todo el procesamiento
Estación de trabajo con GPU NVIDIA RTX 3090NVIDIAhttps://www.nvidia.comNecesario para entrenar modelos de aprendizaje profundo

Referencias

  1. Keijzer, R., et al. Dual-hit hypothesis explains pulmonary hypoplasia in the nitrofen model of congenital diaphragmatic hernia. Am J Pathol. 156 (4), 1299-1306 (2000).
  2. Aydin, E., et al. The survivorship bias in congenital diaphragmatic hernia. Children. 9 (2), 218(2022).
  3. Harting, M. T. Congenital diaphragmatic hernia-associated pulmonary hypertension. Semin Pediatr Surg. 26 (3), 147-153 (2017).
  4. Kool, H., et al. Pulmonary vascular development goes awry in congenital lung abnormalities. Birth Defects Res C Embryo Today. 102 (4), 343-358 (2014).
  5. Leeuwen, L., Fitzgerald, D. A. Congenital diaphragmatic hernia. J Paediatr Child Health. 50 (9), 667-673 (2014).
  6. Aydin, E., et al. Optimization of pulmonary vasculature tridimensional phenotyping in the rat fetus. Sci Rep. 9 (1), 1244(2019).
  7. Aydin, E., et al. Pulmonary vasculature development in congenital diaphragmatic hernia: a novel automated quantitative imaging analysis. Pediatr Surg Int. 40 (1), 1244(2024).
  8. Memon, N. A., Mirza, A. M., Gilani, S. A. M. Segmentation of lungs from CT scan images for early diagnosis of lung cancer. World Acad Sci Eng Technol. 20, 1050-1055 (2008).
  9. Fetita, C., Brillet, P. Y., Preteux, F. J. Morpho-geometrical approach for 3D segmentation of pulmonary vascular tree in multi-slice CT. Proceedings of SPIE - The International Society for Optical Engineering. , (2009).
  10. Orkisz, M., et al. Segmentation of the pulmonary vascular trees in 3D CT images using variational region-growing. IRBM. 35 (1), 11-19 (2014).
  11. Fabijanska, A. Segmentation of pulmonary vascular tree from 3D CT thorax scans. Biocybern Biomed Eng. 35 (2), 106-119 (2015).
  12. Zhai, Z., Staring, M., Stoel, B. C. Lung vessel segmentation in CT images using graph-cuts. , SPIE Medical Imaging. San Diego, California, United States. (2016).
  13. Khanna, A., Londhe, N. D., Gupta, S. Detection of pulmonary vessels in 3D lung CT using improved graph cut. 2018 5th International Conference on Signal Processing and Integrated Networks (SPIN), Noida, India, , (1109).
  14. DenOtter, T. D., Schubert, J. Hounsfield Unit. , StatPearls Publishing. Treasure Island, FL. (2023).
  15. Detection and classification of brain hemorrhage based on Hounsfield values and convolution neural network technique. Phan, A. C., Nguyen, T. M. N., Phan, T. C. 2019 IEEE-RIVF International Conference on Computing and Communication Technologies (RIVF), Danang, Vietnam, , (2019).
  16. Xue, Z., et al. Window classification of brain CT images in biomedical articles. AMIA Annu Symp Proc. 2012, 1023-1029 (2012).
  17. Contrast-limited adaptive histogram equalization: speed and effectiveness. Pizer, S. M., et al. Proceedings of the First Conference on Visualization in Biomedical Computing, Atlanta, GA, USA, , (1990).
  18. Moccia, S., De Momi, E., El Hadji, S., Mattos, L. S. Blood vessel segmentation algorithms – Review of methods, datasets and evaluation metrics. Comput Methods Programs Biomed. 158, 71-91 (2018).

Acceso restringido. Inicie sesión o comience una prueba gratuita para ver este contenido.

Reimpresiones y permisos

Etiquetas

Segmentaci n de Vasos PulmonaresAn lisis Morfom tricoTomograf a ComputarizadaArquitectura U NetAprendizaje por TransferenciaMorfolog a VascularAlgoritmo de Esqueletizaci n
Video próximamente