Ir para o conteúdo

Visão Geral de Conjuntos de Dados de Detecção de Objetos

Treinar um modelo de detecção de objetos 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 YOLO da Ultralytics e fornece insights sobre sua estrutura, uso e como converter entre diferentes formatos.

Formatos de Conjunto de Dados Suportados

Formato YOLO da Ultralytics

O formato YOLO da Ultralytics é um formato de configuração de conjunto de dados que permite definir o diretório raiz do conjunto de dados, os caminhos relativos para os diretórios de imagens de treinamento/validação/teste ou *.txt arquivos contendo caminhos de imagem e um dicionário de nomes de classe. Aqui está um 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 para este formato devem ser exportadas para o formato YOLO com um *.txt arquivo por imagem. Se não houver objetos em uma imagem, nenhum *.txt arquivo é necessário. O *.txt arquivo deve ser formatado com uma linha por objeto no class x_center y_center width height formato. As coordenadas da caixa devem estar em xywh normalizado formato (de 0 a 1). Se suas caixas estiverem em pixels, você deve dividir x_center e width pela largura da imagem, e y_center e height pela altura da imagem. Os números das classes devem ser indexados a partir de zero (começar com 0).

Exemplo de imagem rotulada

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

Exemplo de arquivo de rótulo

Ao usar o formato Ultralytics YOLO, organize suas imagens e rótulos de treinamento e validação conforme mostrado no exemplo do conjunto de dados COCO8 abaixo.

Exemplo de estrutura de diretório do conjunto de dados

Utilização

Veja como você pode usar esses formatos para treinar seu modelo:

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt epochs=100 imgsz=640

Conjuntos de Dados Suportados

Aqui está uma lista dos conjuntos de dados suportados e uma breve descrição de cada um:

  • Argoverse: Um conjunto de dados contendo dados de rastreamento 3D e previsão de movimento de ambientes urbanos com anotações ricas.
  • COCO: Common Objects in Context (COCO) é um conjunto de dados de detecção de objetos, segmentação e legendagem em larga escala com 80 categorias de objetos.
  • LVIS: Um conjunto de dados de detecção, segmentação e legendagem de objetos em larga escala com 1203 categorias de objetos.
  • COCO8: Um subconjunto menor das primeiras 4 imagens de COCO train e COCO val, adequado para testes rápidos.
  • COCO8-Grayscale: Uma versão em escala de cinza do COCO8 criada convertendo RGB para escala de cinza, útil para avaliação de modelos de canal único.
  • COCO8-Multispectral: Uma versão multiespectral de 10 canais do COCO8 criada interpolando comprimentos de onda RGB, útil para avaliação de modelos com reconhecimento espectral.
  • COCO128: Um subconjunto menor das primeiras 128 imagens de COCO train e COCO val, adequado para testes.
  • Global Wheat 2020: Um conjunto de dados contendo imagens de espigas de trigo para o Global Wheat Challenge 2020.
  • Objects365: Um conjunto de dados de alta qualidade e em larga escala para detecção de objetos com 365 categorias de objetos e mais de 600 mil imagens anotadas.
  • OpenImagesV7: Um conjunto de dados abrangente do Google com 1,7 milhão de imagens de treinamento e 42 mil imagens de validação.
  • SKU-110K: Um conjunto de dados com detecção densa de objetos em ambientes de varejo, com mais de 11 mil imagens e 1,7 milhão de bounding boxes.
  • HomeObjects-3K Novo 🚀: Um conjunto de dados de itens domésticos internos, incluindo camas, cadeiras, TVs e muito mais — ideal para aplicações em automação residencial inteligente, robótica, realidade aumentada e análise de layout de ambientes.
  • VisDrone: Um conjunto de dados contendo dados de detecção de objetos e rastreamento multi-objeto de imagens capturadas 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 detecção e segmentação de objetos com 20 classes de objetos e mais de 11 mil imagens.
  • xView: Um conjunto de dados para detecção de objetos em imagens aéreas com 60 categorias de objetos e mais de 1 milhão de objetos anotados.
  • Roboflow 100: Um benchmark diversificado de detecção de objetos com 100 conjuntos de dados abrangendo sete domínios de imagens para avaliação abrangente do modelo.
  • Brain-tumor: Um conjunto de dados para detecção de tumores cerebrais que inclui imagens de ressonância magnética ou tomografia computadorizada com detalhes sobre a presença, localização e características do tumor.
  • African-wildlife: Um conjunto de dados com imagens da vida selvagem africana, incluindo búfalos, elefantes, rinocerontes e zebras.
  • Signature: Um conjunto de dados com imagens de vários documentos com assinaturas anotadas, apoiando a verificação de documentos e a pesquisa de detecção de fraudes.
  • Medical-pills: Um conjunto de dados com imagens de pílulas médicas, anotadas para aplicações como garantia de qualidade farmacêutica, triagem de pílulas e conformidade regulatória.

