Ultralytics YOLO27:

Visão geral dos conjuntos de dados de deteção de objetos#

O treino de um modelo robusto e preciso de deteção de objetos requer um conjunto de dados abrangente. Este guia apresenta vários formatos de conjuntos de dados compatíveis com o modelo Ultralytics YOLO e fornece informações sobre a sua estrutura, utilização e conversão entre diferentes formatos.

Formatos de conjuntos de dados suportados#

Formato Ultralytics YOLO#

O formato Ultralytics YOLO é um formato de configuração de conjuntos de dados que permite definir o diretório raiz do conjunto de dados, os caminhos relativos para os diretórios de imagens de treino/validação/teste ou ficheiros *.txt que contêm caminhos de imagens, e um dicionário de nomes de classes. Eis um exemplo:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# 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: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

Cada um de train, val e test aceita um diretório, uma lista de diretórios ou um ficheiro *.txt que lista um caminho de imagem por linha (os caminhos que começam por ./ são resolvidos relativamente ao ficheiro *.txt). Um ficheiro *.txt é útil para treinar num subconjunto de um diretório, ignorar imagens sem etiquetas ou combinar imagens de várias fontes numa única divisão.

Caminhos de imagens num ficheiro `*.txt`
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

As etiquetas deste formato devem ser exportadas para o formato YOLO, com um ficheiro *.txt por imagem. Se não houver objetos numa imagem, não é necessário um ficheiro *.txt. O ficheiro *.txt deve ser formatado com uma linha por objeto no formato class x_center y_center width height. As coordenadas das caixas devem estar no formato xywh normalizado (de 0 a 1). Se as caixas estiverem em píxeis, deves dividir x_center e width pela largura da imagem, e y_center e height pela altura da imagem. Os números das classes devem utilizar índices a partir de zero (começar em 0).

YOLO labeled image with bounding boxes on persons and tie

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

YOLO format label file with normalized coordinates

Ao utilizar o formato Ultralytics YOLO, organiza as imagens e etiquetas de treino e validação conforme mostrado no exemplo do conjunto de dados COCO8 abaixo.

YOLO dataset directory structure with train and val folders

Exemplo de utilização#

Eis como podes utilizar conjuntos de dados no formato YOLO para treinar o teu modelo:

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Formato Ultralytics NDJSON#

O formato NDJSON (JSON delimitado por novas linhas) oferece uma forma alternativa de definir conjuntos de dados para modelos Ultralytics YOLO. Este formato armazena os metadados e as anotações do conjunto de dados num único ficheiro, no qual cada linha contém um objeto JSON separado.

Um ficheiro de conjunto de dados NDJSON contém:

  1. Registo do conjunto de dados (primeira linha): contém os metadados do conjunto de dados, incluindo o tipo de tarefa, os nomes das classes e informações gerais
  2. Registos de imagens (linhas seguintes): contêm dados individuais das imagens, incluindo dimensões, anotações e caminhos dos ficheiros
Exemplo de NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Metadados personalizados das imagens#

Cada registo de imagem pode incluir um objeto JSON metadata para contexto específico da aplicação, como condições de captura, identificadores do equipamento ou estado da revisão. São suportados valores aninhados. Quando importados para a Ultralytics Platform, os metadados são armazenados com essa imagem e podem ser visualizados ou editados no respetivo painel de informações em ecrã inteiro.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

A Platform limita as chaves de metadados de nível superior a 128 caracteres, o objeto de metadados serializado de cada imagem a 500 000 caracteres e os metadados efetivos combinados numa importação NDJSON a 500 000 caracteres.

Exemplo de utilização#

Para utilizar um conjunto de dados NDJSON com YOLO26, basta especificar o caminho para o ficheiro .ndjson:

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

Vantagens do formato NDJSON#

  • Ficheiro único: todas as informações do conjunto de dados estão contidas num único ficheiro
  • Transmissão: permite processar grandes conjuntos de dados linha a linha sem carregar tudo para a memória
  • Integração com a cloud: suporta URLs remotos de imagens para treino baseado na cloud
  • Extensível: é fácil adicionar campos de metadados personalizados
  • Controlo de versões: o formato de ficheiro único funciona bem com o git e sistemas de controlo de versões

Conjuntos de dados suportados#

