Do Zero ao Detector: Como Criei um Modelo YOLOv8 Personalizado com o Projeto "Olhar Seletivo"
Olá, comunidade!
No mundo da visão computacional, os modelos pré-treinados no dataset COCO são um ponto de partida fantástico. Com suas 80 classes de objetos, eles são incrivelmente poderosos. Mas, e quando seu projeto precisa de um detector leve, rápido e especializado em apenas duas ou três dessas classes? Foi exatamente esse o desafio que me propus a resolver com o projeto "Olhar Seletivo".
Neste artigo, vou compartilhar o pipeline completo que construí para automatizar a criação de um modelo YOLOv8 treinado para detectar apenas pessoas
e carros
, transformando um processo complexo em uma série de scripts executáveis e organizados.
O Desafio: Eficiência e Foco
Usar um modelo YOLOv8 pré-treinado é ótimo, mas carregar uma rede que conhece 80 categorias de objetos para detectar apenas duas é um desperdício de recursos. Além disso, o processo de baixar o gigantesco dataset COCO, filtrar as anotações corretas e convertê-las para o formato YOLO (.txt
) é um trabalho manual, demorado e propenso a erros.
O objetivo era claro: criar um fluxo de trabalho automatizado, replicável e eficiente.
A Solução: Um Pipeline Automatizado com "Olhar Seletivo"
Para resolver esse problema, estruturei um projeto no GitHub com uma série de scripts que cuidam de todo o trabalho pesado. A escolha da tecnologia foi estratégica:
YOLOv8: Pela sua arquitetura de ponta, velocidade e facilidade de uso fornecida pela Ultralytics.
Python: Pela sua versatilidade e pelo ecossistema robusto de bibliotecas para ciência de dados.
PyCOCOtools: Para manipular as anotações do dataset COCO de forma programática.
O projeto foi organizado em um pipeline lógico de 4 etapas principais, mais as ferramentas de relatório.
Passo 1: Preparação e Automação dos Dados
O primeiro e mais crucial passo foi a criação do script 1_prepare_dataset.py
. Ele é o coração da automação, responsável por:
- Baixar as imagens de validação do COCO 2017 e os arquivos de anotações.
- Filtrar o arquivo JSON gigante para encontrar apenas as imagens e anotações relacionadas às classes de interesse (
person
ecar
). - Converter as anotações do formato COCO (bbox
[x, y, largura, altura]
) para o formato YOLO (normalizado[class_id, x_center, y_center, w, h]
). - Organizar tudo em uma estrutura de pastas limpa, pronta para o treinamento.
Passo 2: Treinamento do Modelo YOLOv8
Com os dados perfeitamente organizados, o script 2_train_model.py
entra em ação. Utilizando a biblioteca ultralytics
, ele carrega o modelo pré-treinado yolov8n.pt
e inicia o fine-tuning (ajuste fino) sobre nosso dataset personalizado. A configuração do dataset é definida em um arquivo coco_custom.yaml
, o que torna o processo modular e fácil de ajustar.
YAML
# config/coco_custom.yaml
path: ../datasets/coco_custom
train: images/val2017
val: images/val2017
names:
0: person
1: car