Skip to content

Rede neural YOLOv7 para detecção de garfos no dataset COCO 2017.

License

Notifications You must be signed in to change notification settings

mtsousa/LARA-2022_Fork-Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LARA-2022_Fork-Detection

Este repositório contém o código para treinamento de uma rede neural YOLOv7 para detecção de garfos a partir do fine-tuning de um modelo pré-treinado no dataset COCO 2017.

Dados do treinamento

O modelo foi treinado no ambiente Google Colab utilizando a GPU disponível para as contas gratuitas ao longo de 100 épocas. As imagens para treinamento, validação e teste foram filtradas a partir do dataset COCO 2017 e totalizam 3555 imagens para treino, 155 para validação e 427 para teste. Os hiperparâmetros e arquivos de configuração utilizados podem ser encontados na pasta yolov7. Ao final do treinamento, o modelo obteve AP50:5:95 igual a 50,4% e AP50 igual a 73,5%, cerca de 4% e 8% maiores que o modelo original para a classe garfo.

Configuração

  • Versão do Python: 3.10.7
  • Versão do PyTorch: 1.13.1

Ambiente de desenvolvimento

  1. Crie o ambiente de desenvolvimento
python -m venv pFD
  1. Ative o ambiente de desenvolvimento

    • Em ambiente Windows (bash do git)
    source pFD/Scripts/activate
    • Em ambiente Linux
    source pFD/bin/activate
  2. Instale as dependências

pip install -r requirements.txt

Imagens para treinamento e validação

  1. Siga as instruções da pasta coco_manager para baixar as anotações e filtrá-las por categoria;

  2. Siga as instruções da pasta download_images para baixar as imagens filtradas;

  3. Siga as instruções da pasta coco2yolo para converter as anotações para o formato utilizado no modelo YOLOv7.

Observação: O código da pasta images_exploration pode ser utilizado para visualizar as imagens do dataset com as anotações das bounding boxes.

Como usar

Treinamento

yolov7.pt fork_best_640x640.pt fork_last_640x640.pt

  1. Baixe os pesos pré-treinados (yolov7.pt, fork_best_640x640.pt ou fork_last_640x640.pt) para a pasta models.

  2. Troque para a pasta yolov7 e inicie o treino do modelo

python train.py --workers 4 --device 0 --batch-size 16 --cfg cfg/training/yolov7_custom.yaml --data data/coco_custom.yaml --epochs 100 --img 640 640 --hyp data/hyp_custom.yaml --name yolov7-fork --weights models/yolov7.pt --project .

Observação: Mais informações sobre os parâmetros do treinamento podem ser encontradas no repositório do modelo ou na pasta yolov7.

  1. Caso o treino seja interrompido, execute
python train.py --resume yolov7-fork/weights/last.pt

Exportar modelo

Na pasta yolov7, execute

python export.py --img-size 640 640 --grid --end2end --weights yolov7-fork/weights/best.pt --topk-all 100 --max-wh 640 --device 0 --dynamic-batch

Observação: Mais informações sobre outras operações, como testar e inferir, podem ser encontradas no repositório do modelo ou na pasta yolov7.

Inferência com ONNX

fork_best_640x640.onnx fork_best_640x480.onnx

No diretório principal, execute

(pFD)$ python detect.py -h
usage: detect.py [-h] -m /path/to/model.onnx -i /path/to/images/ or
                 /path/to/image.jpg [-b BATCH] [-s] [-d] [-c]

Predict with YOLOv7-fork ONNX model

options:
  -h, --help            show this help message and exit
  -m /path/to/model.onnx, --model /path/to/model.onnx
                        Path to ONNX model.
  -i /path/to/images/ or /path/to/image.jpg, --input /path/to/images/ or /path/to/image.jpg
                        Path to images or path to image.
  -b BATCH, --batch BATCH
                        Batch size. (Default: 1)
  -s, --save            Save predicted image. (Default: False)
  -d, --dontshow        Don't show predicted image. (Default: False)
  -c, --cuda            Set execution on GPU. (Default: False)
  • Exemplo
python detect.py --model models/fork_best_640x640.onnx --input data/test

Resultados

Métricas

Valores obtidos para as métricas Precision (P), Recall (R), AP50 e AP50:5:95 para os modelos yolov7 considerando todas as classes, yolov7 somente a classe garfo e modelo treinado (yolov7-fork).

Modelo P R AP50 AP50:5:95
yolov7 (todas) 72,6% 64,6% 69,1% 49,7%
yolov7 (fork) 72,9% 63,3% 68% 48,3%
yolov7-fork 79,9% 68,4% 73,5% 50,4%

Predições

Os resultados das predições podem ser visto individualmente na pasta images.

Referências

About

Rede neural YOLOv7 para detecção de garfos no dataset COCO 2017.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages