Automatizando o Diagnóstico de Pneumonia: Um Modelo Baseado em Deep Learning Pronto para Deploy
Introdução
A pneumonia é uma das principais causas de morte no mundo, especialmente em populações vulneráveis como crianças e idosos. O diagnóstico precoce e preciso dessa condição é essencial para salvar vidas. Com o avanço da inteligência artificial, eu desenvolvi um modelo de aprendizado profundo (deep learning) para automatizar essa tarefa e oferecer suporte para médicos na análise rápida e precisa de exames.
Neste artigo, apresento o projeto que utilizei para detectar pneumonia em imagens de raio-X, destacando as dificuldades enfrentadas e as soluções que implementei. A arquitetura utilizada foi a EfficientNetB0, uma rede neural profunda pré-treinada, ajustada para esse propósito. Com métricas sólidas e desempenho robusto, considero este modelo pronto para deploy. Foi utilizado dataset com imagens reais de pacientes sendo crianças entre 6 a 12 anos.
Objetivo do Projeto
O meu objetivo principal foi criar um modelo que, com base em imagens de raio-X, pudesse classificar pulmões em duas categorias:
- NORMAL: Pulmões sem sinais de pneumonia.(ABAIXO)

- PNEUMONIA: Pulmões com sinais de pneumonia. (ABAIXO)

Desde o início, priorizei que o modelo tivesse alta sensibilidade (recall) para a classe PNEUMONIA
, minimizando falsos negativos. Essa decisão foi baseada na gravidade das consequências de um diagnóstico incorreto de pneumonia. Além disso, foquei em garantir um equilíbrio geral no modelo, mantendo precisão (precision) adequada para evitar falsos positivos desnecessários.
Dificuldades Enfrentadas no Desenvolvimento
Durante o desenvolvimento do modelo, enfrentei vários desafios, e explico abaixo as dificuldades e as soluções que implementei:
- Desbalanceamento do Dataset
Ao analisar o conjunto de dados, percebi que havia um desbalanceamento significativo entre as classes. A classePNEUMONIA
tinha uma quantidade muito maior de imagens do que a classeNORMAL
. Isso fazia com que o modelo inicial fosse enviesado para a classe majoritária, prejudicando o recall da classeNORMAL
.Solução Implementada:
Para resolver esse problema, inicialmente utilizei Random Oversampling, duplicando amostras da classeNORMAL
para equilibrar o dataset. No entanto, após análise, substituí essa abordagem pelo SMOTE (Synthetic Minority Oversampling Technique), que gera amostras sintéticas da classe minoritária. Com isso, aumentei a diversidade dos dados da classeNORMAL
, reduzindo redundâncias. - Perda de Informação em Redução de Dimensionalidade
Em uma das abordagens, optei por utilizar o PCA (Principal Component Analysis) para reduzir a dimensionalidade dos embeddings gerados pelo EfficientNetB0. Apesar de melhorar a eficiência computacional, percebi que a redução estava comprometendo o desempenho do modelo, especialmente o recall da classeNORMAL
.Solução Implementada:
Para resolver isso, removi o PCA e trabalhei diretamente com os embeddings completos gerados pela EfficientNetB0. Essa decisão preservou mais informações das imagens, permitindo que o modelo capturasse padrões relevantes para ambas as classes. - Ajuste Fino do Modelo
Durante o treinamento do modelo, percebi que ajustes cuidadosos na taxa de aprendizado, arquitetura e regularização eram necessários para evitar overfitting. Encontrar o equilíbrio correto entre essas variáveis foi desafiador.Solução Implementada:
Descongelei as camadas convolucionais da EfficientNetB0 para realizar fine-tuning com os dados específicos do projeto. Adicionei Dropout (40%) e regularização L2 para prevenir overfitting. Além disso, implementei early stopping, interrompendo o treinamento quando não havia melhoria na perda de validação após 8 épocas consecutivas.
Arquitetura do Modelo
Para construir o modelo, utilizei a EfficientNetB0, uma rede neural pré-treinada no ImageNet, conhecida por sua eficiência e precisão. Adaptei essa arquitetura para o problema de detecção de pneumonia com as seguintes alterações:
- Descongelei as camadas convolucionais para permitir treinamento fino com os dados específicos.
- Adicionei uma camada densa com 512 neurônios e ativação ReLU.
- Adicionei Dropout de 40% após a camada densa para reduzir overfitting.
- Finalizei com uma camada sigmoidal para previsão binária (
NORMAL
ouPNEUMONIA
).
Para garantir a estabilidade durante o treinamento, reduzi a taxa de aprendizado para 1e-6.
Métricas de Avaliação
No conjunto de teste, utilizei o threshold padrão de 0.5 para classificar as imagens. Os resultados foram os seguintes:
- Matriz de Confusão:Predito
NORMAL
PreditoPNEUMONIA
VerdadeiroNORMAL
18054 VerdadeiroPNEUMONIA
38352 - Relatório de Classificação:
- Classe
NORMAL
:- Precision: 83%
- Recall: 77%
- F1-Score: 80%
- Classe
PNEUMONIA
:- Precision: 87%
- Recall: 90%
- F1-Score: 88%
- Métricas Gerais:
- Accuracy: 85.3%
- Loss no conjunto de teste: 0.417
- Classe
- Análise das Métricas:
- O recall para
PNEUMONIA
(90%) demonstra que o modelo está capturando a maioria dos casos reais de pneumonia. - A precisão para
PNEUMONIA
(87%) indica que o modelo gera previsões confiáveis para essa classe. - O F1-Score equilibrado (88% para
PNEUMONIA
e 80% paraNORMAL
) mostra que o modelo é robusto e balanceado.
- O recall para
Conclusão e Prontidão para Deploy
Após resolver as dificuldades encontradas e ajustar o pipeline, alcancei resultados robustos e consistentes. Acredito que o modelo está pronto para deploy, com as seguintes características principais:
- Alta Sensibilidade para Pneumonia:
Com recall de 90% paraPNEUMONIA
, o modelo minimiza falsos negativos, reduzindo o risco de diagnósticos incorretos. - Equilíbrio Geral:
O modelo mantém um bom equilíbrio entre recall e precisão, garantindo previsões confiáveis para ambas as classes. - Impacto Clínico:
Este modelo pode ser integrado como uma ferramenta de apoio ao diagnóstico médico, permitindo análises rápidas e precisas.
Este projeto representa um avanço significativo na aplicação de inteligência artificial para o diagnóstico médico, demonstrando que é possível aliar eficiência e precisão na análise de imagens de raio-X para detecção de pneumonia. Com a integração da arquitetura EfficientNetB0, ajustes cuidadosos no pipeline e estratégias eficazes para balanceamento de dados, foi possível desenvolver um modelo robusto, com métricas equilibradas e pronto para ser implementado em ambiente clínico, eu sempre afirmo que existe espaço para melhoras sim no ajuste dos modelos de machine learning. Este modelo não apenas otimiza o processo de diagnóstico, reduzindo o tempo necessário para a análise manual, mas também oferece suporte valioso aos profissionais de saúde, aumentando a taxa de acerto em um problema tão crítico. Mais do que uma ferramenta técnica, este projeto destaca o potencial transformador da inteligência artificial na medicina, trazendo benefícios diretos para pacientes e profissionais ao redor do mundo.
- Containers Docker em Ciência de Dados - 11 de março de 2025
- Kubernetes Gerenciamento Eficiente de Containers - 4 de março de 2025
- MLflow: A Chave para Experimentos de Machine Learning - 21 de fevereiro de 2025