Salta para o conte√ļdo

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

Ultralytics aprendizagem ativa

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:

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.

YOLOv5 exatid√£o

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:

Passos recomendados para o 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.

Exporta em formato YOLOv5

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.

Roboflow snippet para descarregar o 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 e width por largura de imagem, e y_center e height por 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 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:

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

YOLOv5 estrutura do conjunto de dados

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.

YOLOv5 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.

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

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. Unidades montadas ou de rede, como 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. Abre em Colab Abre no Kaggle

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: Abre em Colab

YOLO IU

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!

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/traincom 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.

Resultados do registo local

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'

resultados.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, tais como CUDA, CUDNN, Python, e PyTorchpara dar início aos teus projectos.

Estado do projeto

YOLOv5 CI

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 posso treinar YOLOv5 no meu conjunto de dados personalizado?

Treinar YOLOv5 num conjunto de dados personalizado envolve v√°rios passos:

  1. Prepara o teu conjunto de dados: Recolhe e rotula as imagens. Usa ferramentas como Roboflow para organizar os dados e export√°-los para o formatoYOLOv5 .
  2. Ambiente de configuração: Clona o repositório YOLOv5 e instala 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: Escreve um dataset.yaml que define os percursos train/val e os nomes das classes.
  4. Treina 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 ?

Podes utilizar o Roboflow 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 imagens, utiliza 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 treinar os meus modelos YOLO ?

Ultralytics O HUB oferece uma plataforma completa para formação, implementação e gestão de modelos YOLO sem necessidade de grandes competências de codificação. As vantagens de utilizar o Ultralytics HUB incluem:

  • Treino f√°cil de modelos: Simplifica o processo de treinamento com ambientes pr√©-configurados.
  • Gest√£o de dados: Gere sem esfor√ßo conjuntos de dados e controlo de vers√Ķes.
  • Monitoriza√ß√£o em tempo real: Integra ferramentas como Comet para rastreamento 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 , utiliza Roboflow:

  1. Carrega o teu conjunto de dados para um espaço de trabalho Roboflow .
  2. Rotula as imagens se ainda n√£o estiverem rotuladas.
  3. Gerar e exportar o conjunto de dados em YOLOv5 Pytorch formato. Certifica-te 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. Transfere o conjunto de dados e integra-o no teu guião 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 pretendem integrar o YOLOv5 em produtos e servi√ßos comerciais. Para obter informa√ß√Ķes detalhadas, visita a nossa p√°gina de Licenciamento.

Para obter mais detalhes, consulta o nosso guia sobre Ultralytics Licenciamento.



Criado em 2023-11-12, Atualizado em 2024-07-10
Autores: glenn-jocher (17), Burhan-Q (1)

Coment√°rios