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.
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
O projeto utiliza o dataset COVID-19 Radiography Database disponível no Kaggle, que contém milhares de imagens de raio-X rotuladas.
- 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
├── 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
- Python 3.8+
- GPU NVIDIA com CUDA (recomendado)
- Conta no Kaggle (para download do dataset)
- Clone o repositório:
git clone <url-do-repositorio>
cd covid-radiography-classification
- Instale as dependências:
pip install -r requirements.txt
- Configure suas credenciais do Kaggle:
# Coloque seu kaggle.json em ~/.kaggle/
kaggle datasets download -d tawsifurrahman/covid19-radiography-database
- Execute o treinamento:
python train.py
- Construa a imagem:
docker build -t covid-classification .
- Execute o container:
docker run --gpus all -v $(pwd):/app covid-classification
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
- Flip horizontal e vertical aleatório
- Rotação aleatória (±20%)
- Zoom aleatório (±10%)
- Contraste aleatório (±20%)
O modelo gera os seguintes outputs:
loss_plot.png
: Gráfico da evolução da loss durante o treinamentoacc_plot.png
: Gráfico da evolução da acuráciaconfusion_matrix.png
: Matriz de confusão no conjunto de validaçãocovid_model.h5
: Modelo completo salvoweights.h5
: Pesos do modelo
- 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
- Early Stopping: Para em 5 épocas sem melhoria
- Reduce LR on Plateau: Reduz learning rate em 50% após 3 épocas sem melhoria
- 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
- 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
Este projeto é disponibilizado para fins educacionais e de pesquisa. Consulte os termos de uso do dataset original no Kaggle.
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.