Este repositorio contém o código fonte da API desenvolvida para o projeto de detecção de incêndios/fumaça.
Nesse README estarão as instruções de como treinar o modelo e de como executar a API. Para mais informações sobre o dataset e os detalhes da implementação acesse o relatório
Primeiramente, clone o repositório e entre na pasta do projeto
git clone https://github.com/luccacb16/ugm.git
cd ugm
e em seguida, instale as dependências necessárias:
pip install -r requirements.txt
Será necessário obter uma API key do Roboflow para o download automático do dataset. Basta criar uma conta no site Roboflow e copiar a chave de acesso. Em seguida, crie um arquivo .env
na raiz do projeto e adicione a chave de acesso (assim como mostra o .env.example):
ROBOFLOW_API_KEY=<sua_chave_de_acesso>
Com as dependências instaladas e a chave de acesso configurada, é necessário escolher qual modelo será treiando. O repositório possui 2 opções de modelos para serem treinados: Faster R-CNN YOLOv8.
Acesse o diretório do modelo Faster R-CNN
cd faster_rcnn
e execute o script de treinamento:
python3 train.py
O script irá baixar o dataset na pasta especificada no arquivo config.py
, treinar o modelo e salvar os checkpoints na pasta especificada no mesmo arquivo. A cada epoch será exibida uma barra de progresso e as métricas de treinamento e validação.
Para alterar os parâmetros de configuração e os hiperparâmetros do modelo, basta editar o arquivo config.py
. Esse arquivo permite a configuração de:
- DATA_DIR: Diretório onde o dataset será baixado;
- CHECKPOINT_DIR: Diretório onde os checkpoints do modelo serão salvos;
- PRETRAINED: Se o modelo será treinado do zero ou se será utilizado um modelo pré-treinado (pesos da ImageNet);
- EPOCHS: Número de épocas de treinamento;
- BATCH_SIZE: Tamanho do batch real de treinamento;
- ACCUM_BATCHSIZE: Tamanho do batch simulado pela acumulação de gradientes;
- WEIGHT_DECAY: Peso da regularização L2 do AdamW;
- MIN_LR: Taxa de aprendizado mínima do scheduler;
- MAX_LR: Taxa de aprendizado máxima do scheduler;
- WARMUP_EPOCHS: Número de épocas de warmup do scheduler;
- DEVICE: Dispositivo de treinamento (CPU ou GPU);
- DTYPE: Tipo de dado do modelo (float16 ou bfloat16, por exemplo);
Acesse o diretório do modelo YOLOv8
cd yolo
e execute o script de treinamento:
python3 yolo.py
Para editar configurações e hiperparâmetros, acesse diretamente o arquivo yolo.py
. As configurações disponíveis são as mesmas do arquivo config.py
do Faster R-CNN.
A API está dockerizada então para executá-la basta acessar o diretório api/ugm_api
, construir a imagem Docker e depois rodá-la:
cd api/ugm_api
docker build -t ugm_api .
docker run -d -p 8000:8000 ugm_api
A API estará disponível em http://localhost:8000
.