Adicionando seu próprio conjunto de dados

Se você tem seu próprio conjunto de dados e gostaria de usá-lo para treinar modelos de detecção com o formato Ultralytics YOLO, certifique-se de que ele segue o formato especificado acima em "Formato Ultralytics YOLO". Converta suas anotações para o formato necessário e especifique os caminhos, o número de classes e os nomes das classes no arquivo de configuração YAML.

Converter ou Adaptar Formatos de Etiqueta

Formato de Conjunto de Dados COCO para Formato YOLO

Você pode converter facilmente rótulos do popular formato COCO dataset para o formato YOLO usando 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 usada 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.

Lembre-se de verificar novamente se o conjunto de dados que você deseja usar é compatível com seu modelo e segue as convenções de formato necessárias. Conjuntos de dados formatados corretamente são cruciais para treinar modelos de detecção de objetos bem-sucedidos.

FAQ

O que é o formato de conjunto de dados YOLO da Ultralytics e como estruturá-lo?

O formato Ultralytics YOLO é uma configuração estruturada para definir conjuntos de dados em seus projetos de treinamento. Envolve definir caminhos para suas imagens de treinamento, validação e teste e rótulos 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 salvas em *.txt arquivos com um arquivo por imagem, formatados como class x_center y_center width height com coordenadas normalizadas. Para um guia detalhado, consulte o exemplo do conjunto de dados COCO8.

Como converter um conjunto de dados COCO para o formato YOLO?

Você pode converter um conjunto de dados COCO para o formato YOLO usando as ferramentas de conversão Ultralytics. Aqui está um método rápido:

from ultralytics.data.converter import convert_coco

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

Este código converterá suas anotações COCO para o formato YOLO, permitindo uma integração perfeita com os modelos Ultralytics YOLO. Para detalhes adicionais, visite a seção Portar ou Converter Formatos de Etiqueta.

Quais conjuntos de dados são suportados pelo YOLO da Ultralytics para detecção de objetos?

Ultralytics YOLO suporta uma ampla gama de conjuntos de dados, incluindo:

Cada página de conjunto de dados fornece informações detalhadas sobre a estrutura e o uso, adaptadas para um treinamento YOLO11 eficiente. Explore a lista completa na seção Conjuntos de Dados Suportados.

Como começar a treinar um modelo YOLO11 usando meu conjunto de dados?

Para começar a treinar um modelo YOLO11, certifique-se de que seu conjunto de dados esteja formatado corretamente e que os caminhos estejam definidos em um arquivo YAML. Use o seguinte script para começar o treinamento:

Exemplo

from ultralytics import YOLO

model = YOLO("yolo11n.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=yolo11n.pt epochs=100 imgsz=640

Consulte a seção Uso para obter mais detalhes sobre a utilização de diferentes modos, incluindo comandos da CLI.

Onde posso encontrar exemplos práticos de uso do YOLO da Ultralytics para detecção de objetos?

A Ultralytics fornece inúmeros exemplos e guias práticos para usar o YOLO11 em diversas aplicações. Para uma visão geral abrangente, visite o Blog da Ultralytics, onde você pode encontrar estudos de caso, tutoriais detalhados e histórias da comunidade que mostram detecção de objetos, segmentação e muito mais com YOLO11. Para exemplos específicos, consulte a seção Uso na documentação.



📅 Criado há 1 ano ✏️ Atualizado há 15 dias

Comentários