Este projeto tem o objetivo de fazer a segmentação de vegetação, estradas e obstruções de estradas em imagens aéreas, utilizando modelos de aprendizado de máquina. A segmentação de imagens é uma tarefa essencial em visão computacional, que consiste em classificar a imagem em uma das categorias definidas.
Ao focar na segmentação de vegetação, estradas e obstruções, o projeto apoiar aplicações como planejamento urbano, monitoramento ambiental e manutenção de infraestrutura. Para isso, são utilizados modelos de aprendizado de máquina treinados com o NITRDrone Dataset (NITRDD), que oferece imagens aéreas anotadas de alta qualidade.
O uso de técnicas avançadas de processamento de imagens e aumento de dados garante que os modelos sejam bons e capazes de lidar com a variabilidade das condições de captura. Além disso, a integração com ferramentas como Docker e NVIDIA Container Toolkit facilita a execução em ambientes reprodutíveis e otimizados para GPUs, garantindo um treinamento eficiente e escalável.
O projeto utiliza o NITRDrone Dataset (NITRDD), um conjunto de dados que fornece imagens aéreas anotadas para tarefas de segmentação. O dataset pode ser acessado através do link abaixo:
Download do NITRDD
Usado para criar um ambiente isolado e reprodutível para treinamento e teste dos modelos.
A imagem Docker é criada utilizando o comando docker build -t seg_biomas
.
Necessário para habilitar o suporte a GPUs dentro dos containers 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
Utilizado para monitoramento, visualização e registro de experimentos.
Requer um arquivo .env
com as credenciais da API para autenticação.
Bibliotecas principais utilizadas para o treinamento e inferência de modelos de aprendizado de máquina.
Configurações de transformação de imagens e máscaras são implementadas utilizando o módulo torchvision.transforms.v2.
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:
○ Mean: [0.485, 0.456, 0.406]
○ Std: [0.229, 0.224, 0.225]
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.
Execute o seguinte comando na raiz do projeto para construir a imagem Docker:
docker build -t seg_biomas .
Para executar um container com suporte a GPU, use o comando:
docker run --gpus all -v /path/local/Models:/workspace/Models -v
/path/local/Datasets:/workspace/Datasets -it seg_biomas
Substitua /path/local/Models
e /path/local/Datasets
pelos caminhos locais onde os modelos e datasets estão armazenados.
Certifique-se de ter 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 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.