O PneumoFinder é uma API RESTful desenvolvida em Flask que utiliza Redes Neurais Convolucionais (CNNs) para análise de radiografias de pulmão.
A aplicação é capaz de:
- Verificar se a imagem enviada é de um pulmão.
- Detectar sinais de pneumonia em radiografias.
- Fornecer diagnósticos completos com nível de confiança.
- Integrar-se ao WhatsApp via Twilio, permitindo que o usuário envie a radiografia e receba o diagnóstico diretamente no aplicativo de mensagens.
/verificar_pulmao→ Verifica se a imagem enviada é de um pulmão./diagnosticar_pneumonia→ Detecta pneumonia em uma radiografia de pulmão./diagnostico_completo→ Faz a verificação completa: primeiro identifica se é pulmão e, se confirmado, analisa a presença de pneumonia./webhook→ Endpoint conectado ao Twilio para receber mensagens no WhatsApp com imagens de radiografias e retornar automaticamente o diagnóstico.
- Python 3.x
- Flask
- Flask-CORS
- TensorFlow / Keras
- Twilio API
- dotenv
- requests
PneumoFinder/
│── models/ # Modelos treinados (.keras)
│ ├── pneumonia_model.keras
│ └── pulmao_model.keras
│
│── service/
│ ├── pneumonia_service.py # Classe DetectorDePneumonia
│ └── pulmao_service.py # Classe DetectorDePulmao
│
│── imgs_pulmoes/ # Pasta para armazenar imagens recebidas via WhatsApp
│
│── temp/ # Pasta temporária para upload de imagens
│
│── app.py # API principal (diagnósticos REST)
│── webhook.py # Integração com WhatsApp via Twilio (renomear chat_bot_service.py)
│── requirements.txt # Dependências do projeto
│── .gitignore # Ignorar venv, temp, etc.
│── notes.txt # Anotações auxiliares (se quiser manter)
│── testar_modelo.py # Script para testar localmente os modelos
-
Clone este repositório:
git clone https://github.com/seu-usuario/pneumofinder.git cd pneumofinder -
Crie um ambiente virtual e instale as dependências:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows pip install -r requirements.txt
-
Configure as variáveis de ambiente no arquivo
.env:TWILIO_ACCOUNT_SID=seu_sid TWILIO_AUTH_TOKEN=seu_token
-
Execute a API:
python app.py
-
Para rodar o webhook do WhatsApp:
python chat_bot_service.py
curl -X POST http://localhost:5001/diagnostico_completo -F "imagem=@radiografia_teste.jpg"Resposta esperada:
{
"classe_pulmao": "PULMÃO",
"confianca_pulmao": 0.98,
"classe_pneumonia": "NORMAL",
"confianca_pneumonia": 0.92
}📸 Exemplo de envio de radiografia e resposta do bot:
- O modelo espera imagens no formato e tamanho específico (224x224).
- As imagens são normalizadas antes de serem enviadas ao modelo.
- O projeto está em ambiente local para testes. Para produção, considere segurança, performance e escalabilidade.
O modelo é uma CNN treinada com base em imagens reais de pulmões com e sem pneumonia. Ele foi salvo no formato .keras e carregado diretamente pelo backend.
A predição é feita utilizando limiar de 0.5 para classificar como NORMAL ou PNEUMONIA. Os modelos atualmente apresentam cerca de 80% de acurácia nas previsões,
mas o objetivo é continuar aprimorando o treinamento para aumentar este valor e garantir resultados ainda mais confiáveis.
Contribuições são bem-vindas! Sinta-se livre para abrir issues ou enviar pull requests com melhorias, correções ou novas funcionalidades.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
