Roberlan Carvalho

Roberlan CarvalhoSoftware Developer

Desenvolvedor de softwares Fullstack, Bacharel em Sistemas de Informação, Pós-graduando em Inteligência Artificial, empreendedor. Gamer, trilheiro e músico nas horas vagas.

← Voltar na listagem

19 de outubro de 2026 • 12 min de leitura

IA Multimodal na Lesão Medular - Da Pesquisa a uma PoC Explicável de Visão Computacional e Predição

Uma ressonância magnética conta muito, mas não conta tudo. Mostro como construí, no mestrado, um pipeline que une imagem e dados clínicos com IA explicável, e o que aprendi no caminho.

Introdução

Imagine dois pacientes com lesão medular cujas ressonâncias magnéticas parecem muito parecidas. Um ano depois, um deles recuperou boa parte dos movimentos e o outro não. O que a imagem não mostrou?

Essa pergunta tem me acompanhado durante boa parte da minha pesquisa. A imagem é poderosa, mas o prognóstico de uma lesão medular depende de muito mais do que pixels: força motora, nível neurológico da lesão, idade, tempo desde o trauma. Um médico nunca olha só para a ressonância. Então, por que um modelo de IA deveria olhar?

No post sobre IA na Saúde, falei sobre diretrizes para usar Inteligência Artificial de forma responsável na área. Neste post, mostro o outro lado: como foi colocar essas ideias em prática e construir uma Prova de Conceito (PoC) de um pipeline multimodal de IA para apoiar o prognóstico de lesão medular. E, principalmente, o que eu aprendi construindo isso.

Por Que "Multimodal"?

Multimodal é o nome que se dá a um sistema que aprende com mais de um tipo de dado ao mesmo tempo. No meu caso, dois mundos bem diferentes: a imagem médica (ressonância magnética no padrão DICOM, o formato usado pelos equipamentos de radiologia) e os dados clínicos estruturados, aqueles que ficam em uma ficha ou planilha.

O desafio é que esses dados falam línguas diferentes. Uma imagem tem milhões de pixels; uma ficha clínica tem uma dúzia de campos. Juntar tudo em uma única rede neural gigante é possível, mas o resultado costuma ser uma caixa-preta difícil de auditar.

Por isso decidi seguir outro caminho.

A Arquitetura em Dois Módulos

Organizei o pipeline em dois módulos independentes, que se encontram em uma fusão tardia em nível tabular. Em outras palavras: cada módulo faz o seu trabalho separadamente e só no final as informações são combinadas, como colunas de uma mesma tabela.

Diagrama do pipeline multimodal: Módulo 1 de visão computacional e Módulo 2 de predição clínica, unidos por fusão tardia

Essa escolha foi deliberada. Com os módulos desacoplados, consigo inspecionar cada etapa, entender de onde veio cada número e trocar uma peça sem desmontar o resto. Em uma PoC acadêmica, essa rastreabilidade vale mais do que alguns pontos a mais de acurácia.

Módulo 1 - Visão Computacional

O primeiro módulo recebe a ressonância e tenta responder: essa imagem foge do padrão?

  • Extração de características com ResNet50: a ResNet50 é uma rede neural já treinada em milhões de imagens. Em vez de treiná-la do zero, reaproveito o que ela já sabe (a chamada transferência de aprendizado) para transformar cada imagem em um vetor numérico, o embedding.
  • Detecção de anomalias com Isolation Forest: é um algoritmo não supervisionado, ou seja, não precisa de exemplos rotulados. A ideia é simples e elegante: pontos "estranhos" são mais fáceis de isolar do resto, e o algoritmo mede justamente isso, gerando um escore de anomalia.
  • Tradução com lógica fuzzy: a lógica fuzzy trabalha com graus de pertinência em vez de "sim ou não". Com ela, o escore numérico vira uma categoria que qualquer profissional entende: anomalia Leve, Moderada ou Severa.
  • Explicação com Grad-CAM: o Grad-CAM gera um mapa de calor sobre a imagem, mostrando em quais regiões a rede concentrou atenção. É uma forma de perguntar ao modelo "para onde você estava olhando?".

Interface da PoC: ressonância carregada ao lado do mapa visual tipo Grad-CAM

Na captura acima, o mapa à direita foi gerado pelo modo heurístico de demonstração do app (explico esse modo mais abaixo); com o TensorFlow instalado, ele é calculado pelo Grad-CAM real sobre a ResNet50.

Módulo 2 - Predição Clínica

