Visão Geral de Datasets de Oriented Bounding Box (OBB)
Treinar um modelo preciso de object detection com oriented bounding boxes (OBB) requer um dataset completo. Este guia explica os vários formatos de dataset OBB compatíveis com modelos Ultralytics YOLO, oferecendo insights sobre sua estrutura, aplicação e métodos para conversões de formato.
Formatos de Dataset OBB Suportados
Formato YOLO OBB
O formato YOLO OBB designa bounding boxes 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 y4Internamente, o YOLO processa perdas e saídas no formato xywhr, que representa o ponto central (xy), largura, altura e rotação da caixa delimitadora.

Um exemplo de um arquivo de rótulo *.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.749758Formato YAML do dataset
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 🚀 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.zipUtilização
Para treinar um modelo usando estes formatos OBB:
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 oriented bounding boxes são suportados:
- DOTA-v1: A primeira versão do dataset DOTA, fornecendo um conjunto abrangente de imagens aéreas com oriented bounding boxes para detecção de objetos.
- DOTA-v1.5: Uma versão intermediária do dataset DOTA, oferecendo anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas aprimoradas de detecção de objetos.
- DOTA-v2: DOTA (A Large-scale Dataset for Object Detection in Aerial Images) versão 2, enfatiza a detecção a partir de perspectivas aéreas e contém oriented bounding boxes com 1,7 milhão de instâncias e 11.268 imagens.
- DOTA8: Um pequeno subconjunto de 8 imagens do dataset DOTA completo, adequado para testar fluxos de trabalho e verificações de Continuous Integration (CI) de treinamento OBB no repositório
ultralytics. - DOTA128: Um subconjunto de 128 imagens do dataset DOTA com todas as imagens na pasta train (usada tanto para train quanto para val), proporcionando um bom equilíbrio entre tamanho e diversidade para testar modelos OBB.
Incorporando seu próprio dataset OBB
Para aqueles que desejam introduzir seus próprios datasets com oriented bounding boxes, certifique-se da 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ótulos
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:
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 datasets no formato DOTA, garantindo o alinhamento com o formato OBB do Ultralytics YOLO.
É imperativo validar a compatibilidade do dataset com o seu modelo e aderir às convenções de formato necessárias. Datasets estruturados corretamente são fundamentais para treinar modelos eficientes de detecção de objetos com oriented bounding boxes.
FAQ
O que são Oriented Bounding Boxes (OBB) e como são usados nos modelos Ultralytics YOLO?
Oriented Bounding Boxes (OBB) são um tipo de anotação de bounding box onde a caixa pode ser rotacionada para se alinhar mais precisamente com o objeto que está sendo detectado, em vez de apenas estar alinhada 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, já que as bounding boxes podem rotacionar para se ajustarem melhor aos objetos.
Como converto meus rótulos de dataset DOTA existentes para o formato YOLO OBB para uso com o Ultralytics YOLO26?
Você pode converter rótulos de dataset 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 que você aproveite as capacidades de OBB para uma detecção de objetos aprimorada. 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 irá reformatar suas anotações DOTA para um formato compatível com YOLO.
Como treino um modelo YOLO26 com oriented bounding boxes (OBB) no meu dataset?
Treinar um modelo YOLO26 com OBBs envolve garantir que seu dataset esteja no formato YOLO OBB e, em seguida, usar a Ultralytics API para treinar o modelo. Aqui está um exemplo em Python e CLI:
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 seu modelo aproveite as anotações OBB detalhadas para uma melhor accuracy de detecção.
Quais datasets são atualmente suportados para treinamento OBB nos modelos Ultralytics YOLO?
Atualmente, a Ultralytics suporta os seguintes datasets para treinamento OBB:
- DOTA-v1: A primeira versão do dataset DOTA, fornecendo um conjunto abrangente de imagens aéreas com oriented bounding boxes para detecção de objetos.
- DOTA-v1.5: Uma versão intermediária do dataset DOTA, oferecendo anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas aprimoradas de detecção de objetos.
- DOTA-v2: Este dataset inclui 1,7 milhão de instâncias com oriented bounding boxes e 11.268 imagens, focando principalmente na detecção aérea de objetos.
- DOTA8: Um subconjunto menor de 8 imagens do dataset DOTA usado para testes e verificações de continuous integration (CI).
- DOTA128: Um subconjunto de 128 imagens com todas as imagens na pasta train (usada tanto para train quanto para val), oferecendo mais diversidade que o DOTA8 enquanto permanece gerenciável para o desenvolvimento inicial e experimentação com modelos OBB.
Estes datasets são personalizados para cenários onde as OBBs oferecem uma vantagem significativa, como análise de imagens aéreas e de satélite.
Posso usar meu próprio dataset com oriented bounding boxes para treinamento do YOLO26 e, em caso afirmativo, como?
Sim, você pode usar seu próprio dataset com oriented bounding boxes para o treinamento do YOLO26. Certifique-se de que as anotações do seu dataset sejam convertidas para o formato YOLO OBB, o que envolve definir as bounding boxes pelos seus quatro pontos de canto. Você pode então criar um YAML configuration file especificando os caminhos do dataset, classes e outros detalhes necessários. Para mais informações sobre como criar e configurar seus datasets, consulte a seção Supported Datasets.