YOLO Vision 2026:

Visão geral de datasets de Oriented Bounding Box (OBB)#

Treinar um modelo de object detection preciso com caixas delimitadoras orientadas (OBB) requer um conjunto de dados completo. Este guia explica os vários formatos de conjuntos de dados OBB compatíveis com os modelos Ultralytics YOLO, oferecendo insights sobre sua estrutura, aplicação e métodos de conversão de formato.

Formatos de dataset OBB suportados#

Formato YOLO OBB#

O formato YOLO OBB designa caixas delimitadoras pelos 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), largura, altura e rotação da caixa delimitadora.

Oriented bounding box annotation format examples

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

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Formato YAML de conjunto de dados#

O framework Ultralytics usa um formato de arquivo YAML para definir o dataset e a configuração do modelo para treinar modelos OBB. Aqui está um exemplo do formato YAML usado para definir um dataset 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 liste um caminho de imagem por linha (os caminhos iniciados por ./ 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ótulo ou combinar imagens de várias origens numa única divisão.

Caminhos de imagem como 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

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Datasets suportados#

Atualmente, os seguintes datasets com caixas delimitadoras orientadas são suportados:

  • DOTA-v1: A primeira versão do conjunto de dados DOTA, fornecendo 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, oferecendo anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas aprimoradas de detecção de objetos.
  • DOTA-v2: A versão 2 do DOTA (A Large-scale Dataset for Object Detection in Aerial Images), 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 subconjunto pequeno de 8 imagens do conjunto de dados DOTA completo, adequado para testar fluxos de trabalho e verificações de Integração Contínua (CI) de treinamento OBB no repositório ultralytics.
  • DOTA128: Um subconjunto de 128 imagens do conjunto de dados DOTA com todas as imagens na pasta train (usada para train e val), fornecendo um bom equilíbrio entre tamanho e diversidade para testar modelos OBB.

Incorporando seu próprio dataset OBB#

Para quem deseja introduzir seus próprios datasets com caixas delimitadoras orientadas, garanta a compatibilidade com o "formato YOLO OBB" mencionado acima. Converta suas anotações para este formato necessário e detalhe os caminhos, classes e nomes de classes em um arquivo de configuração YAML correspondente.

Converter formatos de rótulo#

Formato de dataset DOTA para formato YOLO OBB#

A transição de rótulos do formato de dataset DOTA para o formato YOLO OBB pode ser feita 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 é fundamental para conjuntos de dados no formato DOTA, garantindo o alinhamento com o formato OBB do Ultralytics YOLO.

É imperativo validar a compatibilidade do dataset com seu modelo e aderir às convenções de formato necessárias. Datasets estruturados adequadamente são cruciais para treinar modelos eficientes de detecção de objetos com caixas delimitadoras orientadas.

FAQ#

  • As Caixas Delimitadoras Orientadas (OBB) são um tipo de anotação de caixa delimitadora onde a caixa pode ser rotacionada para se alinharem mais de perto com o objeto sendo detectado, em vez de serem apenas alinhadas aos eixos. Isso é particularmente útil em imagens aéreas ou de satélite, onde os objetos podem não estar alinhados com os eixos da imagem. Nos modelos Ultralytics YOLO, as OBBs são representadas pelos seus quatro pontos de canto no formato YOLO OBB. Isso permite uma detecção de objetos mais precisa, uma vez que as caixas delimitadoras podem rotacionar para se ajustar melhor aos objetos.

  • Podes converter os rótulos 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 compatibilidade com os modelos Ultralytics YOLO, permitindo-te aproveitar as capacidades OBB para detecção de objetos aprimorada. Aqui tens um exemplo rápido:

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

    Este script irá reformatar suas anotações DOTA para um formato compatível com YOLO.

  • Treinar um modelo YOLO26 com OBBs envolve garantir que o teu conjunto de dados esteja no formato YOLO OBB e, em seguida, usar a Ultralytics API para treinar o modelo. Aqui está um exemplo em Python e CLI:

    Exemplo
    from ultralytics import YOLO
    
    # Create a new YOLO26n-OBB model from scratch
    model = YOLO("yolo26n-obb.yaml")
    
    # Train the model on the custom dataset
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    Isso garante que o teu modelo aproveite as anotações detalhadas OBB para melhorar a precisão de detecção.

  • Atualmente, a Ultralytics suporta os seguintes datasets para treinamento OBB:

    • DOTA-v1: A primeira versão do conjunto de dados DOTA, fornecendo 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, oferecendo anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas aprimoradas de detecção de objetos.
    • DOTA-v2: Este conjunto de dados inclui 1,7 milhão de instâncias com caixas delimitadoras orientadas e 11.268 imagens, focando principalmente na detecção de objetos aéreos.
    • DOTA8: Um subconjunto menor de 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 com todas as imagens na pasta train (usada para train e val), oferecendo mais diversidade do que o DOTA8 enquanto permanece gerenciável para o desenvolvimento inicial e experimentação do modelo OBB.

    Esses datasets são adaptados para cenários onde 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 o treinamento do YOLO26. Certifica-te de que as anotações do teu conjunto de dados estejam convertidas para o formato YOLO OBB, o que envolve definir as caixas delimitadoras pelos seus quatro pontos de canto. Podes então criar um arquivo de configuração YAML especificando os caminhos do conjunto de dados, classes e outros detalhes necessários. Para mais informações sobre como criar e configurar os teus conjuntos de dados, consulta a seção Supported Datasets.

Comentários