Treina dados personalizados
Este guia explica como treinar o teu próprio conjunto de dados personalizado com YOLOv5 🚀.
Antes de começares
Clona o repo e instala o requirements.txt em um Python>=3.8.0 incluindo PyTorch>=1.8. Os modelos e conjuntos de dados são descarregados automaticamente a partir daversão mais recente de YOLOv5 .
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
Treina em dados personalizados
Criar um modelo personalizado para detetar os teus objectos é um processo iterativo de recolha e organização de imagens, rotulando os teus objectos de interesse, treinando um modelo, implementando-o na natureza para fazer previsões e, em seguida, utilizando esse modelo implementado para recolher exemplos de casos extremos para repetir e melhorar.
Concessão de licenças
Ultralytics oferece duas opções de licenciamento:
- A licençaAGPL-3.0 , uma licença de código aberto aprovada pela OSI, ideal para estudantes e entusiastas.
- A Licença Empresarial para empresas que pretendem incorporar os nossos modelos de IA nos seus produtos e serviços.
Para mais informações, consulta Ultralytics Licensing.
YOLOv5 devem ser treinados em dados rotulados para aprenderem as classes de objectos nesses dados. Existem duas opções para criar o teu conjunto de dados antes de começares a treinar:
Opção 1: Cria um Roboflow conjunto de dados
1.1 Recolhe imagens
O teu modelo aprenderá pelo exemplo. Treinar com imagens semelhantes às que verá na natureza é da maior importância. Idealmente, recolhe uma grande variedade de imagens com a mesma configuração (câmara, ângulo, iluminação, etc.) com que irá implementar o seu projeto.
Se tal não for possível, pode começar a partir de um conjunto de dados público para treinar o seu modelo inicial e, em seguida, recolher amostras de imagens selvagens durante a inferência para melhorar o conjunto de dados e o modelo iterativamente.
1.2 Criar etiquetas
Assim que tiveres recolhido imagens, terás de anotar os objectos de interesse para criar uma base de verdade com a qual o teu modelo possa aprender.
Roboflow Annotate é uma ferramenta simples baseada na Web para gerir e etiquetar as tuas imagens com a tua equipa e exportá-las no formato de anotação deYOLOv5.
1.3 Prepara o conjunto de dados para YOLOv5
Quer etiquetes as tuas imagens com Roboflow ou não, podes utilizá-lo para converter o teu conjunto de dados para o formato YOLO , criar um ficheiro de configuração YOLOv5 YAML e alojá-lo para importação no teu script de treino.
Cria uma conta gratuita em Roboflow e carrega o teu conjunto de dados para um ficheiro Public
rotula todas as imagens não anotadas e, em seguida, gera e exporta uma versão do teu conjunto de dados em YOLOv5 Pytorch
formato.
Nota: YOLOv5 faz um aumento online durante o treino, por isso não recomendamos a aplicação de quaisquer passos de aumento em Roboflow para treinar com YOLOv5. Mas recomendamos que apliques os seguintes passos de pré-processamento:
- Orientação automática - para retirar a orientação EXIF das tuas imagens.
- Redimensionar (Stretch) - para o tamanho quadrado de entrada do teu modelo (640x640 é a predefinição do YOLOv5 ).
Ao gerar uma versão, obtém um instantâneo do seu conjunto de dados, pelo que pode sempre voltar atrás e comparar as futuras execuções de treino do modelo com este, mesmo que adicione mais imagens ou altere a sua configuração mais tarde.
Exportar em YOLOv5 Pytorch
e, em seguida, copia o snippet para o teu script de treino ou bloco de notas para descarregar o teu conjunto de dados.
Opção 2: Criar um conjunto de dados manual
2.1 Cria dataset.yaml
COCO128 é um exemplo de um pequeno conjunto de dados tutorial composto pelas primeiras 128 imagens em COCO treina2017. Estas mesmas 128 imagens são utilizadas tanto para a formação como para a validação para verificar se o nosso pipeline de formação é capaz de se sobreajustar. dados/coco128.yaml, mostrado abaixo, é o ficheiro de configuração do conjunto de dados que define 1) o diretório raiz do conjunto de dados path
e caminhos relativos para train
/ val
/ test
directórios de imagens (ou *.txt
ficheiros com caminhos de imagem) e 2) uma classe names
dicionário:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 Criar etiquetas
Depois de utilizar uma ferramenta de anotação para etiquetar as imagens, exporta as etiquetas para YOLO formato, com um *.txt
por imagem (se não houver objectos na imagem, não há *.txt
é necessário). O ficheiro *.txt
As especificações do ficheiro são:
- Uma linha por objeto
- Cada linha é
class x_center y_center width height
formato. - As coordenadas da caixa devem estar em xywh normalizado (de 0 a 1). Se as tuas caixas estiverem em pixels, divide
x_center
ewidth
por largura de imagem, ey_center
eheight
por altura da imagem. - Os números de classe são indexados a zero (começam em 0).
O ficheiro de etiquetas correspondente à imagem acima contém 2 pessoas (classe 0
) e um empate (classe 27
):
2.3 Organizar directórios
Organiza as tuas imagens e etiquetas de comboios e val de acordo com o exemplo abaixo. YOLOv5 assume /coco128
está dentro de um /datasets
diretório ao lado de o /yolov5
diretório. YOLOv5 localiza automaticamente as etiquetas para cada imagem substituindo a última instância de /images/
em cada trajetória de imagem com /labels/
. Por exemplo:
3. Selecciona um modelo
Selecciona um modelo pré-treinado para iniciar o treino. Aqui, selecionamos o YOLOv5s, o segundo menor e mais rápido modelo disponível. Vê a nossa tabela README para uma comparação completa de todos os modelos.
4. Comboio
Treina um modelo YOLOv5s no COCO128, especificando o conjunto de dados, o tamanho do lote, o tamanho da imagem e o pré-treino --weights yolov5s.pt
(recomendado), ou inicializado aleatoriamente --weights '' --cfg yolov5s.yaml
(não recomendado). Os pesos pré-treinados são descarregados automaticamente do Última versão do YOLOv5.
Dica
💡 Adiciona --cache ram
ou --cache disk
para acelerar a formação (requer recursos significativos de RAM/disco).
Dica
Treina sempre a partir de um conjunto de dados local. As unidades montadas ou de rede, como o Google Drive, serão muito lentas.
Todos os resultados do treino são guardados em runs/train/
com directórios de execução crescentes, ou seja runs/train/exp2
, runs/train/exp3
etc. Para mais informações, consulta a secção Formação do nosso caderno de tutoriais.
5. Visualiza
Comet Registo e visualização 🌟 NOVO
Comet está agora totalmente integrado com YOLOv5. Acompanha e visualiza as métricas do modelo em tempo real, guarda os teus hiperparâmetros, conjuntos de dados e pontos de verificação do modelo e visualiza as previsões do teu modelo com Comet Custom Panels! Comet garante que nunca perdes o controlo do teu trabalho e facilita a partilha de resultados e a colaboração entre equipas de todas as dimensões!
Começar é fácil:
pip install comet_ml # 1. install
export COMET_API_KEY=<Your API Key> # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
Para saber mais sobre todas as funcionalidades de Comet suportadas para esta integração, consulta a Comet Tutorial. Se quiseres saber mais sobre Comet, visita a nossa documentação. Começa por experimentar o Comet Colab Notebook:
ClearML Registo e automatização 🌟 NOVO
ClearML está completamente integrado em YOLOv5 para acompanhar a tua experimentação, gerir versões de conjuntos de dados e até executar remotamente execuções de treino. Para ativar ClearML:
pip install clearml
- corre
clearml-init
para te ligares a um servidor ClearML
Terás todas as funcionalidades esperadas de um gestor de experiências: actualizações em tempo real, carregamento de modelos, comparação de experiências, etc. mas ClearML também acompanha as alterações não confirmadas e os pacotes instalados, por exemplo. Graças a isso, as ClearML Tasks (que é o que chamamos de experimentos) também são reproduzíveis em máquinas diferentes! Com apenas uma linha extra, podemos agendar uma tarefa de treinamento YOLOv5 em uma fila para ser executada por qualquer número de agentes ClearML (trabalhadores).
Podes utilizar ClearML Data para criar uma versão do teu conjunto de dados e depois passá-lo para YOLOv5 utilizando simplesmente o seu ID único. Isto vai ajudar-te a controlar os teus dados sem te dar mais trabalho. Explora o tutorialClearML para obteres mais detalhes!
Registo local
Os resultados do treino são registados automaticamente com Tensorboard e CSV registadores para runs/train
com um novo diretório de experiências criado para cada novo treino como runs/train/exp2
, runs/train/exp3
, etc.
Este diretório contém estatísticas de train e val, mosaicos, etiquetas, previsões e mosaicos aumentados, bem como métricas e gráficos, incluindo curvas de precisão-recuperação (PR) e matrizes de confusão.
Ficheiro de resultados results.csv
é atualizado após cada época, sendo depois representado como results.png
(em baixo) após a conclusão do treino. Também podes traçar qualquer results.csv
manualmente:
from utils.plots import plot_results
plot_results('path/to/results.csv') # plot 'results.csv' as 'results.png'
Próximos passos
Quando o teu modelo estiver treinado, podes utilizar o teu melhor ponto de controlo best.pt
para:
- Corre CLI ou Python inferência em novas imagens e vídeos
- Valida a precisão nas divisões de treino, val e teste
- Exporta para os formatos TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML e TensorRT
- Evolui os hiperparâmetros para melhorar o desempenho
- Melhora o teu modelo através da amostragem de imagens do mundo real e adiciona-as ao teu conjunto de dados
Ambientes suportados
Ultralytics fornece uma gama de ambientes prontos a utilizar, cada um pré-instalado com dependências essenciais como CUDA, CUDNN, Python, e PyTorchpara dar início aos teus projectos.
- Portáteis GPU gratuitos:
- Google Cloud: Guia de início rápido do GCP
- Amazon: Guia de início rápido do AWS
- Azure: Guia de início rápido do AzureML
- Docker: Guia de início rápido do Docker
Estado do projeto
Este emblema indica que todos os testes de Integração Contínua (CI) do YOLOv5 GitHub Actions foram aprovados com êxito. Esses testes de CI verificam rigorosamente a funcionalidade e o desempenho do YOLOv5 em vários aspectos principais: treinamento, validação, inferência, exportação e benchmarks. Eles garantem uma operação consistente e confiável no macOS, Windows e Ubuntu, com testes realizados a cada 24 horas e a cada novo commit.