Esta API realiza a segmentação de nuvens em imagens TIFF grandes, usando um modelo de deep learning pré-treinado com a arquitetura U-Net. Ela processa uma imagem de satélite TIFF, aplica filtros de contraste, gera uma máscara de segmentação e devolve a imagem final em formato TIFF com a máscara sobreposta.
Para executar o projeto, você precisa de:
- Python 3.7+
- Bibliotecas:
torchtorchvisionPillowFlasknumpy
-
Clone o repositório:
git clone https://github.com/seu-repositorio.git cd seu-repositorio/cloud-segmentation/src -
Crie um ambiente virtual e instale as dependências:
python -m venv venv source venv/bin/activate # No Windows: venv\Scripts\activate pip install -r requirements.txt
-
Certifique-se de que o modelo treinado
best_model.pthestá na mesma pasta que o código, pois ele será carregado para realizar a segmentação.
A U-Net é uma rede neural convolucional voltada para segmentação de imagens. Esta versão utiliza o resnet34 como base para as camadas de codificação, e a decodificação é feita com camadas de ConvTranspose2d para restaurar as dimensões da imagem original. A saída do modelo é uma máscara binária indicando as regiões de nuvens.
- Clone o repositório ou copie os arquivos do projeto para o seu ambiente.
- Execute a API com o comando:
python main.py
A API estará disponível em http://0.0.0.0:8000.
Este endpoint recebe uma imagem TIFF, realiza a segmentação de nuvens e retorna a imagem final em TIFF com a máscara sobreposta.
- Método:
POST - Parâmetros:
files: Arquivo de imagem TIFF enviado viamultipart/form-data.
- Resposta: Imagem em formato PNG com a máscara de nuvens sobreposta.
curl -X POST -F "files=@path/to/your/image.tiff" http://0.0.0.0:8000/predict --output output_image.tiffA resposta será a imagem TIFF sobreposta com a máscara de nuvens.
- Carregar Imagem e Aplicar Contraste: A imagem TIFF é carregada e um aumento de contraste é aplicado para melhorar a visibilidade das nuvens.
- Segmentação: A imagem é convertida para tensor e passada pelo modelo U-Net, que gera uma máscara binária indicando as regiões de nuvens.
- Sobreposição da Máscara: A máscara gerada é sobreposta à imagem original para facilitar a visualização.
- Retorno da Imagem: A imagem final com a máscara sobreposta é enviada como resposta no formato PNG.
- overlay_mask_on_image: Sobrepõe a máscara de segmentação na imagem original.
- segment_image: Aplica o modelo U-Net para gerar a máscara de segmentação.
- load_and_apply_contrast: Carrega a imagem TIFF e aplica um filtro de contraste.
UNET: Define a arquitetura U-Net baseada no ResNet34 para segmentação.- Funções de Suporte:
crop_tensor: Função que ajusta dimensões de tensores para o U-Net.predb_to_mask: Converte a predição do modelo em uma máscara binária para segmentação.
Este projeto foi desenvolvido para facilitar o processamento e segmentação de nuvens em imagens de satélite em grande escala, oferecendo um ponto de partida para melhorias na detecção e análise de nuvens.
Instruções para Contribuição: Sinta-se à vontade para enviar sugestões e melhorias para este projeto.
Observações Adicionais: Qualquer dúvida ou erro, entre em contato com o responsável pelo projeto.

