Saltar para o conteúdo

Treinar dados personalizados

Este guia explica como treinar o seu próprio conjunto de dados personalizado com YOLOv5 🚀.

Antes de começar

Clonar repo e instalar 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 recentede YOLOv5 .

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Treinar em dados personalizados

Ultralytics aprendizagem ativa

Criar um modelo personalizado para detetar os seus objectos é um processo iterativo de recolha e organização de imagens, rotulando os seus 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.

Licenciamento

Ultralytics oferece duas opções de licenciamento:

Para mais informações, consulte Ultralytics Licenciamento.

YOLOv5 devem ser treinados em dados rotulados para aprenderem as classes de objectos nesses dados. Existem duas opções para criar o seu conjunto de dados antes de iniciar o treino:

Opção 1: Criar um Roboflow conjunto de dados

1.1 Recolher imagens

O seu modelo aprenderá pelo exemplo. É da maior importância treinar com imagens semelhantes às que verá na natureza. Idealmente, deve recolher uma grande variedade de imagens com a mesma configuração (câmara, ângulo, iluminação, etc.) que irá utilizar no seu projeto.

Se tal não for possível, pode 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

Depois de ter recolhido as imagens, terá de anotar os objectos de interesse para criar uma base de referência para o seu modelo aprender.

YOLOv5 exactidões

Roboflow Annotate é uma ferramenta simples baseada na Web para gerir e etiquetar as suas imagens com a sua equipa e exportá-las no formato de anotaçãoYOLOv5.

1.3 Preparar o conjunto de dados para YOLOv5

Quer rotule as suas imagens com Roboflow ou não, pode utilizá-lo para converter o seu conjunto de dados para o formato YOLO , criar um ficheiro de configuração YOLOv5 YAML e alojá-lo para importação no seu script de treino.

Criar uma conta gratuita em Roboflow e carregue o seu conjunto de dados para um ficheiro Public rotular todas as imagens não anotadas e, em seguida, gerar e exportar uma versão do seu conjunto de dados em YOLOv5 Pytorch formato.

Nota: YOLOv5 efectua o aumento online durante a formação, pelo que não recomendamos a aplicação de quaisquer passos de aumento em Roboflow para formação com YOLOv5. Mas recomendamos a aplicação dos seguintes passos de pré-processamento:

Passos recomendados para o pré-processamento

  • Orientação automática - para retirar a orientação EXIF das suas imagens.
  • Redimensionar (Esticar) - para o tamanho quadrado de entrada do seu modelo (640x640 é a predefinição do YOLOv5 ).

A criação de uma versão dá-lhe 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 formato YOLOv5

Exportar em YOLOv5 Pytorch e, em seguida, copie o snippet para o seu script de treino ou bloco de notas para descarregar o seu conjunto de dados.

Roboflow snippet de descarregamento do conjunto de dados

Opção 2: Criar um conjunto de dados manual

2.1 Criar dataset.yaml

COCO128 é um exemplo de um pequeno conjunto de dados tutorial composto pelas primeiras 128 imagens em COCO train2017. Estas mesmas 128 imagens são utilizadas para formação e validação para verificar se o nosso pipeline de formação é capaz de sobreajuste. 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 diretó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 suas imagens, exporte 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 suas caixas estiverem em pixéis, divida x_center e width pela largura da imagem, e y_center e height pela altura da imagem.
  • Os números de classe são indexados a zero (começam em 0).

Roboflow anotações

O ficheiro de etiquetas correspondente à imagem acima contém 2 pessoas (classe 0) e um empate (classe 27):

Roboflow pré-processamento do conjunto de dados

2.3 Organizar diretórios

Organize as imagens e etiquetas do comboio e do vale de acordo com o exemplo abaixo. YOLOv5 assume /coco128 está dentro de um /datasets diretório próximo de a /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:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 estrutura do conjunto de dados

3. Selecionar um modelo

Selecione um modelo pré-treinado para iniciar o treino. Aqui seleccionamos o YOLOv5s, o segundo modelo mais pequeno e mais rápido disponível. Veja nossa tabela README para uma comparação completa de todos os modelos.

YOLOv5 modelos

4. Comboio

Treinar um modelo YOLOv5s no COCO128 especificando o conjunto de dados, o tamanho do lote, o tamanho da imagem e o modelo pré-treinado --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 YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Dica

💡 Adicionar --cache ram ou --cache disk para acelerar a formação (requer recursos significativos de RAM/disco).

Dica

Treine sempre a partir de um conjunto de dados local. Unidades montadas ou de rede como Google Drive serão muito lentas.

Todos os resultados da formação são guardados em runs/train/ com diretórios de execução crescentes, ou seja runs/train/exp2, runs/train/exp3 etc. Para mais informações, consulte a secção Formação do nosso caderno de tutoriais. Abrir em Colab Abrir no Kaggle

5. Visualize

Comet Registo e visualização 🌟 NOVO