Aqui está uma lista dos conjuntos de dados suportados e uma breve descrição de cada um. A maioria destes conjuntos de dados também está hospedada na Ultralytics Platform, onde podes navegar pelas imagens e anotações, ver estatísticas dos conjuntos de dados e cloná-los para treino na nuvem.

  • African-wildlife: um conjunto de dados com imagens de vida selvagem africana, incluindo búfalos, elefantes, rinocerontes e zebras.
  • Argoverse: Um dataset com dados de rastreamento 3D e previsão de movimento de ambientes urbanos, com anotações detalhadas.
  • Brain-tumor: um conjunto de dados para deteção de tumores cerebrais que inclui imagens de exames de MRI ou CT com detalhes sobre a presença, localização e características dos tumores.
  • COCO: Objetos Comuns em Contexto (COCO) é um conjunto de dados de grande escala para deteção de objetos, segmentação e geração de legendas, com 80 categorias de objetos.
  • COCO8: Um subconjunto menor das primeiras 8 imagens do COCO train2017, 4 para treinamento e 4 para validação, adequado para testes rápidos.
  • COCO8-Grayscale: Uma versão em tons de cinzento do COCO8, criada pela conversão de RGB para tons de cinzento, útil para avaliar modelos de canal único.
  • COCO8-Multispectral: Uma versão multiespectral de 10 canais do COCO8, criada pela interpolação de comprimentos de onda RGB, útil para avaliar modelos sensíveis ao espetro.
  • COCO12-Formats: um conjunto de dados de teste com 12 imagens que abrangem 12 formatos de imagem suportados (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) para validar pipelines de carregamento de imagens.
  • COCO16: um subconjunto das primeiras 16 imagens de COCO train2017 (8 de treino + 8 de validação), adequado para testes rápidos.
  • COCO32: um subconjunto das primeiras 32 imagens de COCO train2017 (16 de treino + 16 de validação), adequado para testes rápidos.
  • COCO64: um subconjunto das primeiras 64 imagens de COCO train2017 (32 de treino + 32 de validação), adequado para testes rápidos.
  • COCO128: Um subconjunto mais pequeno das primeiras 128 imagens de COCO train2017, adequado para testes.
  • Construction-PPE: um conjunto de dados com trabalhadores de estaleiros de construção e equipamento de segurança etiquetado, como capacetes, coletes, luvas, botas e óculos de proteção, incluindo anotações de equipamento em falta, como no_helmet e no_goggle, para monitorização da conformidade no mundo real.
  • Global Wheat 2020: Um dataset com imagens de espigas de trigo para o Global Wheat Challenge 2020.
  • HomeObjects-3K: um conjunto de dados de objetos domésticos de interior, incluindo camas, cadeiras, televisores e muito mais — ideal para aplicações de automação residencial inteligente, robótica, realidade aumentada e análise da disposição dos espaços.
  • KITTI: um conjunto de dados com cenas de condução do mundo real e dados estéreo, LiDAR e GPS/IMU, utilizado aqui para tarefas de deteção de objetos 2D, como a identificação de carros, peões e ciclistas em ambientes urbanos, rurais e de autoestrada.
  • LVIS: Um dataset de grande escala para deteção, segmentação e geração de legendas de objetos, com 1203 categorias de objetos.
  • Medical-pills: um conjunto de dados com imagens de comprimidos médicos, anotadas para aplicações como garantia de qualidade farmacêutica, triagem de comprimidos e conformidade regulamentar.
  • Objects365: Um dataset de alta qualidade e grande escala para deteção de objetos, com 365 categorias de objetos e mais de 600K imagens anotadas.
  • OpenImagesV7: Um dataset abrangente da Google com 1,7M de imagens de treino e 42k imagens de validação.
  • Roboflow 100: um benchmark diversificado de deteção de objetos com 100 conjuntos de dados que abrangem sete domínios de imagens para uma avaliação abrangente de modelos.
  • Signature: Um dataset com imagens de vários documentos contendo assinaturas anotadas, apoiando a investigação sobre verificação documental e deteção de fraude.
  • SKU-110K: um conjunto de dados com deteção densa de objetos em ambientes de retalho, com mais de 11K imagens e 1,7 milhões de caixas delimitadoras.
  • TT100K: explora o conjunto de dados de sinais de trânsito Tsinghua-Tencent 100K (TT100K), com 16 817 imagens de vistas de rua distribuídas por 221 categorias de sinais para uma deteção e classificação robustas.
  • VisDrone: Um dataset com dados de deteção de objetos e rastreamento multiobjeto a partir de imagens captadas por drones, com mais de 10K imagens e sequências de vídeo.
  • VOC: O dataset Pascal Visual Object Classes (VOC) para deteção e segmentação de objetos, com 20 classes de objetos e mais de 11K imagens.
  • xView: Um dataset para deteção de objetos em imagens aéreas, com 60 categorias de objetos e mais de 1 milhão de objetos anotados.

