É necessária uma assinatura do JoVE para visualizar este conteúdo. Faça login ou inicie seu teste gratuito.

Artigo de método

Análise Quantitativa Automatizada da Vasculatura Pulmonar em Hérnia Diafragmática Congênita usando Deep Learning

112 vistas

DOI:

10.3791/70428

8 de maio de 2026

Neste artigo

Resumo

Este protocolo descreve um pipeline totalmente automatizado de aprendizado profundo para segmentar e analisar a vasculatura pulmonar em tomografias computorizadas neonatais. O método possibilita a avaliação morfométrica quantitativa do desenvolvimento vascular em hérnia diafragmática congênita (CDH) e em sujeitos controle, apoiando a caracterização não invasiva da hipoplasia pulmonar e do subdesenvolvimento vascular.

Resumo

A hérnia diafragmática congênita (CDH) é caracterizada por hipoplasia pulmonar e subdesenvolvimento vascular, levando a alteração gasosa e alta mortalidade neonatal. A avaliação precisa e quantitativa da vasculatura pulmonar é crucial para entender a gravidade da doença, mas a segmentação manual de redes vasculares tridimensionais em imagens médicas é demorada e dependente do operador.

Este protocolo apresenta um método totalmente automatizado baseado em aprendizado profundo para segmentação de vasos pulmonares e análise morfométrica, utilizando tomografia computorizada pós-natal (TC). O pipeline inclui etapas padronizadas de pré-processamento – conversão para unidades de Hounsfield, janelas, reamostragem isotrópica e equalização adaptativa de histogramas com limite de contraste (CLAHE) – para normalizar dados de imagem e melhorar a visibilidade vascular. Uma arquitetura de rede neural convolucional (CNN) U-Net é então treinada para segmentar a vasculatura pulmonar, seguida por um algoritmo de esqueletização tridimensional para quantificar parâmetros morfométricos como número de ramos, comprimento médio de ramo e profundidade geracional.

Resultados representativos demonstram que o modelo proposto alcança alta precisão de segmentação, com a configuração de aprendizado por transferência proporcionando o melhor desempenho. A análise morfométrica quantitativa revela complexidade vascular marcadamente reduzida na CDH em comparação com pulmões controle, consistente com as características patológicas conhecidas da hipoplasia pulmonar.

Essa abordagem automatizada permite a avaliação reprodutível, quantitativa e não invasiva da morfologia vascular pulmonar na CDH. O método pode ser adaptado a outras modalidades de imagem e aplicado a estudos do desenvolvimento pulmonar fetal e neonatal, facilitando a pesquisa translacional e a integração clínica futura.

Introdução

A Hérnia Diafragmática Congênita (CDH) é uma anomalia congênita potencialmente fatal caracterizada por um defeito diafragmático, levando à hérnia das vísceras abdominais notórax 1,2. Essa compressão física prejudica severamente o desenvolvimento pulmonar, resultando em hipoplasia pulmonar e hipertensão pulmonar persistente (HPP), que são os principais fatores que causam morbidade e mortalidade. Além da hipoplasia pulmonar e do subdesenvolvimento vascular, o desenvolvimento cardíaco comprometido e a disfunção ventricular também demonstraram influenciar significativamente os desfechos clínicos em neonatos com DHC. A fisiopatologia subjacente envolve o desenvolvimento anormal tanto das vias aéreas quanto do leito vascular pulmonar, levando a uma redução do número de vasos, aumento da muscularização das arteríolas e, consequentemente, elevado da resistênciavascular 3,4. Biomarcadores objetivos e quantitativos são necessários para estratificar com precisão o risco, orientar intervenções e monitorar a resposta ao tratamento em pacientes comCDH 5. Um aspecto crítico desta avaliação é a análise detalhada da vasculatura pulmonar, que pode fornecer insights sobre a extensão da hipoplasia pulmonar e a capacidade funcional dos pulmões. Avanços em técnicas de imagem, especialmente tomografia computatral (TC), melhoraram nossa capacidade de visualizar e quantificar a vasculatura pulmonar em grandedetalhe 6,7.

Embora a Tomografia Computadorizada (TC) pós-natal forneça detalhes anatômicos de alta resolução dos pulmões, a análise da intrincada árvore vascular pulmonar continua desafiadora. Os métodos existentes para segmentação vascular frequentemente dependem de técnicas tradicionais de processamento de imagem que exigem intervenção manual significativa, são suscetíveis a artefatos de imagem e podem não ser robustos às graves distorções anatômicas doCDH 7,8,9,10. O deep learning, especialmente redes neurais convolucionais (CNNs) como a arquitetura U-Net, obteve sucesso notável na segmentação automatizada de imagens médicas. No entanto, muitos modelos existentes são treinados em sujeitos saudáveis ou em outros contextos de doença, limitando sua aplicabilidade a anomalias congênitas comoCDH 10,11,12,13.

Apesar desses avanços, ainda existem lacunas significativas na literatura. Muitos estudos focaram em indivíduos saudáveis ou condições pulmonares específicas, com atenção limitada a anomalias congênitas como aCDH 12. Além disso, embora modelos de aprendizado profundo tenham apresentado desempenho melhorado, eles frequentemente exigem grandes conjuntos de dados anotados para treinamento, que nem sempre estão disponíveis para condições raras como a CDH. Além disso, modelos existentes ainda não abordaram totalmente o desafio de distinguir entre diferentes tipos de vasos pulmonares (por exemplo, artérias e veias) na presença de distorções anatômicas severas causadas pela CDH. Essa limitação ressalta a necessidade de pesquisas adicionais para desenvolver modelos mais robustos que possam segmentar e analisar com precisão a vasculatura pulmonar em pacientes com CDH.

