Skip to content

AQUA-Monitoring/image_based_flood_detection_system

 
 

Repository files navigation

Detecção de Alagamentos com Machine Learning

Este projeto implementa um sistema de Machine Learning para detectar automaticamente se um local está alagado a partir de imagens usando apenas dados reais.

Problema

Detectar alagamentos é crucial para:

  • Monitoramento urbano em tempo real
  • Sistemas de alerta precoce
  • Análise de riscos ambientais
  • Gestão de emergências

Abordagem

O projeto utiliza Deep Learning com redes neurais convolucionais (CNN) para classificar imagens em duas categorias:

  • Alagado: Local com presença de água acumulada
  • Normal: Local sem sinais de alagamento

Estrutura do Projeto

flood-detection/
├── data/
│   └── train/
│       ├── flooded/
│       └── normal/
├── models/
│   └── best_real_model.pth  (Modelo treinado)
├── src/
│   ├── model.py
│   ├── retrain_real.py
│   └── predict_simple.py
├── predictions/
├── requirements.txt
└── README.md

Metodologia

1. Preparação dos Dados

  • 72 imagens reais (58 alagadas + 14 normais)
  • Redimensionamento para 224x224 pixels
  • Data augmentation (flip, rotação, ajuste de cores)

2. Modelo de Deep Learning

  • ResNet50 com transfer learning
  • 100% de acurácia na validação
  • Fine-tuning inteligente com camadas congeladas
  • Trained exclusivamente com dados reais

3. Características Detectadas

  • Presença de água acumulada
  • Reflexos na superfície
  • Mudanças na textura do pavimento
  • Objetos parcialmente submersos
  • Alterações na coloração do ambiente

📊 Onde Obter Dados para Treinamento

IMPORTANTE: Para treinar o modelo, você precisa de imagens de alagamentos e locais normais. Consulte DATA_SOURCES.md para um guia completo com:

  • Datasets públicos (FloodNet, Sen1Floods11, NASA)
  • APIs e ferramentas (Google Earth Engine, Copernicus)
  • Coleta própria (celular, drones, câmeras)
  • Scripts de download automatizados

Opções Recomendadas:

  1. FloodNet Dataset - IEEE DataPort
  2. Coleta própria com celular em locais alagados/normais
  3. Sen1Floods11 - Dados de satélite

Instalação e Uso com Makefile

O projeto inclui um Makefile para facilitar o uso. Comandos disponíveis:

Configuração Inicial

make install          # Configura ambiente virtual e instala dependências
make status           # Mostra status do projeto (dados, modelo, ambiente)
make info             # Informações detalhadas do sistema

Treinamento

make train            # Treina modelo com dados reais em data/train/

Predição de Imagens

make predict IMG=sua_imagem.jpg                    # Prediz uma imagem específica
make predict-batch DIR=pasta_com_imagens/          # Prediz todas as imagens de uma pasta

Testes

make test             # Testa modelo nas imagens de exemplo
make test-all         # Testa modelo em todas as imagens de data/test/

Utilitários

make clean            # Remove arquivos temporários e cache
make clean-all        # Remove tudo (modelos, ambiente virtual)
make help             # Mostra todos os comandos disponíveis

Exemplos de Uso

# Configuração inicial (apenas uma vez)
make install

# Treinar modelo com seus dados
make train

# Testar em imagens de exemplo
make test

# Predizer uma imagem específica
make predict IMG=data/test/flooded-001.jpg

# Ver status do projeto
make status

Resultados Alcançados

100% de acurácia na validação
Modelo treinado com dados reais
Inferência rápida (<1 segundo por imagem)
Transfer learning efetivo com ResNet50
Fine-tuning inteligente

Arquivos Principais

  • src/retrain_real.py: Script para treinar CNN com dados reais
  • src/predict_simple.py: Preditor que usa apenas CNN treinada
  • src/model.py: Definições dos modelos disponíveis
  • models/best_real_model.pth: Modelo treinado (100% acurácia)

Comandos Rápidos (Makefile)

Comando Descrição
make install Configura ambiente e instala dependências
make train Treina modelo com dados reais
make predict IMG=foto.jpg Prediz uma imagem específica
make test Testa modelo nas imagens de exemplo
make status Mostra status do projeto
make help Lista todos os comandos disponíveis

Status do Projeto

🎯 MODELO FUNCIONAL: CNN treinada com dados reais funciona corretamente 📊 PERFORMANCE: 100% acurácia na validação, boa detecção em imagens reais 🔧 MELHORIA CONTÍNUA: Pequenos ajustes para casos específicos

Próximos Passos

  1. Aumentar dataset: Adicionar mais imagens normais para melhor balanceamento
  2. Testes extensivos: Validar em mais imagens reais
  3. Otimização: Ajustar thresholds se necessário
  4. Deploy: Preparar para uso em produção

About

Este projeto implementa um sistema de Machine Learning para detectar automaticamente se um local está alagado a partir de imagens usando apenas dados reais.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 80.5%
  • Makefile 19.5%