Adicionar o teu próprio conjunto de dados#

Se tens o teu próprio conjunto de dados e queres utilizá-lo para treinar modelos de deteção com o formato Ultralytics YOLO, certifica-te de que segue o formato especificado acima em "Formato Ultralytics YOLO". Converte as tuas anotações para o formato necessário e especifica os caminhos, o número de classes e os nomes das classes no ficheiro de configuração YAML.

Adaptar ou converter formatos de etiquetas#

Converter o formato de conjunto de dados COCO para o formato YOLO#

Podes converter facilmente etiquetas do popular formato do conjunto de dados COCO para o formato YOLO utilizando o seguinte trecho de código:

Exemplo
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Esta ferramenta de conversão pode ser utilizada para converter o conjunto de dados COCO ou qualquer conjunto de dados no formato COCO para o formato Ultralytics YOLO. O processo transforma as anotações COCO baseadas em JSON no formato YOLO mais simples, baseado em texto, tornando-o compatível com modelos Ultralytics YOLO. Para conhecer o fluxo de trabalho completo — incluindo o mapeamento de IDs de classes, a estrutura de diretórios e as anotações de segmentação ou pose — consulta Converter anotações COCO para YOLO.

Não te esqueças de verificar se o conjunto de dados que queres utilizar é compatível com o teu modelo e segue as convenções de formato necessárias. Conjuntos de dados devidamente formatados são essenciais para treinar modelos de deteção de objetos bem-sucedidos.

E agora?#

Com o teu conjunto de dados formatado, começa a treinar o teu modelo. Não sabes com que modelo pré-treinado começar? Compara as opções na família de modelos YOLO26.

Perguntas frequentes#

  • O formato Ultralytics YOLO é uma configuração estruturada para definir conjuntos de dados nos teus projetos de treino. Envolve definir os caminhos para as imagens de treino, validação e teste, bem como para as etiquetas correspondentes. Por exemplo:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← downloads here (1 MB)
    
    # 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: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

    As etiquetas são guardadas em ficheiros *.txt, um ficheiro por imagem, formatadas como class x_center y_center width height com coordenadas normalizadas. Para obteres um guia detalhado, consulta o exemplo do conjunto de dados COCO8.

  • Podes converter um conjunto de dados COCO para o formato YOLO utilizando as ferramentas de conversão da Ultralytics. Eis um método rápido:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    Este código converte as tuas anotações COCO para o formato YOLO, permitindo uma integração simples com modelos Ultralytics YOLO. Para obteres mais detalhes, consulta a secção Adaptar ou converter formatos de etiquetas.

  • O Ultralytics YOLO suporta uma vasta gama de conjuntos de dados, incluindo:

    Cada página de conjunto de dados fornece informações detalhadas sobre a estrutura e a utilização, adaptadas para um treino eficiente de YOLO26. Explora a lista completa na secção Conjuntos de dados suportados.

  • Para começares a treinar um modelo YOLO26, certifica-te de que o teu conjunto de dados está corretamente formatado e de que os caminhos estão definidos num ficheiro YAML. Utiliza o seguinte script para começar o treino:

    Exemplo
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # Load a pretrained model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Consulta a secção Utilização para obteres mais detalhes sobre a utilização de diferentes modos, incluindo comandos CLI.

  • A Ultralytics fornece inúmeros exemplos e guias práticos para utilizar YOLO26 em diversas aplicações. Para obteres uma visão geral abrangente, visita o Blog da Ultralytics, onde encontrarás estudos de caso, tutoriais detalhados e histórias da comunidade que mostram a deteção de objetos, a segmentação e muito mais com YOLO26. Para exemplos específicos, consulta a secção Utilização na documentação.

Comentários