O segundo módulo junta o resultado da imagem com o quadro clínico do paciente. As variáveis foram inspiradas no protocolo do EMSCI (European Multicenter Study about Spinal Cord Injury), uma das principais referências em pesquisa de lesão medular:

  • Escala ASIA: classifica a gravidade da lesão de A (lesão completa, sem função motora ou sensitiva abaixo do nível da lesão) a E (funções normais).
  • Força motora UEMS e LEMS: pontuações de força dos membros superiores e inferiores, cada uma de 0 a 50.
  • Nível neurológico, idade e tempo desde o trauma: informações que ajudam a contextualizar o caso.

Com tudo isso, mais o escore visual e a categoria fuzzy do Módulo 1, um modelo Random Forest estima a probabilidade de recuperação motora em 1 ano. Para ter um ponto de comparação, treinei também um XGBoost sobre a mesma base e exibo os dois lado a lado.

E para não deixar o modelo clínico virar outra caixa-preta, usei SHAP (na versão TreeSHAP, otimizada para modelos de árvores). O SHAP mostra quanto cada variável empurrou a previsão para cima ou para baixo. Assim, dá para ver se o modelo está dando peso à escala ASIA, à força motora ou à imagem.

Quando a Imagem e a Clínica Discordam

Uma das partes que mais gosto da PoC é o painel de desacoplamento. Ele mostra, lado a lado, o risco calculado só a partir da imagem e o Risco Multimodal, que considera o quadro clínico completo.

Painel da PoC comparando o risco visual isolado com o Risco Multimodal

No exemplo da captura, os dois coincidem. Mas quando o quadro clínico é grave, por exemplo escala ASIA A e força motora próxima de zero, o Risco Multimodal pode ser Alto mesmo com uma imagem classificada como "Leve". O app avisa explicitamente quando isso acontece.

Para mim, esse é o coração da proposta: a imagem informa, mas não decide sozinha. Exatamente como na prática clínica.

O Que É Real e o Que É Simulado

Aqui está um ponto que faço questão de deixar claro, porque ele faz parte do desenho do experimento, e não de uma limitação escondida no rodapé.

Parte do pipeline Situação na PoC
Imagens de ressonância (DICOM) Reais, do dataset público RSNA 2024 Lumbar Spine (Kaggle). É uma base de coluna lombar degenerativa, não de lesão medular traumática
ResNet50 + Grad-CAM Reais quando o TensorFlow está instalado; caso contrário, entra um modo heurístico de demonstração
Isolation Forest Real, treinado sobre os embeddings da ResNet50
Lógica fuzzy Implementada com regras heurísticas definidas por mim
Dados clínicos (ASIA, força motora etc.) Sintéticos, gerados para simular o protocolo EMSCI
Random Forest e XGBoost Reais, mas treinados em dados sintéticos
SHAP Real sobre os dois modelos, com fallback heurístico quando indisponível
Validade clínica Nenhuma. A PoC não faz diagnóstico nem prognóstico real

Por que treinar o modelo clínico com dados sintéticos? Porque dados clínicos reais de lesão medular, com acompanhamento de um ano, são raros, sensíveis e exigem acesso institucional e aprovação ética. Isso é trabalho para uma etapa seguinte da pesquisa.

O objetivo desta PoC era outro: demonstrar que a arquitetura funciona. Que é possível ler DICOM real, extrair sinais visuais, traduzir esses sinais em linguagem clínica, fundi-los com dados tabulares e explicar cada decisão. Nesse sentido, os dados sintéticos não são um atalho; são a forma honesta de testar o encanamento antes de abrir a torneira dos dados reais.

Engenharia: Um App Que Nunca Quebra

Toda a interface foi construída em Python com Streamlit, e o app está publicado em uma demo pública que qualquer pessoa pode testar.

Uma decisão que fez muita diferença: toda dependência opcional tem um plano B. TensorFlow, SHAP e OpenCV são bibliotecas pesadas e nem sempre estão disponíveis no ambiente. Se alguma delas faltar, o app cai automaticamente em um modo heurístico equivalente e continua funcionando. Para uma demonstração acadêmica, isso significa que a apresentação nunca para por causa de uma instalação.

Também mantive o projeto com testes automatizados e integração contínua (CI) no GitHub, rodando em várias versões do Python, e cada execução gera um relatório técnico em JSON para auditoria. O código completo está no repositório do projeto, e cada versão fica arquivada no Zenodo com DOI próprio (10.5281/zenodo.21891815), o que garante que o software citado hoje continue acessível amanhã.

E aqui vai uma transparência que acho importante, no mesmo espírito do que escrevi em Agentes de IA na Prática: parte da engenharia, como a interface, os testes e o pipeline de CI, foi feita com apoio de IA generativa, usando o Claude Code e o OpenAI Codex. Mas a concepção da pesquisa, a escolha da arquitetura em dois módulos, a camada fuzzy, a curadoria bibliográfica e a análise crítica das limitações foram decisões minhas. A IA acelerou a construção; não pensou o projeto por mim.