Comet está agora totalmente integrado com YOLOv5. Acompanhe e visualize as métricas do modelo em tempo real, guarde os seus hiperparâmetros, conjuntos de dados e pontos de controlo do modelo e visualize as previsões do modelo com Comet Custom Panels! Comet garante que nunca perde o controlo do seu 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, consulte a Comet Tutorial. Se quiser saber mais sobre Comet, aceda ao nosso documentação. Comece por experimentar o Comet Colab Notebook: Abrir em Colab

YOLO IU

ClearML Registo e automatização 🌟 NOVO

ClearML está completamente integrado em YOLOv5 para acompanhar a sua experimentação, gerir versões de conjuntos de dados e até executar remotamente treinos. Para ativar ClearML:

  • pip install clearml
  • correr clearml-init para ligar a um servidor ClearML

Terá 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).

Pode utilizar ClearML Data para criar uma versão do seu conjunto de dados e depois passá-lo para YOLOv5 utilizando simplesmente o seu ID único. Isto ajudá-lo-á a manter o controlo dos seus dados sem adicionar problemas adicionais. Explore o tutorialClearML para obter detalhes!

ClearML IU de gestão de experiências

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 nova formação 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 deprecisão-recuperação (PR) e matrizes de confusão.

Resultados do registo local

Ficheiro de resultados results.csv é atualizado após cada épocae, em seguida, traçado como results.png (em baixo) após a conclusão da formação. Também pode traçar qualquer results.csv ficheiro manualmente:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

resultados.png

Próximos passos

Quando o modelo estiver treinado, pode utilizar o seu melhor ponto de controlo best.pt para:

  • Executar CLI ou Python inferência em novas imagens e vídeos
  • Validar a precisão nas divisões de treino, val e teste
  • Exportar para TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML e TensorRT formatos
  • Evoluir os hiperparâmetros para melhorar o desempenho
  • Melhore o seu modelo através da amostragem de imagens do mundo real e adicione-as ao seu conjunto de dados

Ambientes suportados

Ultralytics fornece uma gama de ambientes prontos a utilizar, cada um pré-instalado com dependências essenciais, tais como CUDA, CUDNN, Python, e PyTorchpara dar início aos seus projectos.

Estado do projeto

YOLOv5 IC

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.

FAQ

Como é que treino YOLOv5 no meu conjunto de dados personalizado?

O treino do YOLOv5 num conjunto de dados personalizado envolve vários passos:

  1. Preparar o conjunto de dados: Recolher e etiquetar imagens. Utilize ferramentas como Roboflow para organizar os dados e exportá-los para o formatoYOLOv5 .
  2. Ambiente de configuração: Clone o repositório YOLOv5 e instale as dependências:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Criar configuração de conjunto de dados: Escrever um dataset.yaml que define os percursos train/val e os nomes das classes.
  4. Treinar o modelo:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

Que ferramentas posso utilizar para anotar o meu conjunto de dados YOLOv5 ?

Pode utilizar oRoboflow Annotate, uma ferramenta intuitiva baseada na Web para etiquetar imagens. Suporta a colaboração em equipa e exporta para o formato YOLOv5 . Depois de recolher as imagens, utilize Roboflow para criar e gerir anotações de forma eficiente. Outras opções incluem ferramentas como LabelImg e CVAT para anotações locais.

Por que razão devo utilizar o Ultralytics HUB para formar os meus modelos YOLO ?

Ultralytics O HUB oferece uma plataforma completa para formação, implementação e gestão dos modelos YOLO sem necessidade de grandes competências de codificação. Os benefícios da utilização do Ultralytics HUB incluem:

  • Treinamento fácil de modelos: Simplifica o processo de formação com ambientes pré-configurados.
  • Gestão de dados: Gerir sem esforço conjuntos de dados e controlo de versões.
  • Monitorização em tempo real: Integra ferramentas como Comet para acompanhamento e visualização de métricas em tempo real.
  • Colaboração: Ideal para projectos de equipa com recursos partilhados e fácil gestão.

Como é que converto os meus dados anotados para o formato YOLOv5 ?

Para converter dados anotados para o formato YOLOv5 utilizando Roboflow:

  1. Carregue o seu conjunto de dados para um espaço de trabalho Roboflow .
  2. Rotular as imagens, se ainda não o tiverem feito.
  3. Gerar e exportar o conjunto de dados em YOLOv5 Pytorch formato. Certifique-se de que são aplicados os passos de pré-processamento, como a orientação automática e o redimensionamento (estiramento) para o tamanho de entrada quadrado (por exemplo, 640x640).
  4. Descarregue o conjunto de dados e integre-o no seu script de formação YOLOv5 .

Quais são as opções de licenciamento para utilizar YOLOv5 em aplicações comerciais?

Ultralytics oferece duas opções de licenciamento:

  • AGPL-3.0 Licença: Uma licença de código aberto adequada para uso não comercial, ideal para estudantes e entusiastas.
  • Licença Empresarial: Adaptado para empresas que procuram integrar o YOLOv5 em produtos e serviços comerciais. Para obter informações detalhadas, visite a nossa página de Licenciamento.

Para mais informações, consulte o nosso guia sobre Ultralytics Licenciamento.

📅C riado há 1 ano ✏️ Atualizado há 1 mês

Comentários