Ultralytics YOLO27: Inscreve-te na lista de espera.
Get Started
Aulainiciante

Escrever um YAML do conjunto de dados

Escreve o data.yaml que aponta o Ultralytics para as tuas pastas e dá nome às classes, garante que os caminhos são válidos a partir de qualquer diretório e testa-o com yolo val.

O YAML do conjunto de dados é o contrato entre as tuas pastas e todos os comandos do Ultralytics. Se um caminho estiver errado, nada é executado; se a ordem das classes estiver errada, tudo é executado, mas todas as previsões ficam com nomes incorretos e sem qualquer aviso.

Nesta lição, vais escrever data.yaml para o conjunto de dados de comprimidos, aprender exatamente como o Ultralytics resolve os caminhos para que também funcione na máquina de um colega e comprová-lo com uma execução de validação de uma linha, que também te dá a referência que o teu treino terá de superar.

Resultado

Consegues escrever um data.yaml cujos caminhos sejam válidos a partir de qualquer diretório de trabalho, manter os índices das classes consistentes e ler a linha de análise yolo val para confirmar que o conjunto de dados está corretamente ligado.

Via rápida
Se já sabes orientar-te, aqui está a versão resumida.
  1. Define path como a raiz do conjunto de dados e train/val como pastas de imagens relativas a essa raiz.

  2. Indica names como índice → nome, exatamente como nos ficheiros de rótulos.

  3. Executa yolo val model=yolo26n.pt data=my_dataset/data.yaml e lê a linha de análise.

  4. Torna path absoluto antes de o partilhares; acrescenta apenas classes novas.

Prático

Escrever o ficheiro#

Página de perfil da Ultralytics Platform com a lista dos conjuntos de dados de um utilizador e um botão Novo conjunto de dados

Os conjuntos de dados na Ultralytics Platform têm as suas próprias classes e divisões; o treino aponta para eles com um URI como data=ul://username/datasets/name. Na tua própria máquina, o YAML é esse contrato. Guarda-o como my_dataset/data.yaml:

path: my_dataset # dataset root: absolute, or relative to where you run yolo
train: images/train # relative to path
val: images/val # relative to path
# test: images/test  # optional held-out split

names:
  0: pill
ChaveObrigatórioSignificado
pathNãoRaiz do conjunto de dados; train, val e test são relativos a esta raiz. Se omitida, usa-se a pasta do próprio YAML.
train, valSimUma pasta de imagens, um ficheiro .txt com uma lista de caminhos para imagens ou uma lista de qualquer um dos dois.
testNãoImagens de teste reservadas, avaliadas apenas com split=test.
namesSimÍndice da classe → nome; o comprimento determina o número de classes.
downloadNãoURL ou script que obtém o conjunto de dados quando faltam as imagens.

train e val apontam para pastas de imagens; os rótulos são encontrados substituindo images por labels. O YAML coco8 é uma referência mínima funcional, e o YAML VOC apresenta um exemplo mais completo.

Exemplo prático: testar rapidamente#

A validação com o modelo pré-treinado é a verificação completa mais rápida. Lê todas as imagens e os rótulos, comunica problemas e calcula métricas:

yolo val model=yolo26n.pt data=my_dataset/data.yaml
val: Scanning my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt: 100%
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399     0.0256    0.00251      0.001     0.0002

Lê os resultados pela ordem:

  1. Scanning my_dataset/labels/val: a pasta que o Ultralytics resolveu na prática. Confirma que é a pretendida.
  2. 23 images, 0 backgrounds, 0 corrupt: todas as imagens de validação têm um ficheiro de rótulos válido. Imagens de fundo não intencionais ou qualquer contagem de ficheiros danificados obrigam-te a voltar à lição anterior.
  3. 399 instâncias: os ficheiros de rótulos contêm 399 comprimidos.
  4. mAP50-95 de 0.0002: está correto, não é um erro. O COCO não tem uma classe para comprimidos, por isso o modelo pré-treinado não os consegue encontrar. Essa pontuação quase nula é a tua referência. Quando as tuas classes existem no COCO, como pessoas ou carros, o mesmo comando fornece uma referência útil.

Garantir que os caminhos funcionam em qualquer diretório#

