Este projeto implementa um worker responsável por realizar a inferência de segmentação
de biomas em imagens, classificando-as em 4 classes distintas. O sistema é desenvolvido
com integração de ferramentas modernas como PyTorch, Weights & Biases (WANDB),
RabbitMQ e MongoDB, garantindo alta performance e escalabilidade.
Ferramentas Utilizadas:
Instale as dependências:
pip install -r requirements.txt
Inicie o worker:
python3 worker.py
Verificar Contêineres em Execução:
docker ps
Construir a Imagem Docker do Worker:
docker build -t seg-biomas-worker .
Instalar Suporte a GPUs no Docker:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o
/usr/share/keyrings/nvidia-toolkit.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list |
tee /etc/apt/sources.list.d/nvidia-toolkit.list
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g"
/etc/apt/sources.list.d/nvidia-toolkit.list
apt update
apt -y install nvidia-container-toolkit
systemctl restart docker
Executar o Contêiner do Worker:
docker run --gpus all --name seg-biomas-worker --network host \
-e RABBITMQ_URL="localhost" \
-e RABBITMQ_PORT="5672" \
-e RABBITMQ_LOGIN="guest" \
-e RABBITMQ_PASSWORD="guest" \
-e MONGODB_URL="mongodb://localhost:27017" \
-e MONGODB_USERNAME="admin" \
-e MONGODB_PASSWORD="admin" \
-e MONGODB_DB_NAME="baites-api-db" \
-e WANDB_API_KEY="API_KEY_HERE" \
seg-biomas-worker:latest
As imagens utilizadas no projeto são redimensionadas para o tamanho de:
Largura: 640 pixels
Altura: 640 pixels
Os labels usados para segmentação e suas respectivas cores (em formato BGR) são:
Road: [128, 0, 0]
Occluded Road: [0, 128, 0]
Vegetation: [128, 128, 0]
Unlabeled: [0, 0, 0]
Todas as classes utilizadas no projeto estão listadas em ALL_CLASSES
:
● Road
● Occluded Road
● Vegetation
● Unlabeled
As transformações aplicadas para processamento de imagens e máscaras incluem:
Utiliza-se transform_img
para ajustar as imagens antes de alimentá-las ao modelo:
● Redimensionamento: Para 640x640 usando interpolação bilinear.
● Conversão para Tensor: As imagens são convertidas para formato de tensor.
● Normalização: Aplicada com os seguintes parâmetros:
Aumentos de dados para melhorar a generalização do modelo são definidos em transform_aug
:
● Flip horizontal aleatório
● Flip vertical aleatório
● Rotação aleatória de até 15 graus
A transformação de máscaras é realizada usando transform_mask
:
Redimensionamento: Para 640x640 usando interpolação do tipo nearest-neighbor.
Crie um arquivo .env
na raiz do projeto com o seguinte formato:
WANDB_API_KEY=<sua_chave_de_api_wandb>
Esse arquivo é necessário para autenticação e registro de experiências no WANDB.
Para garantir que o projeto funcione corretamente, siga todos os passos descritos acima para a configuração do ambiente e instalação das dependências.