Como Testar a Aplicação

Se você quiser ver o pipeline funcionando, é rápido:

  1. Abra a demo pública no navegador. Não precisa instalar nada.
  2. Escolha a imagem: na barra lateral, em "Origem da MRI", selecione Upload manual e envie uma imagem PNG, JPG ou DICOM.
  3. Preencha os dados clínicos: escala ASIA, nível neurológico, força motora (UEMS e LEMS), idade e tempo desde o trauma.
  4. Execute a análise: clique em "Executar análise multimodal" (ou deixe rodar automaticamente, se essa opção estiver ativa nas Configurações).
  5. Leia os resultados de cima para baixo: escore de anomalia e classificação fuzzy, risco visual isolado versus Risco Multimodal, o mapa tipo Grad-CAM, a explicação SHAP, a comparação Random Forest versus XGBoost e, no final, o relatório técnico em JSON para download.

Uma dica para ver o desacoplamento na prática: use escala ASIA A, força motora próxima de zero e uma imagem com escore de anomalia baixo. Mesmo com a imagem classificada como "Leve", o Risco Multimodal deve ficar Alto.

Prefere rodar na sua máquina? Clone o repositório, instale as dependências e suba o app:

pip install -r requirements.txt
streamlit run app.py

Para ter o Grad-CAM real (com TensorFlow), use o Python 3.10 a 3.13; em versões mais novas, o app funciona normalmente, mas usa o modo heurístico no lugar do mapa visual.

O Que Aprendi Construindo Isso

1. Explicabilidade Não É Enfeite

Na saúde, um modelo que acerta sem conseguir explicar o porquê tem pouca utilidade. Grad-CAM e SHAP não foram detalhes de última hora; foram parte da arquitetura desde o início. Sem eles, eu mesmo teria dificuldade de confiar nos resultados.

2. Honestidade Metodológica Fortalece o Trabalho

Separar com clareza o que é real do que é simulado não diminui a pesquisa. Pelo contrário: deixa evidente o que foi demonstrado e o que ainda precisa ser validado. Percebi que essa clareza gera mais confiança do que qualquer métrica bonita.

3. Simples e Rastreável Antes de Complexo

A fusão tardia em nível tabular é menos sofisticada do que uma rede fim a fim. Mas ela me permite olhar cada etapa, entender cada número e explicar cada decisão. Em uma Prova de Conceito, isso vale ouro. A complexidade pode vir depois, quando os dados reais justificarem.

4. Traduzir Números em Linguagem Humana

Um escore de anomalia de 0,050 não diz nada para quem está na ponta. "Anomalia leve" diz. A lógica fuzzy entrou justamente para fazer essa ponte entre o que o modelo calcula e o que um profissional de saúde consegue interpretar.

5. Projetar Para o Pior Ambiente

Construir com fallbacks me ensinou a pensar no app como algo que precisa funcionar em qualquer lugar, e não só na minha máquina. É uma lição que levo da pesquisa para os projetos da Tech North.

6. IA Generativa Acelera, Mas Não Substitui o Pesquisador

Usar ferramentas como o Claude Code e o Codex me deu velocidade na engenharia. Mas todas as escolhas que importam, do problema às limitações, continuaram sendo minhas. Ferramenta boa é aquela que amplia o seu trabalho, não a que decide por você.

Próximos Passos

A PoC cumpriu o seu papel: mostrou que a arquitetura é viável. Os próximos passos naturais são trabalhar com uma base real de lesão medular traumática, com dados clínicos longitudinais, e validar os resultados junto a especialistas da área.

O artigo científico com a descrição completa do trabalho está em processo de publicação. Assim que for publicado, volto aqui para contar.

Conclusão

Este projeto reforçou uma ideia que defendo desde o post sobre IA na Saúde: a Inteligência Artificial tem enorme potencial para apoiar decisões clínicas, mas só faz sentido quando é explicável, transparente e honesta sobre os próprios limites. Unir imagem e dados clínicos é o caminho natural, porque é assim que os profissionais de saúde já pensam.

Se você está começando um projeto de IA na saúde, meu conselho é: comece pela arquitetura e pela explicabilidade, deixe claro o que é real e o que é simulado, e não tenha pressa de chegar ao modelo mais complexo. A confiança vem antes da acurácia.

E você, acredita que a IA multimodal vai mudar a forma como avaliamos pacientes nos próximos anos? Experimente a demo, deixe seu comentário aqui embaixo e, se este conteúdo foi útil, compartilhe com quem também se interessa por IA e saúde!

Referências

Compartilhe este post

Arte pronta para o Instagram

Gera a imagem com o título do post e copia uma legenda pronta com o link e as hashtags.