A maioria dos erros de «imagens não encontradas» deve-se a caminhos incorretos. O Ultralytics resolve path da seguinte forma:

datasets_dir é uma definição do Ultralytics; yolo settings apresenta-a e o guia de definições explica como alterá-la. Os conjuntos de dados integrados dependem desta alternativa: coco8.yaml define path: coco8 e um URL download:, pelo que data=coco8.yaml funciona a partir de qualquer pasta.

Regras de decisão:

  • Só tu, sempre a partir da pasta do projeto? Um path relativo é suficiente.
  • Colegas de equipa, servidores, CI ou notebooks noutras pastas? Usa um path absoluto.
  • Os dados estão noutro local e devem ser transferidos automaticamente? Adiciona download: com um URL de zip.

Mantém os índices das classes como um contrato#

O número inteiro no início de cada linha de rótulo é um índice em names. O Ultralytics verifica o intervalo — Label class 1 exceeds dataset class count 1 —, mas não consegue verificar o significado. Se a ferramenta de anotação exportou 0: forklift, 1: person e o teu YAML diz 0: person, 1: forklift, o treino é concluído, o mAP de validação parece correto e todas as previsões têm o nome errado. Mantém uma única fonte de verdade para a lista de classes, partilhada pela ferramenta de anotação, pelo script de conversão, pelo YAML e pelo código de implementação.

Evita estes erros#

Caminho relativo a partir da pasta errada

Sintoma: FileNotFoundError: Dataset 'data.yaml' images not found, missing path '.../datasets/my_dataset/images/val', com uma nota sobre o diretório de transferência do conjunto de dados. Causa: executaste o comando a partir de outra pasta, por isso o caminho relativo path não existia e o Ultralytics procurou em datasets_dir. Solução: executa o comando a partir da pasta do projeto ou torna path absoluto.

Reordenar nomes é destrutivo

Trocar ou eliminar entradas em names sem voltar a etiquetar altera silenciosamente o significado de todas as etiquetas. O modelo é treinado e prevê as classes erradas, sem apresentar erros. Adiciona as novas classes no fim, usando o próximo índice livre, e nunca renumeres as existentes.

As listas são combinadas numa única pontuação

val: [images/val_day, images/val_night] combina as duas pastas num único conjunto de validação e apresenta um número. Para ver separadamente o dia e a noite — ou um conjunto de regressão selecionado junto de uma amostra de produção recente — mantém um YAML por conjunto e valida cada um. Uma divisão test que avalias apenas uma vez, com split=test, é abordada em Divide corretamente o conjunto de dados.

As definições de treino, como o aumento de dados e o armazenamento em cache, são argumentos de train, não chaves YAML; estão todas na referência de configuração.

Experimente

Escreve my_dataset/data.yaml e executa yolo val model=yolo26n.pt data=my_dataset/data.yaml. Regista as contagens de imagens, fundos, ficheiros corrompidos e instâncias, bem como o mAP50-95 de referência. Depois, cd para outra pasta, volta a executar com o caminho do YAML, lê o erro e corrige o YAML para que o comando funcione a partir de qualquer local. Entrega o YAML corrigido e as duas linhas de análise.

Concluído quando
Você concluiu a aula quando todos estes critérios forem atendidos.
  • yolo val indica 23 imagens, 0 fundos e 0 ficheiros corrompidos para o teu YAML.

  • Registaste o mAP50-95 de referência do modelo pré-treinado para o conjunto de dados.

  • O teu YAML funciona a partir de qualquer diretório de trabalho porque path é absoluto.

Mostrar solução
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val

names:
  0: pill
val: Scanning /home/you/projects/pills/my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt
                   all         23        399     0.0256    0.00251      0.001     0.0002

A partir de outra pasta, a versão relativa falhou com Dataset ... images not found porque my_dataset não existia nesse local e também não havia uma cópia no caminho alternativo datasets_dir. O caminho absoluto path elimina essa pesquisa. O mAP50-95 de referência é aproximadamente 0: o modelo pré-treinado não tem uma classe de comprimidos.

Próximos passos

Os dados estão ligados e a referência está registada. A seguir, treina YOLO26 com esses dados.

Entre para salvar seu progresso