Ultralytics YOLO27:
Get Started

Visão geral dos conjuntos de dados de caixas delimitadoras orientadas (OBB)#

Treinar um modelo preciso de detecção de objetos com caixas delimitadoras orientadas (OBB) exige um conjunto de dados abrangente. Este guia explica os vários formatos de conjuntos de dados OBB compatíveis com os modelos Ultralytics YOLO e apresenta informações sobre sua estrutura, aplicação e métodos de conversão de formato.

Formatos de conjuntos de dados OBB compatíveis#

Formato YOLO OBB#

O formato YOLO OBB define caixas delimitadoras por seus quatro pontos de canto, com coordenadas normalizadas entre 0 e 1. Ele segue este formato:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, o YOLO processa perdas e saídas no formato xywhr, que representa o ponto central (xy), a largura, a altura e a rotação da caixa delimitadora.

Oriented bounding box annotation format examples

Um exemplo de arquivo de rótulos *.txt para a imagem acima, que contém um objeto da classe 0 no formato OBB, poderia ser assim:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Formato YAML do conjunto de dados#

A estrutura Ultralytics usa arquivos YAML para definir o conjunto de dados e a configuração do modelo para treinar modelos OBB. Este é um exemplo do formato YAML usado para definir um conjunto de dados OBB:

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

# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

# Classes for DOTA 1.0
names:
  0: plane
  1: ship
  2: storage tank
  3: baseball diamond
  4: tennis court
  5: basketball court
  6: ground track field
  7: harbor
  8: bridge
  9: large vehicle
  10: small vehicle
  11: helicopter
  12: roundabout
  13: soccer ball field
  14: swimming pool

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

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

Caminhos de imagens em um arquivo `*.txt`
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: plane

Uso#

Para treinar um modelo usando estes formatos OBB:

Exemplo
from ultralytics import YOLO

# Carrega um modelo YOLO26n-OBB pré-treinado
model = YOLO("yolo26n-obb.pt")

# Treina o modelo no conjunto de dados DOTAv1
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Conjuntos de dados compatíveis#

Atualmente, há suporte para os seguintes conjuntos de dados com caixas delimitadoras orientadas. A maioria desses conjuntos de dados também está hospedada na Ultralytics Platform, onde você pode navegar pelas imagens e anotações, consultar estatísticas do conjunto de dados e cloná-lo para treinamento na nuvem.

  • DOTA-v1: A primeira versão do conjunto de dados DOTA, que oferece um conjunto abrangente de imagens aéreas com caixas delimitadoras orientadas para detecção de objetos.
  • DOTA-v1.5: Uma versão intermediária do conjunto de dados DOTA, com anotações adicionais e melhorias em relação ao DOTA-v1 para aprimorar tarefas de detecção de objetos.
  • DOTA-v2: A versão 2 do DOTA (um conjunto de dados em grande escala para detecção de objetos em imagens aéreas) enfatiza a detecção a partir de perspectivas aéreas e contém caixas delimitadoras orientadas com 1,7 milhão de instâncias e 11.268 imagens.
  • DOTA8: Um pequeno subconjunto de 8 imagens do conjunto de dados DOTA completo, adequado para testar fluxos de trabalho e verificações de integração contínua (CI) do treinamento OBB no repositório ultralytics.
  • DOTA8 Multispectral: Um subconjunto de 8 imagens TIFF com 10 canais para testar o treinamento OBB multiespectral na Ultralytics Platform.
  • DOTA128: Um subconjunto de 128 imagens do conjunto de dados DOTA, com todas as imagens na pasta de treinamento (usada tanto para treinamento quanto para validação), que oferece um bom equilíbrio entre tamanho e diversidade para testar modelos OBB.

Como incorporar seu próprio conjunto de dados OBB#

Se você quiser adicionar seus próprios conjuntos de dados com caixas delimitadoras orientadas, garanta a compatibilidade com o "formato YOLO OBB" mencionado acima. Converta suas anotações para esse formato obrigatório e especifique os caminhos, as classes e os nomes das classes em um arquivo de configuração YAML correspondente.

Converter formatos de rótulos#

