# Worker Seg Drone
Este projeto visa realizar a segmentação semântica de imagens aéreas em 24 diferentes classes, utilizando modelos de aprendizado de máquina. A segmentação semântica é uma tarefa em visão computacional, que permite identificar e classificar objetos ou áreas específicas dentro de imagens com alta precisão. Este projeto fornece os scripts necessários para treinar e testar modelos que podem ser aplicados em diversas áreas, como monitoramento ambiental, agricultura de precisão e gestão de desastres.
Link para o dataset utilizado no treinamento: https://drive.google.com/file/d/1DPOApjk1iS2Iv_3LMDIOt_jyuDjwnlmp/view. A rede utilizada para treinar o modelo foi a DeepLabV3 com resnet50, representada na figura abaixo:

As 24 classes diferentes se dividem em: 'sem rótulo', 'área pavimentada', 'sujeira', 'grama', 'cascalho', 'água', 'pedras', 'piscina', 'vegetação', 'telhado', 'parede', 'janela', 'porta', 'cerca', 'poste de cerca', 'pessoa', 'cachorro', 'carro', 'bicicleta', 'árvore', 'árvore-careca', 'marcador-de-ar', 'obstáculo', 'conflitante'.
##Ferramentas Utilizadas:
- **Docker:** Usado para criar um ambiente isolado e reprodutível para treinamento e teste dos modelos. A imagem Docker pode ser criada utilizando o comando:
```
docker build -t seg_drone
```
- NVIDIA Container Toolkit: Habilita o suporte a GPUs dentro dos containers Docker, permitindo treinamento mais rápido e eficiente. Instruções de instalação:
```
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.lis t | 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
```
- **Weights & Biases (WANDB):** Ferramenta de monitoramento de experiências, usada para registrar, visualizar e analisar os resultados de treinamento. Requer um arquivo .env com credenciais para autenticação via API.
### Configuração do Ambiente:
**Construção da Imagem Docker:** Para construir a imagem Docker, execute o seguinte comando na raiz do projeto:
```
docker build -t seg_drone .
```
**Execução de Containers Docker com GPU:** 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_drone
```
- Substitua /path/local/Models e /path/local/Datasets pelos caminhos locais onde os modelos e datasets estão armazenados.
- **Configuração do WANDB:** Crie um arquivo .env na raiz do projeto com o seguinte formato: `WANDB_API_KEY=`. Esse arquivo é necessário para autenticação e registro de experiências no WANDB.