Skip to content

olavodd42/covid_exam_detection

Repository files navigation

COVID-19 Radiography Classification

Este projeto implementa um modelo de Deep Learning para classificação de imagens de radiografia torácica, identificando casos de COVID-19, pneumonia viral, pneumonia bacteriana e pulmões normais.

📋 Descrição

O modelo utiliza uma arquitetura de Rede Neural Convolucional (CNN) para classificar imagens de raio-X do tórax em 4 categorias:

  • COVID-19: Casos positivos para COVID-19
  • Pneumonia Viral: Pneumonia causada por vírus
  • Pneumonia Bacteriana: Pneumonia causada por bactérias
  • Normal: Pulmões saudáveis

🎯 Dataset

O projeto utiliza o dataset COVID-19 Radiography Database disponível no Kaggle, que contém milhares de imagens de raio-X rotuladas.

🛠️ Tecnologias Utilizadas

  • TensorFlow 2.15: Framework principal para Deep Learning
  • Keras: API de alto nível para construção do modelo
  • NumPy: Manipulação de arrays
  • Matplotlib: Visualização de dados e métricas
  • Scikit-learn: Métricas de avaliação
  • KaggleHub: Download automático do dataset

📁 Estrutura do Projeto

├── train.py              # Script principal de treinamento
├── requirements.txt      # Dependências do projeto
├── Dockerfile           # Container Docker para execução
├── download.py          # Script para download de dados (vazio)
├── .gitignore          # Arquivos ignorados pelo Git
└── README.md           # Este arquivo

🚀 Como Executar

Pré-requisitos

  • Python 3.8+
  • GPU NVIDIA com CUDA (recomendado)
  • Conta no Kaggle (para download do dataset)

Instalação Local

  1. Clone o repositório:
git clone <url-do-repositorio>
cd covid-radiography-classification
  1. Instale as dependências:
pip install -r requirements.txt
  1. Configure suas credenciais do Kaggle:
# Coloque seu kaggle.json em ~/.kaggle/
kaggle datasets download -d tawsifurrahman/covid19-radiography-database
  1. Execute o treinamento:
python train.py

Execução com Docker

  1. Construa a imagem:
docker build -t covid-classification .
  1. Execute o container:
docker run --gpus all -v $(pwd):/app covid-classification

🏗️ Arquitetura do Modelo

O modelo implementa uma CNN com as seguintes características:

  • Pré-processamento: Normalização (0-255 → 0-1) e data augmentation
  • Camadas Convolucionais: 4 blocos Conv2D + MaxPooling2D
  • Regularização: Dropout (0.5) para prevenir overfitting
  • Classificação: GlobalAveragePooling2D + Dense layers
  • Saída: 4 classes com ativação softmax

Data Augmentation

  • Flip horizontal e vertical aleatório
  • Rotação aleatória (±20%)
  • Zoom aleatório (±10%)
  • Contraste aleatório (±20%)

📊 Métricas e Resultados

O modelo gera os seguintes outputs:

  • loss_plot.png: Gráfico da evolução da loss durante o treinamento
  • acc_plot.png: Gráfico da evolução da acurácia
  • confusion_matrix.png: Matriz de confusão no conjunto de validação
  • covid_model.h5: Modelo completo salvo
  • weights.h5: Pesos do modelo

⚙️ Configurações

Hiperparâmetros

  • Tamanho da imagem: 224x224 pixels
  • Batch size: 16
  • Learning rate: 1e-4 (Adam optimizer)
  • Épocas máximas: 30
  • Divisão treino/validação: 80/20

Callbacks

  • Early Stopping: Para em 5 épocas sem melhoria
  • Reduce LR on Plateau: Reduz learning rate em 50% após 3 épocas sem melhoria

🎯 Considerações de Performance

  • O modelo suporta GPU para acelerar o treinamento
  • Configuração automática de memory growth para GPUs NVIDIA
  • Prefetching dos dados para otimização de I/O
  • Data augmentation apenas no conjunto de treino

📝 Próximos Passos

  • Implementar transfer learning com modelos pré-treinados
  • Adicionar métricas como precision, recall e F1-score
  • Criar interface web para predições
  • Implementar cross-validation
  • Adicionar interpretabilidade com Grad-CAM

📄 Licença

Este projeto é disponibilizado para fins educacionais e de pesquisa. Consulte os termos de uso do dataset original no Kaggle.

🤝 Contribuições

Contribuições são bem-vindas! Por favor, abra uma issue antes de submeter pull requests significativas.


Nota: Este modelo é apenas para fins educacionais e de pesquisa. Não deve ser usado para diagnóstico médico real sem validação clínica adequada.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published