Este estudo visa preencher essas lacunas desenvolvendo e validando uma estrutura de aprendizado profundo totalmente automatizada para segmentar a vasculatura pulmonar e extrair características morfométricas quantitativas das tomografias. Uma inovação chave da nossa abordagem é treinar nosso modelo com um conjunto combinado de pacientes com CDH e controle, permitindo que ele aprenda uma representação robusta tanto dos padrões vasculares normais quanto patológicos. Embora a imagem por TC envolva radiação ionizante, tornando-a inadequada para triagem longitudinal de rotina, este estudo serve como uma prova de conceito crucial. O objetivo principal deste estudo é estabelecer que a quantificação radiológica automatizada da estrutura vascular é viável e pode diferenciar de forma confiável pacientes com CDH dos controles. O sucesso nesse domínio fornece a validação necessária para adaptar esse arcabouço quantitativo a modalidades de imagem livres de radiação, como a Ressonância Magnética (MRI), para futuras aplicações clínicas.

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Protocolo

Todos os procedimentos envolvendo participantes humanos foram conduzidos de acordo com as diretrizes do comitê de ética em pesquisa humana institucional e aprovados pelo Comitê de Revisão Institucional (IRB #2017-6361). O estudo foi realizado em conformidade com os padrões regulatórios aplicáveis. Os dados dos pacientes foram coletados retrospectivamente e desidentificados antes da análise. Uma visão geral do sistema desenvolvido é mostrada na Figura 1.

1. Pré-processamento de imagem

  1. Carregue tomografias brutas de pacientes neonatais no formato DICOM no ambiente de trabalho.
    1. Abra o software de análise de imagens médicas e crie um novo espaço de trabalho para o projeto.
    2. Clique em Arquivo > Importar > série DICOM .
    3. Navegue até a pasta contendo a tomografia torácica neonatal no formato DICOM e selecione a série completa de imagens.
    4. Verifique se todas as fatias da série foram corretamente detectadas e ordenadas com base nos metadados de aquisição (por exemplo, Número da Instância).
    5. Confirme as dimensões da imagem, espaçamento voxel e espessura dos cortes no painel de metadados para garantir consistência entre as varreduras.
    6. Carregue a série no espaço de trabalho e inspecione visualmente as visões axiais, coronares e sagitais para confirmar a orientação correta e a ausência de erros de carregamento.
  2. Converta arquivos DICOM para o formato NIfTI usando software de código aberto para facilitar a manipulação e análise.
    1. Abra uma janela de terminal dentro do ambiente de computação científica.
    2. Navegue até o diretório contendo a série de imagens DICOM usando o comando cd.
    3. Execute a ferramenta de conversão de DICOM para NIfTI usando a seguinte estrutura de comando: dcm2niix -z y -f output_filename -o /output_directory /input_directory
    4. Certifique-se de que a compressão esteja ativada (-z y) para gerar um arquivo .nii.gz comprimido.
    5. Verifique se o arquivo de saída foi gerado com sucesso no diretório de saída especificado.
    6. Abra o arquivo NIfTI convertido em um visualizador de imagens médicas e inspecione visualmente os planos axiais, coronal e sagital para confirmar a orientação espacial correta e a integridade da imagem.
    7. Confirme o espaçamento dos voxels e as dimensões da imagem para garantir consistência entre todos os sujeitos antes do pré-processamento.
  3. Converta intensidades de imagem para Unidades de Hounsfield (HU) usando metadados específicos do scanner ou fórmulas padrão.
    1. Extraia os parâmetros de metadados DICOM Rescale Slope e Rescale Intercept do cabeçalho da imagem para cada varredura.
    2. Para cada valor de intensidade voxel (I_raw), calcule a Unidade de Hounsfield (HU) correspondente usando a seguinte fórmula: HU = (I_raw × Inclinação de Reescala) + Intercepto de Reescala.
    3. Aplique a conversão a todo o volume da imagem 3D usando operações matriciais elemento a elemento dentro do ambiente computacional científico.
    4. Confirme a conversão correta verificando que as regiões aéreas se aproximam de −1000 HU e que as regiões de tecidos moles estejam dentro dos intervalos fisiológicos esperados.
    5. Salve o volume convertido como um novo arquivo NIfTI para preservar os dados originais.
  4. Aplique janelas para destacar os pulmões e tecidos moles. Defina o nível da janela (WL) para -400 HU e a largura da janela (WW) para 1500 HU.
    1. Abra o arquivo NIfTI convertido no software de visualização de imagens.
    2. Navegue até o painel de visualização de imagem ou configurações de intensidade.
    3. Selecione a opção de ajuste Janela/Nível .
    4. Defina manualmente o valor do Nível de Janela (WL) para -400 Unidades Hounsfield (HU).
    5. Defina o valor de Largura da Janela (WW) para 1500 HU.
    6. Confirme e aplique as configurações para atualizar a visualização da imagem.
    7. Verifique se o parênquima pulmonar e os vasos pulmonares são claramente distinguíveis das estruturas ósseas e mediastinais antes de prosseguir para etapas adicionais de pré-processamento.
  5. Realize reamostragem isotrópica para garantir que as dimensões dos voxels sejam uniformes (por exemplo, 1 mm × 1 mm × 1 mm) usando interpolação trilinear.
    1. Carregue a imagem do NIfTI no ambiente Python usando uma biblioteca de processamento de imagens médicas.
    2. Extraia o espaçamento original dos voxels dos metadados do cabeçalho da imagem.
    3. Defina o espaçamento isotrópico alvo como (1,0, 1,0, 1,0) mm.
    4. Calcule as novas dimensões da imagem usando a fórmula: new_size = original_size × (original_spacing / target_spacing)
    5. Inicialize um objeto de reamostragem.
    6. Defina o método de interpolação para interpolação trilinear.
    7. Atribua o espaçamento dos voxels alvo (1,0 mm × 1,0 mm × 1,0 mm).
    8. Defina o novo tamanho de imagem calculado.
    9. Preserve a direção e a origem da imagem original.
    10. Execute a operação de reamostragem.
    11. Salve a imagem reamostrada no formato NIfTI para as etapas subsequentes de pré-processamento.
    12. Verifique o espaçamento isotrópico verificando as dimensões voxel atualizadas no cabeçalho da imagem antes de prosseguir.
  6. Aplique a Equalização Adaptativa de Histograma Limitada por Contraste (CLAHE) para aumentar o contraste e melhorar a visibilidade das estruturas vasculares.
    1. Importe a biblioteca de processamento de imagem necessária para o ambiente Python.
    2. Converta o volume 3D CT reamostrado para o formato em tons de cinza de 8 bits, se necessário, usando normalização linear de intensidade para mapear a faixa selecionada de HU de 0 a 255.
    3. Processe o volume CT fatia por fatia no plano axial para aplicar CLAHE em 2D.
    4. Inicialize o objeto CLAHE usando os seguintes parâmetros: clipLimit = 2.0, tileGridSize = (8, 8).
    5. Para cada corte axial, aplique a função CLAHE para aumentar o contraste local.
    6. Reconstrua as fatias processadas de volta em um volume 3D após a aplicação CLAHE.
    7. Salve o volume com contraste no formato NIfTI para segmentação subsequente.
    8. Verifique visualmente que os vasos pulmonares são mais distinguíveis do parênquima ao redor sem amplificação excessiva de ruído antes de prosseguir.
  7. Inspecione visualmente um subconjunto de imagens pré-processadas para garantir qualidade e consistência em todo o conjunto de dados.
    1. Selecione aleatoriamente pelo menos 10% do conjunto total de dados para avaliação manual da qualidade.
    2. Abra cada volume pré-processado selecionado no visualizador de imagens médicas.
    3. Inspecionar os planos axiais, coronares e sagitais para verificar o seguinte: Orientação espacial correta; Ausência de artefatos de truncamento; Aplicação correta dos parâmetros de janela; Reamostragem isotrópica bem-sucedida (espaçamento uniforme dos voxels); Aumento adequado de contraste após CLAHE.
    4. Confirme que os vasos pulmonares são claramente distinguíveis das estruturas parênquimas adjacentes sem amplificação excessiva de ruído.
    5. Compare imagens pré-processadas com volumes originais convertidos em HU para garantir que as etapas de pré-processamento não introduzam distorções ou inconsistências anatômicas.
    6. Documente quaisquer erros de pré-processamento e repita o pré-processamento para casos afetados, se necessário.

2. Anotação manual

  1. Selecione um subconjunto representativo de tomografias computorizadas tanto de pacientes controle quanto de pacientes com CDH para serem usados em anotação manual. Garantir uma distribuição equilibrada da variabilidade anatômica.
    1. Identifique todas as tomografias computorizadas pré-processadas elegíveis tanto das coortes controle quanto das coortes CDH.
    2. Exclua exames com artefatos de movimento graves ou cobertura pulmonar incompleta.
    3. Selecione aleatoriamente um número pré-definido de casos de cada grupo para garantir uma representação equilibrada.
    4. Garantir a inclusão de casos que demonstrem uma variedade de variabilidade anatômica, incluindo diferenças no volume pulmonar, densidade vascular e gravidade do deslocamento mediastinal.
    5. Confirme que casos selecionados de CDH representam graus variados de hipoplasia pulmonar, quando disponíveis.
    6. Documente os identificadores de caso selecionados antes de prosseguir com a anotação manual.
  2. Carregue as imagens NIfTI pré-processadas em uma ferramenta de anotação de imagens médicas 3D.
    1. Abra o software de anotação de imagens médicas 3D.
    2. Crie um novo projeto ou sessão de segmentação.
    3. Clique em Arquivo > Abrir Imagem (ou opção de importação equivalente).
    4. Navegue até o diretório contendo o arquivo NIfTI pré-processado (.nii ou .nii.gz) e selecione a imagem.
    5. Confirme o carregamento bem-sucedido verificando a orientação correta da imagem nas visões axial, coronal e sagital.
    6. Ajuste as configurações de exibição se necessário para otimizar a visualização.
    7. Crie uma nova etiqueta de segmentação ou camada de máscara para armazenar anotações vasculares manuais.
    8. Salve o arquivo do projeto antes de iniciar a anotação manual.
  3. Utilizando visões axiais, coronárias e sagitales, segmente manualmente a vasculatura pulmonar delineando as estruturas vasculares em cada corte relevante.
    1. Ative a camada de etiquetas de segmentação criada na etapa 2.2.
    2. Selecione a ferramenta manual de desenho ou pincel dentro do software de anotação.
    3. Ajuste o tamanho da escova dinamicamente de acordo com o diâmetro do vaso para garantir o traçado preciso dos limites.
    4. Usando cortes axiais como plano de referência primário, delinee manualmente as estruturas vasculares pulmonares visíveis, incluindo ramos arteriais e venosos.
    5. Exclua estruturas não vasculares, como brônquios, paredes das vias aéreas e tecidos mediastinas.
    6. Percorra fatia por fatia todo o volume pulmonar para garantir a anotação contínua de cada ramo vascular.
    7. Valide cruzadamente cada região anotada nas visões coronal e sagital para confirmar a consistência anatômica e evitar descontinuidades.
    8. Inclua recipientes até os menores ramos visualmente distinguíveis, evitando a segmentação excessiva de artefatos de ruído.
    9. Periodicamente, renderize uma pré-visualização 3D da segmentação para verificar a continuidade espacial da árvore vascular.
    10. Salve a máscara de segmentação completa no formato NIfTI antes de prosseguir para o treinamento do modelo.
  4. Anote apenas os vasos pulmonares, excluindo o coração, brônquios e as principais estruturas não pulmonares.
    1. Identifique artérias e veias pulmonares dentro do parênquima pulmonar usando fatias axiais como referência principal.
    2. Inclua ramos vasculares intraparenquimatosos originados das principais artérias pulmonares e que se estendem distalmente dentro dos campos pulmonares.
    3. Exclua as câmaras cardíacas, átrios, ventrículos e grandes vasos.
    4. Exclua as estruturas das vias aéreas, incluindo brônquios e paredes brônquicas, distinguindo-as dos vasos com base na morfologia e nas características luminais.
    5. Evite marcar tecidos moles mediastinos, pleura e estruturas da parede torácica.
    6. Use vistas multiplanares (axial, coronal, sagital) para confirmar que as estruturas anotadas seguem a continuidade vascular esperada e os padrões de ramificação.
    7. Quando a diferenciação vaso-via aérea for incerta, verifique a continuidade entre fatias adjacentes para confirmar a trajetória vascular antes da marcação.
    8. Realize uma renderização final 3D do volume segmentado para garantir que apenas a árvore vascular pulmonar tenha sido incluída.
  5. Se disponível, consulte especialistas em imagem clínica para validar regiões ambíguas durante a anotação.
    1. Identifique regiões nas quais os limites dos vasos são incertos devido ao baixo contraste, distorção anatômica ou proximidade a brônquios ou estruturas mediastinais.
    2. Sinalize essas regiões dentro do software de anotação usando uma ferramenta temporária de rótulos ou comentários.
    3. Apresente as áreas sinalizadas a um especialista em imagem clínica.
    4. Revise as visões axial, coronal e sagital em conjunto para determinar se a estrutura representa a vasculatura pulmonar.
    5. Modificar a máscara de segmentação com base no consenso dos especialistas.
    6. Documente quaisquer regiões corrigidas antes de finalizar a máscara de verdade.
  6. Realize a validação entre avaliadores fazendo com que pelo menos dois anotadores independentes revisem e refinassem cada segmentação. Em caso de discordância, chegue a um consenso por meio de discussão ou arbitragem.
    1. Atribua cada tomografia selecionada a dois anotadores independentes com experiência em análise de imagem torácica.
    2. Garanta que os anotadores façam a segmentação de forma independente e estejam cegos para os resultados uns dos outros.
    3. Após a conclusão das anotações independentes, compare as máscaras de segmentação usando uma métrica quantitativa de sobreposição (por exemplo, coeficiente de similaridade de Dice).
    4. Identifique regiões de discordância calculando diferenças voxel a cada entre máscaras.
    5. Revise regiões discrepantes conjuntamente nos planos axial, coronal e sagital.
    6. Alcance consenso por meio de discussões estruturadas.
    7. Se persistir discordância, envolva um terceiro revisor sênior para arbitrar a decisão final.
    8. Salve a máscara de segmentação consensual como o rótulo final de verdade para o treinamento do modelo.
  7. Salve as máscaras anotadas dos vasos na mesma resolução e espaço das imagens originais da tomografia. Armazene-os no formato NIfTI usando convenções de nomenclatura consistentes.
    1. Certifique-se de que a máscara de segmentação de consenso final seja armazenada como um mapa binário de rótulos, onde os voxels vasculares recebem um valor 1 e os voxels de fundo recebem um valor 0.
    2. Confirme que a máscara de segmentação mantém o mesmo espaçamento voxel, dimensões da imagem, origem e matriz de orientação da imagem TC pré-processada correspondente.
    3. Exporte a máscara de segmentação no formato NIfTI (.nii ou .nii.gz) usando a função de exportação do software de anotação.
    4. Use uma convenção de nomenclatura consistente estruturada da seguinte forma: SubjectID_Group_VesselMask.nii.gz; (por exemplo, CDH_012_VesselMask.nii.gz).
    5. Armazene as máscaras em um diretório dedicado paralelo ao conjunto de imagens para manter a consistência do pareamento.
    6. Realize uma verificação final recarregando tanto a imagem CT quanto sua máscara correspondente para confirmar o alinhamento espacial perfeito antes do treinamento do modelo.
  8. Use essas segmentações rotuladas manualmente como a base para treinamento e avaliação de modelos.

3. Treinamento e validação do modelo

  1. Organize o conjunto de dados em três subconjuntos: conjuntos de treinamento, validação e conjuntos de teste. Neste estudo, utilize 35 casos controle e 20 casos CDH para treinamento, 5 casos controle e 10 casos CDH para validação, e espere o restante para testes independentes.
    1. Compile todas as imagens pré-processadas de CT e suas correspondentes máscaras de vasos de consenso em um único conjunto de dados.
    2. Realize a divisão do conjunto de dados no nível do paciente para evitar vazamento de dados entre subconjuntos.
    3. Atribuir aleatoriamente 35 casos controle e 20 casos CDH ao conjunto de treinamento.
    4. Atribuir aleatoriamente 5 casos de controle e 10 casos CDH ao conjunto de validação.
    5. Atribua todos os casos restantes a um conjunto de teste independente de retenção que não seja acessado durante o treinamento do modelo ou ajuste de hiperparâmetros.
    6. Certifique-se de que cada imagem de tomografia computorizada e sua correspondente máscara de segmentação permaneçam emparelhadas durante todo o processo de divisão.
    7. Verifique a distribuição de classes em cada subconjunto para manter a representação tanto dos casos controle quanto dos casos CDH.
    8. Documente a alocação final dos identificadores de sujeito para reprodutibilidade.
  2. Normalize os valores de intensidade de todas as imagens entre 0 e 1 para melhorar a convergência da rede neural durante o treinamento.
    1. Para cada volume de CT, primeiro restringa os valores de intensidade a uma faixa pré-definida de Unidade de Hounsfield para remover valores extremos.
    2. Aplique clipping de intensidade de modo que valores abaixo de −1000 HU sejam definidos para −1000 HU e valores acima de 500 HU sejam definidos para 500 HU.
    3. Realize a normalização min–max independentemente para cada volume usando a seguinte transformação: Valor normalizado = (I − I_min) / (I_max − I_min), onde I_min e I_max correspondem aos valores mínimos e máximos de intensidade cortados do volume.
    4. Aplique a normalização ao volume 3D completo usando operações elemento a elemento dentro do ambiente computacional.
    5. Verifique se todas as intensidades voxel estão dentro do intervalo [0, 1] antes de inserir os dados na rede neural.
    6. Certifique-se de que os parâmetros de normalização sejam derivados independentemente para cada imagem, a fim de evitar vazamento de informações entre conjuntos de treinamento, validação e teste.
  3. Implemente uma arquitetura de rede neural convolucional U-Net usando um framework de deep learning como PyTorch ou TensorFlow.
    1. Crie um novo projeto em um ambiente de desenvolvimento de deep learning e defina uma semente aleatória fixa para reprodutibilidade.
    2. Defina uma arquitetura U-Net 2D (Figura 2) para segmentação binária com uma estrutura codificador-decodificador e conexões de pulo.
    3. Defina a entrada do modelo como fatias CT de canal único (escala de cinza) e defina a saída do modelo como um mapa de probabilidade de canal único representando a verosimilhança do navio.
    4. Configure a camada final para usar uma função de ativação sigmoide e produzir valores no intervalo [0, 1].
    5. Defina a função de perda para segmentação binária (por exemplo, entropia cruzada binária) e inicialize um otimizador.
    6. Especifique hiperparâmetros de treinamento, incluindo tamanho do lote, número de épocas e taxa de aprendizado, e registre esses valores para relatórios.
    7. Prepare carregadores de dados para alimentar os conjuntos de dados de treinamento e validação no modelo com embaralhamento e lotamento consistentes.
    8. Salve a definição completa do modelo e a configuração dos hiperparâmetros para reprodutibilidade.
  4. Configure o modelo com uma estrutura codificador-decodificador, incorporando conexões de salto e camadas de normalização em lote para melhorar a precisão da segmentação.
    1. Defina um codificador composto por blocos convolucionais repetidos. Garanta que cada bloco inclua:
      Duas camadas consecutivas de convolução 2D (tamanho do núcleo 3 × 3, preenchimento = 1)
      Normalização em lote aplicada após cada convolução
      Ativação da Unidade Linear Retificada (ReLU)
    2. Aplique 2 × 2 de pool máximo com um passo de 2 após cada bloco do codificador para reduzir progressivamente a resolução espacial.
    3. Dobre o número de canais-feature após cada etapa de downsampling.
    4. Defina o decodificador usando convolução transposta (kernel 2 × 2, passo 2) para amostragem.
    5. Concatenar características mapeia da camada correspondente do codificador para a camada do decodificador por meio de conexões de salto para preservar informações espaciais.
    6. Aplique duas camadas convolucionais com normalização em lote e ativação do ReLU após cada etapa de concatenação.
    7. Use uma camada final de convolução 1 × 1 para mapear as características para uma saída de canal único.
    8. Aplique uma função de ativação sigmoide para produzir um mapa de probabilidade voxel a voxel para segmentação de vasos.
  5. Treine três configurações do modelo:
    1. Modelo de base (treinamento do zero)
      1. Inicialize os pesos U-Net aleatoriamente (por exemplo, inicialização He).
      2. Use apenas o conjunto de dados de artérias-veias anotado manualmente como entrada.
      3. Redimensione as imagens de entrada para 512 × 512 pixels.
      4. Normalize os valores de intensidade para a faixa [0,1].
      5. Defina o tamanho do lote para 8 (ou máximo permitido pela memória GPU).
      6. Use o otimizador Adam com taxa de aprendizado = 1 × 10⁻4.
      7. Use Entropia Cruzada Binária (para segmentação binária) ou Perda de Entropia Cruzada (para classificação artéria-veia).
      8. Treine por 30 épocas.
      9. Monitore a perda de validação após cada época.
      10. Salve os pesos do modelo correspondentes à menor perda de validação.
      11. No PyTorch, siga os passos 3.5.1.13–3.5.1.14.
      12. Defina otimizador: torch.optim.Adam(model.parameters(), lr=1e-4)
      13. Defina perda: tocha.nn.BCEWithLogitsLoss() ou torcha.nn.CrossEntropyLoss()
      14. Use model.train() durante o treinamento e model.eval() durante a validação.
    2. Modelo de segmentação-entrada (entrada de máscara auxiliar de vaso)
      1. Modificar a camada de entrada para aceitar dois canais:
        Canal 1: Imagem CT
        Canal 2: Máscara de segmentação binária de vasos
      2. Concatene a imagem CT e a máscara do recipiente ao longo da dimensão do canal antes de alimentá-las na rede.
      3. Mantenha a arquitetura idêntica ao modelo base.
      4. Use o mesmo otimizador, taxa de aprendizado, tamanho do lote e número de época do passo 3.5.1.
      5. Salve os pesos de melhor desempenho com base na pontuação de validação do F1.
    3. Modelo de aprendizagem por transferência (inicialização pré-treinada)
      1. Carregue os pesos pré-treinados U-Net treinados em um conjunto genérico de segmentação de embarcações (conforme descrito no relatório de progresso).
      2. Congelar camadas de codificador para as primeiras 5 épocas (etapa opcional de estabilização).
      3. Descongele todas as camadas e continue ajustando para as épocas restantes.
      4. Use taxa de aprendizado reduzida = 5 × 10⁻5 durante o ajuste fino.
      5. Treine por 30 épocas no total.
      6. Aplique o flipping horizontal como aumento de dados durante o treinamento.
      7. Salve o modelo com a maior pontuação de validação F1.
  6. Use perda binária de entropia cruzada e o otimizador Adam com taxa inicial de aprendizado de 0,001. Reduza a taxa de aprendizado de forma adaptativa caso a perda de validação estagne.
    1. Definição da função de perda
      1. Para segmentação binária de vasos, use Perda de Entropia Cruzada Binária com logites.
      2. No PyTorch, defina: criterion = torch.nn.BCEWithLogitsLoss()
      3. Se realizar a classificação multiclasse artéria-veia, use: criterion = torch.nn.CrossEntropyLoss()
    2. Definindo o otimizador
      1. Use o otimizador Adam com taxa inicial de aprendizado de 0,001.
      2. No PyTorch: otimizador = torch.optim.Adam(model.parameters(), lr=0,001)
    3. Possibilitando a redução da taxa de aprendizado adaptativo
      1. Implemente um escalonador de taxa de aprendizado para reduzir a taxa de aprendizado quando a perda de validação parar de melhorar.
      2. Use o agendador ReduceLROnPlateau.
      3. No PyTorch: agendador = torch.optim.lr_scheduler. ReduceLROnPlateau(
        otimizador,
        modo='min',
        fator=0,5,
        paciência=5,
        verbose=True
        )
      4. Após cada fase de validação, chame: scheduler.step(validation_loss)
    4. Configuração do loop de treinamento.
      1. Para cada época, siga os passos 3.6.4.2–3.6.4.7:
      2. Defina o modelo para modo de treinamento: model.train()
      3. Faça um passe para frente.
      4. Perda de computação.
      5. Retropropagação: loss.backward()
      6. Atualizações de pesos: optimizer.step()
      7. Zero gradientes antes da próxima iteração: optimizer.zero_grad()
      8. Após a fase de treinamento, mude para o modo de avaliação usando model.eval() e calcule a perda de validação.
    5. Parar cedo (opcional, mas recomendado)
      1. Se a perda de validação não melhorar por 10 épocas consecutivas, pare o treinamento para evitar o sobreajuste.
  7. Aplique técnicas de aumento de dados, como rotações aleatórias, flips e deformações elásticas, para aumentar a robustez e reduzir o sobreajuste.
    1. Definindo um pipeline de aumento
      1. Aplique aumentos apenas ao conjunto de dados de treinamento.
      2. Aplique transformações espaciais idênticas tanto à imagem TC quanto à sua correspondente máscara de segmentação.
    2. Rotações aleatórias.
      1. Aplique rotações aleatórias no plano entre -15° e +15°.
      2. No PyTorch (usando torchvision ou Albumentations): RandomRotation(degrees=15)
    3. Flips horizontais e verticais.
      1. Aplique um flip horizontal com probabilidade p = 0,5.
      2. Aplicar um flip vertical com probabilidade p = 0,5 (se anatomicamente aceitável).
    4. Deformação elástica.
      1. Aplique uma transformação elástica para simular a variabilidade anatômica.
      2. Use pequenos parâmetros de deformação para evitar distorções irreais.
    5. Exemplo de implementação (PyTorch + Albumentations)
      1. Defina pipeline de transformação antes do treinamento:
        transformar = A.Compor([
        A. Rotate(limit=15, p=0,5),
        A.HorizontalFlip(p=0.5),
        A.ElasticTransform(alpha=1, sigma=50, alpha_affine=10, p=0,3)
        ])
      2. Aplique transformação dentro do conjunto de dados __getitem__() para garantir a transformação sincronizada da imagem e da máscara.
    6. Validação e conjuntos de teste
      1. Não aplique aumento a conjuntos de dados de validação ou teste.
      2. Use apenas normalização e redimensionamento para esses conjuntos.
    7. Controle de qualidade.
      1. Inspecione visualmente as amostras aumentadas antes do treinamento para garantir a plausibilidade anatômica.
      2. Verifique se as máscaras permanecem alinhadas com as imagens transformadas.
  8. Treine o modelo por um número fixo de épocas ou até a convergência, monitorando o desempenho no conjunto de validação após cada época.
    1. Definindo a duração do treinamento
      1. Defina o número máximo de épocas de treinamento para 30.
      2. Alternativamente, continue o treinamento até que os critérios de convergência sejam atendidos (veja Paradas Precoces abaixo).
    2. Ciclo de treinamento
      1. Para cada época, siga os passos 3.8.2.2–3.8.2.10:
      2. Defina o modelo para modo de treinamento: model.train()
      3. Itere sobre todos os mini-lotes do conjunto de treinamento.
      4. Carregue um lote de imagens de tomografia computarizada e máscaras correspondentes.
      5. Faça um passe para frente.
      6. Calcule a perda usando a função de perda definida.
      7. Gradientes de retropropagação: loss.backward()
      8. Atualizar pesos do modelo: optimizer.step()
      9. Resetar gradientes antes do próximo lote: optimizer.zero_grad()
      10. Calcule a perda média de treinamento para a época.
    3. Etapa de validação (após cada época)
      1. Mudar o modelo para o modo de avaliação: model.eval()
      2. Desative o cálculo de gradiente: com torch.no_grad():
      3. Itere sobre o conjunto de dados de validação.
      4. Faça um passe para frente.
      5. Calcule a perda de validação.
      6. Calcular métricas de desempenho (pontuação F1, precisão, sensibilidade, pontuação DICE).
      7. Registrar a perda de validação e métricas.
    4. Ajuste da taxa de aprendizado
      1. Atualize o agendador após a etapa de validação: scheduler.step(validation_loss)
    5. Critérios de convergência
      1. Pare o treinamento se a perda de validação não melhorar por 10 épocas consecutivas (parar precocemente), ou se as métricas de desempenho estagnarem.
    6. Checkpointing de modelos
      1. Salve os pesos dos modelos sempre que a pontuação de validação do F1 melhorar.
      2. Mantenha o modelo de melhor desempenho para avaliação final no conjunto de testes.
    7. Registro
      1. Armazene valores de perda de treinamento e validação por época.
      2. Plote curvas de aprendizado (perda vs. época) para verificar o comportamento de convergência.
  9. Selecione o modelo de melhor desempenho com base na maior pontuação F1 no conjunto de dados de validação.
    1. Rastreamento da métrica de validação
      1. Após cada época, calcule a pontuação F1 no conjunto de dados de validação.
      2. Armazene a pontuação do F1 junto com o número de época correspondente.
    2. Comparação de modelos
      1. Compare as pontuações de validação do F1 em todas as épocas.
      2. Identifique a época que alcançou a maior pontuação de validação F1.
    3. Checkpointing de modelos
      1. Durante o treinamento, salve os pesos do modelo sempre que a pontuação de validação do F1 melhorar.
    4. Seleção final do modelo
      1. Após a conclusão do treinamento, carregue os pesos correspondentes à maior pontuação de validação F1:
        model.load_state_dict(torch.load("best_model.pth"))
    5. Testes independentes
      1. Avalie o modelo selecionado apenas uma vez no conjunto de dados de teste independente.
      2. Não use o desempenho do conjunto de teste para seleção de modelos.
    6. Reprodutibilidade
      1. Registre o número de época selecionado e as métricas de validação correspondentes.
      2. Corriga sementes aleatórias para garantir a reprodutibilidade.
  10. Salve os pesos e configurações treinados do modelo para tarefas de segmentação a jusante.

4. Segmentação e esqueletização

  1. Carregue o modelo treinado U-Net e aplique-o às tomografias pré-processadas no conjunto de teste independente.
  2. Para cada varredura, gere-se uma máscara de segmentação binária da vasculatura pulmonar aplicando um limiar à saída probabilística do modelo.
  3. Inspecione visualmente os resultados da segmentação para confirmar a plausibilidade anatômica, especialmente em regiões afetadas pela distorção induzida pela CDH.
  4. Converta as máscaras binárias 3D segmentadas em representações esqueléticas usando um algoritmo de afinamento 3D implementado em software.
  5. Rotule o esqueleto vascular usando um algoritmo de busca em largura, designando o tronco pulmonar como o nó raiz e atribuindo níveis de geração a cada ramo com base na conectividade.
  6. Remova pequenos componentes desconectados ou ramos espúrios que provavelmente se devolvam devido a ruído ou erros de segmentação, usando um limiar mínimo de tamanho voxel ou comprimento de ramo.
  7. Salve as estruturas esqueletizadas em formatos 3D mesh ou compatíveis com grafos (por exemplo, VTK ou SWC) para análises morfométricas adicionais.

5. Extração de características morfométricas

  1. Carregue os gráficos vasculares esqueletográficos gerados a partir das imagens segmentadas da tomografia computarizada.
  2. Identifique todos os ramos individuais percorrendo a estrutura do grafo entre pontos de bifurcação e nós terminais.
  3. Calcule o número total de ramificações somando todos os segmentos identificados dentro do gráfico vascular.
  4. Calcule o comprimento de cada ramo somando as distâncias euclidianas entre voxéis conectados ao longo do esqueleto.
  5. Determine o comprimento médio dos ramos fazendo a média dos comprimentos de todos os ramos no esqueleto de cada sujeito.
  6. Atribua níveis de geração a cada ramo começando pela artéria pulmonar principal como geração 0 e aumentando em um em cada bifurcação usando a travessia em largura.
  7. Calcule o número máximo de gerações distais identificando o caminho mais longo do nó raiz até qualquer ramo terminal.
  8. Calcule o número máximo de gerações proximais identificando o caminho mais longo de qualquer ramo periférico de volta à raiz.
  9. Armazene todas as características morfométricas em uma planilha estruturada ou formato de banco de dados (por exemplo, CSV ou SQL) com identificadores de sujeito, grupo de diagnóstico e métricas extraídas.
  10. Inspecionar visualmente um subconjunto de esqueletos e características morfométricas correspondentes para confirmar precisão e plausibilidade biológica.

6. Análise de classificação

  1. Importe o conjunto de dados estruturado contendo características morfométricas (por exemplo, contagem total de ramos, comprimento médio dos ramos, profundidade de geração distal e proximal) e os rótulos diagnósticos correspondentes (CDH ou controle).
  2. Divida o conjunto de dados em conjuntos de treinamento e testes usando amostragem estratificada para manter a distribuição das classes.
  3. Implemente classificadores de Floresta Aleatória e Árvore de Decisão usando uma biblioteca padrão de aprendizado de máquina.
  4. Configure parâmetros do modelo, como o número de estimadores (por exemplo, 100 árvores para Random Forest) e a profundidade máxima com base no desempenho de validação cruzada.
  5. Treine cada classificador usando o subconjunto de treinamento dos dados.
  6. Avalie o desempenho na classificação no conjunto de testes de resistência usando a precisão como métrica principal.
  7. Gerar matrizes de confusão para avaliar taxas de verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos para a detecção de CDH.
  8. Compare o desempenho dos classificadores de Floresta Aleatória e Árvore de Decisão, e selecione o modelo com maior precisão para reportar resultados representativos.
  9. Visualize os resultados da classificação usando gráficos de barras, curvas ROC ou árvores de decisão, se aplicável, e salve os resultados para inclusão nas figuras.
  10. Documente todos os parâmetros do modelo, métricas de desempenho e qualquer pré-processamento aplicado aos dados para garantir a reprodutibilidade.

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Resultados

O modelo de aprendizado profundo treinado com aprendizado por transferência alcançou o maior desempenho de segmentação entre todas as configurações, com precisão de 0,714, sensibilidade de 0,706 e pontuação F1 de 0,672 no conjunto de teste independente. O modelo de base treinado do zero apresentou desempenho reduzido (precisão: 0,703, sensibilidade: 0,589, pontuação F1: 0,551), enquanto o modelo de segmentação com entrada teve desempenho moderado (pontuação F1: 0,630).

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Discussão

Várias etapas desse protocolo são críticas para alcançar resultados precisos e reprodutíveis. A etapa de pré-processamento de imagem deve ser cuidadosamente executada, especialmente a conversão para Unidades de Hounsfield e a aplicação de janelas (WL = -400 HU, WW = 1500 HU), pois esses parâmetros determinam a visibilidade das estruturasvasculares 14,15,16,17. ...

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Divulgações

Os autores não têm divulgações financeiras a declarar.

Agradecimentos

Emrah Aydin foi apoiado pelo Programa Internacional de Bolsas de Pesquisa de Pós-Doutorado para Cidadãos Turcos (1059B191501313) do Conselho de Pesquisa Científica e Tecnológica da Turquia (TÜBİTAK). Aslıgül Aksan e Mustafa Ekrem Erkan foram apoiados pelo Conselho de Pesquisa Científica e Tecnológica da Turquia (TÜBİTAK) 2209-A - Programa de Apoio a Projetos de Pesquisa para Estudantes de Graduação.

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Materiais

Lista de materiais utilizados neste artigo
NomeEmpresaNúmero de catálogoComentários
Análise 12.0AnalyzeDirecthttps://analyzedirect.com/Usado para revisão de imagens, edição e medições de CT
Dados da tomografia computadorizada (tomografias torácicas pós-natais)Arquivo InstitucionalN/AConjunto de dados retrospectivo de recém-nascidos com HCD e controle
DCM2NIIXCódigo aberto (GitHub)https://github.com/rordenlab/dcm2niixConverte DICOM para o formato NIfTI
ITK-SNAPCódigo aberto (http://www.itksnap.org)http://www.itksnap.orgFerramenta de anotação de imagens médicas 3D
NetworkXCódigo abertohttps://networkx.orgUsado para análise de árvores vasculares baseadas em grafos
OpenCV (função CLAHE)Código abertohttps://opencv.orgUsado para realce de contraste de imagem
Pandas, AnestesiadosCódigo abertohttps://pandas.pydata.org, https://numpy.orgGestão de dados e operações numéricas
Python 3.8+Fundação de Software Pythonhttps://www.python.orgLinguagem de programação para análise e desenvolvimento de modelos
PyTorch 1.13+Meta IAhttps://pytorch.orgFramework de deep learning para implementação do U-Net
Imagem ScikitCódigo abertohttps://scikit-image.orgBiblioteca de processamento de imagem usada para esqueletização
Scikit-learnCódigo abertohttps://scikit-learn.orgBiblioteca de aprendizado de máquina para classificação
Ubuntu 20.04 LTSCanônicohttps://ubuntu.comSistema operacional utilizado em todo o processamento
Estação de trabalho com GPU NVIDIA RTX 3090NVIDIAhttps://www.nvidia.comExigido para treinar modelos de deep learning

Referências

  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).

Acesso restrito. Inicie sessão ou comece um teste para visualizar este conteúdo.

Reimpressões e permissões

Etiquetas

Segmenta o de Vasos PulmonaresAn lise Morfom tricaTomografia ComputadorizadaArquitetura U NetAprendizagem por Transfer nciaMorfologia VascularAlgoritmo de Esqueletiza o
Vídeo em breve