Salta para o conteúdo

Descrição geral dos conjuntos de dados de deteção de objectos

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

Formatos de conjuntos de dados suportados

Ultralytics YOLO formato

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

# 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/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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

As etiquetas para este formato devem ser exportadas para o formato YOLO com um *.txt por imagem. Se não existirem objectos numa imagem, não há *.txt é necessário. O ficheiro *.txt deve ser formatado com uma linha por objeto em 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, deves dividir x_center e width por largura de imagem, e y_center e height pela altura da imagem. Os números de classe devem ser indexados a zero (começa com 0).

Exemplo de imagem rotulada

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

Exemplo de ficheiro de etiquetas

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

Exemplo de estrutura de directórios de conjuntos de dados

Utilização

Eis como podes utilizar estes formatos para treinar o teu modelo:

Exemplo

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640

Conjuntos de dados suportados

Segue-se uma lista dos conjuntos de dados suportados e uma breve descrição de cada um:

  • Argoverse: Um conjunto de dados que contém dados de localização 3D e de previsão de movimento de ambientes urbanos com anotações ricas.
  • COCO: Common Objects in Context (COCO) é um conjunto de dados de deteção, segmentação e legendagem de objectos em grande escala com 80 categorias de objectos.
  • LVIS: Um conjunto de dados de deteção, segmentação e legendagem de objectos em grande escala com 1203 categorias de objectos.
  • COCO8: Um subconjunto mais pequeno das primeiras 4 imagens de COCO train e COCO val, adequado para testes rápidos.
  • Global Wheat 2020: Um conjunto de dados com imagens de cabeças de trigo para o Global Wheat Challenge 2020.
  • Objects365: Um conjunto de dados de alta qualidade e em grande escala para deteção de objectos com 365 categorias de objectos e mais de 600 mil imagens anotadas.
  • OpenImagesV7: Um conjunto de dados abrangente da Google com 1,7 milhões de imagens de treino e 42 mil imagens de validação.
  • SKU-110K: Um conjunto de dados com deteção de objectos densos em ambientes de retalho com mais de 11 mil imagens e 1,7 milhões de caixas delimitadoras.
  • VisDrone: Um conjunto de dados que contém dados de deteção de objectos e de seguimento de múltiplos objectos a partir de imagens captadas por drones, com mais de 10 mil imagens e sequências de vídeo.
  • VOC: O conjunto de dados Pascal Visual Object Classes (VOC) para deteção e segmentação de objectos com 20 classes de objectos e mais de 11 mil imagens.
  • xView: Um conjunto de dados para deteção de objectos em imagens aéreas com 60 categorias de objectos e mais de 1 milhão de objectos anotados.
  • Roboflow 100: Uma referência de deteção de objectos diversificada com 100 conjuntos de dados que abrangem sete domínios de imagens para uma avaliação abrangente do modelo.
  • Tumor cerebral: Um conjunto de dados para detetar tumores cerebrais inclui imagens de ressonância magnética ou tomografia computadorizada com detalhes sobre a presença, localização e características do tumor.
  • Vida selvagem africana: Um conjunto de dados com imagens da vida selvagem africana, incluindo búfalos, elefantes, rinocerontes e zebras.
  • Assinatura: Um conjunto de dados que apresenta imagens de vários documentos com assinaturas anotadas, apoiando a verificação de documentos e a investigação sobre deteção de fraudes.

Adicionar o teu próprio conjunto de dados

Se tiveres o teu próprio conjunto de dados e pretenderes utilizá-lo para treinar modelos de deteção com o formato Ultralytics YOLO , certifica-te de que segue o formato especificado acima em "Ultralytics YOLO format". 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.

Porta ou converte formatos de etiquetas

Formato do conjunto de dados COCO para YOLO Formato

Podes converter facilmente etiquetas do popular formato de conjunto de dados COCO para o formato YOLO utilizando o seguinte fragmento 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 .

Lembra-te de verificar se o conjunto de dados que pretendes utilizar é compatível com o teu modelo e se segue as convenções de formato necessárias. Os conjuntos de dados corretamente formatados são cruciais para treinar modelos de deteção de objectos bem sucedidos.

FAQ

Qual é o formato do conjunto de dados Ultralytics YOLO e como o estruturar?

O formato Ultralytics YOLO é uma configuração estruturada para definir conjuntos de dados nos seus projectos de formação. Envolve a definição de caminhos para as suas imagens de treino, validação e teste e as etiquetas correspondentes. Por exemplo:

path: ../datasets/coco8  # dataset root directory
train: images/train  # training images (relative to 'path')
val: images/val  # validation images (relative to 'path')
test:  # optional test images
names:
  0: person
  1: bicycle
  2: car
  # ...

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

Como é que converto um conjunto de dados COCO para o formato YOLO ?

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

from ultralytics.data.converter import convert_coco

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

Este código converterá as tuas anotações COCO para o formato YOLO , permitindo uma integração perfeita com os modelos Ultralytics YOLO . Para mais detalhes, visita a secção Portar ou converter formatos de etiquetas.

Que conjuntos de dados são suportados por Ultralytics YOLO para deteção de objectos?

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 uma formação eficiente em YOLOv8 . Explora a lista completa na secção Conjuntos de dados suportados.

Como é que começo a treinar um modelo YOLOv8 utilizando o meu conjunto de dados?

Para começar a treinar um modelo YOLOv8 , certifica-te de que o teu conjunto de dados está formatado corretamente e que os caminhos estão definidos num ficheiro YAML. Usa o seguinte script para iniciar o treinamento:

Exemplo

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolov8n.pt epochs=100 imgsz=640

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

Onde posso encontrar exemplos práticos de utilização de Ultralytics YOLO para deteção de objectos?

Ultralytics fornece inúmeros exemplos e guias práticos para a utilização do YOLOv8 em diversas aplicações. Para obter uma visão geral abrangente, visita o blogueUltralytics , onde podes encontrar estudos de caso, tutoriais detalhados e histórias da comunidade que mostram a deteção de objectos, a segmentação e muito mais com YOLOv8. Para exemplos específicos, consulta a secção Utilização na documentação.



Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (10), RizwanMunawar (2), IvorZhu331 (1), Laughing-q (1)

Comentários