1. Configuração do Ambiente e Preparação dos Dados
Este guia apresenta o processo completo para treinar o modelo YOLOv11 no dataset TT100K para detecção de sinais de trânsito. O TT100K é um dataset desenvolvido pela Tsinghua University em colaboração com a Tencent, contendo mais de 100.000 imagens com anotações de diversos sinais de trânsito, cobrindo diferentes condições de iluminação e clima.
A detecção de sinais de trânsito é um componente essencial para sistemas de direção autônoma e inteligência de transporte. O TT100K apresenta um desafio significativo: muitos sinais aparecem como objetos muito pequenos nas imagens, caracterizando um problema típico de detecção de objetos pequenos. O YOLOv11 oferece um equilíbrio excelente entre velocidade e precisão, sendo particularmente eficiente para detectar objetos de dimensões reduzidas.
O primeiro passo é configurar o ambiente de desenvolvimento. Recomenda-se utilizar o Miniconda para gerenciar o ambiente Python, isolando as dependências do projeto e evitando conflitos de versão. Execute os seguintes comandos no terminal:
conda create -n yolov11_tt100k python=3.10
conda activate yolov11_tt100k
Com o ambiente criado, o próximo passo é instalar o PyTorch. A instalação varia conforme a placa de vídeo disponível. Para placas NVIDIA da série 30 ou 40, utilize CUDA 11.3 ou superior:
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 cudatoolkit=11.7 -c pytorch
Para placas mais antigas das séries 10 ou 20:
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=10.2 -c pytorch
Para sistemas sem GPU NVIDIA, utilize a versão CPU:
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cpuonly -c pytorch
Agora, instale a biblioteca Ultralytics que contém a implementação do YOLOv11:
pip install ultralytics
Alternativamente, para instalar a versão mais recente do repositório oficial:
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
O dataset TT100K original contém mais de 300 categorias, porém muitas possuem poucas amostras, o que dificulta o treinamento eficaz. Para este projeto, foram selecionadas 42 categorias com quantidade suficiente de amostras, incluindo sinais de limite de velociadde (pl30, pl40), sinais de parada (p3), sinais de atenção (w57), entre outros. O dataset processado deve ser extraído para um diretório acessível, por exemplo, em D:/datasets/tt100k_42.
A estrutura do dataset deve seguir o formato esperado pelo YOLO:
tt100k_42/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
Em seguida, crie um arquivo de configuração YAML no diretório principal do projeto:
# tt100k_42.yaml
path: D:/datasets/tt100k_42
train: images/train
val: images/val
nc: 42
names: ['i2','i4','i5','il100','i160','il80','io','ip','p10','p11',
'p12','p19','p23','p26','p27','p3','p5','po','pg','ph4','ph4.5',
'pl100','pl120','pl20','pl30','pl40','pl5','pl50','pl60','pl70',
'pl80','pm20','pm30','pm55','pn','pne','po','pr40','w1','w2',
'w3','w4','w5','w6','w7','w8','w9','wa','wb','wc']
Este arquivo configura os caminhos para as imagens de treino e validação, o número de classes e seus respectivos nomes.