Converter o formato do conjunto de dados DOTA para o formato YOLO OBB#

É possível converter rótulos do formato do conjunto de dados DOTA para o formato YOLO OBB com este script:

Exemplo
from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Este mecanismo de conversão é essencial para conjuntos de dados no formato DOTA, garantindo compatibilidade com o formato OBB do Ultralytics YOLO.

É fundamental validar a compatibilidade do conjunto de dados com seu modelo e seguir as convenções de formato necessárias. Conjuntos de dados estruturados corretamente são essenciais para treinar modelos eficientes de detecção de objetos com caixas delimitadoras orientadas.

Perguntas frequentes#

  • Caixas delimitadoras orientadas (OBB) são um tipo de anotação de caixa delimitadora que pode ser girada para se alinhar melhor ao objeto detectado, em vez de permanecer alinhada aos eixos. Isso é particularmente útil em imagens aéreas ou de satélite, nas quais os objetos podem não estar alinhados aos eixos da imagem. Nos modelos Ultralytics YOLO, as OBB são representadas por seus quatro pontos de canto no formato YOLO OBB. Isso permite uma detecção de objetos mais precisa, já que as caixas delimitadoras podem girar para se ajustar melhor aos objetos.

  • Podes converter as etiquetas do conjunto de dados DOTA para o formato YOLO OBB usando a função convert_dota_to_yolo_obb da Ultralytics. Esta conversão garante a compatibilidade com os modelos Ultralytics YOLO, permitindo aproveitar os recursos OBB para melhorar a deteção de objetos. Aqui está um exemplo rápido:

    from ultralytics.data.converter import convert_dota_to_yolo_obb
    
    convert_dota_to_yolo_obb("path/to/DOTA")

    Este script reformata as anotações DOTA para um formato compatível com YOLO.

  • Para treinar um modelo YOLO26 com OBBs, certifica-te de que o conjunto de dados está no formato YOLO OBB e, em seguida, usa a API da Ultralytics para treinar o modelo. Aqui está um exemplo em Python e na CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Cria um novo modelo YOLO26n-OBB do zero
    model = YOLO("yolo26n-obb.yaml")
    
    # Treina o modelo no conjunto de dados personalizado
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    Isto garante que o modelo aproveita as anotações OBB detalhadas para melhorar a precisão da deteção.

  • Atualmente, a Ultralytics é compatível com os seguintes conjuntos de dados para o treino OBB:

    • DOTA-v1: A primeira versão do conjunto de dados DOTA, que oferece um conjunto abrangente de imagens aéreas com caixas delimitadoras orientadas para detecção de objetos.
    • DOTA-v1.5: Uma versão intermediária do conjunto de dados DOTA, com anotações adicionais e melhorias em relação ao DOTA-v1 para aprimorar tarefas de detecção de objetos.
    • DOTA-v2: Este conjunto de dados inclui 1,7 milhões de instâncias com caixas delimitadoras orientadas e 11.268 imagens, centrando-se principalmente na deteção de objetos aéreos.
    • DOTA8: Um subconjunto menor, com 8 imagens, do conjunto de dados DOTA, usado para testes e verificações de integração contínua (CI).
    • DOTA128: Um subconjunto de 128 imagens, todas na pasta train (usadas tanto para train como para val), que oferece mais diversidade do que o DOTA8 e continua a ser fácil de gerir para o desenvolvimento e a experimentação iniciais de modelos OBB.

    Estes conjuntos de dados são concebidos para cenários em que as OBBs oferecem uma vantagem significativa, como na análise de imagens aéreas e de satélite.

  • Sim, podes usar o teu próprio conjunto de dados com caixas delimitadoras orientadas para treinar o YOLO26. Certifica-te de que as anotações do conjunto de dados são convertidas para o formato YOLO OBB, que define as caixas delimitadoras pelos seus quatro pontos de canto. Em seguida, podes criar um ficheiro de configuração YAML com os caminhos do conjunto de dados, as classes e outros detalhes necessários. Para saber mais sobre como criar e configurar conjuntos de dados, consulta a secção Conjuntos de dados compatíveis.

Comentários