Ultralytics YOLO27:

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

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

Formatos de conjuntos de dados OBB suportados#

Formato YOLO OBB#

O formato YOLO OBB designa as caixas delimitadoras pelos seus quatro pontos de canto, com coordenadas normalizadas entre 0 e 1. Segue este formato:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, o YOLO processa as perdas e as 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 um ficheiro de etiquetas *.txt para a imagem acima, que contém um objeto da classe 0 no formato OBB, poderia ter o seguinte aspeto:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Formato YAML do conjunto de dados#

A framework Ultralytics utiliza um formato de ficheiro YAML para definir a configuração do conjunto de dados e do modelo para treinar modelos OBB. Eis um exemplo do formato YAML utilizado 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 ficheiro *.txt que lista um caminho de imagem por linha (os caminhos que começam por ./ são resolvidos relativamente ao ficheiro *.txt). Um ficheiro *.txt é útil para treinar num subconjunto de um diretório, ignorar imagens sem etiquetas ou combinar imagens de várias fontes numa única divisão.

Caminhos de imagens num ficheiro `*.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

Utilização#

Para treinar um modelo utilizando estes formatos OBB:

Exemplo
from ultralytics import YOLO

# Load a pretrained YOLO26n-OBB model
model = YOLO("yolo26n-obb.pt")

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

Conjuntos de dados suportados#

Atualmente, os seguintes conjuntos de dados com caixas delimitadoras orientadas são suportados. A maioria destes conjuntos de dados também está hospedada na Ultralytics Platform, onde podes navegar pelas imagens e anotações, ver as estatísticas dos conjuntos de dados e cloná-los para treino na cloud.

  • DOTA-v1: A primeira versão do conjunto de dados DOTA, que fornece um conjunto abrangente de imagens aéreas com caixas delimitadoras orientadas para a deteção de objetos.
  • DOTA-v1.5: Uma versão intermédia do conjunto de dados DOTA, que oferece anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas de deteção de objetos mais avançadas.
  • DOTA-v2: A versão 2 do DOTA (um conjunto de dados de grande escala para deteção de objetos em imagens aéreas), que dá ênfase à deteção a partir de perspetivas aéreas e contém caixas delimitadoras orientadas com 1,7 milhões de instâncias e 11 268 imagens.
  • DOTA8: Um 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 treino OBB no repositório ultralytics.
  • DOTA8 Multispectral: Um subconjunto TIFF de 8 imagens e 10 canais para testar o treino OBB multiespectral na Ultralytics Platform.
  • DOTA128: Um subconjunto de 128 imagens do conjunto de dados DOTA, com todas as imagens na pasta train (utilizada tanto para train como para val), que proporciona um bom equilíbrio entre tamanho e diversidade para testar modelos OBB.

Incorporar o teu próprio conjunto de dados OBB#

Se quiseres introduzir os teus próprios conjuntos de dados com caixas delimitadoras orientadas, garante a compatibilidade com o "formato YOLO OBB" mencionado acima. Converte as tuas anotações para este formato obrigatório e especifica os caminhos, as classes e os nomes das classes num ficheiro de configuração YAML correspondente.

Converter formatos de etiquetas#

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

A transição das etiquetas do formato do conjunto de dados DOTA para o formato YOLO OBB pode ser realizada 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.

É essencial validar a compatibilidade do conjunto de dados com o teu modelo e cumprir as convenções de formato necessárias. Conjuntos de dados devidamente estruturados são fundamentais para treinar modelos eficientes de deteção de objetos com caixas delimitadoras orientadas.

Perguntas frequentes#

  • As caixas delimitadoras orientadas (OBB) são um tipo de anotação de caixa delimitadora em que a caixa pode ser rodada para se alinhar mais estreitamente com o objeto detetado, em vez de estar apenas alinhada com os eixos. Isto é particularmente útil em imagens aéreas ou de satélite, nas quais os objetos podem não estar alinhados com os eixos da imagem. Nos modelos Ultralytics YOLO, as OBB são representadas pelos seus quatro pontos de canto no formato YOLO OBB. Isto permite uma deteção de objetos mais precisa, uma vez que as caixas delimitadoras podem rodar para se ajustarem melhor aos objetos.

  • Podes converter as etiquetas do conjunto de dados DOTA para o formato YOLO OBB utilizando a função convert_dota_to_yolo_obb da Ultralytics. Esta conversão garante a compatibilidade com os modelos Ultralytics YOLO, permitindo-te tirar partido das capacidades OBB para melhorar a deteção de objetos. Eis 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 tuas anotações DOTA para um formato compatível com YOLO.

  • Treinar um modelo YOLO26 com OBB requer garantir que o teu conjunto de dados está no formato YOLO OBB e, em seguida, utilizar a API Ultralytics para treinar o modelo. Eis 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)

    Isto garante que o teu modelo tira partido das anotações OBB detalhadas para melhorar a precisão da deteção.

  • Atualmente, a Ultralytics suporta os seguintes conjuntos de dados para o treino OBB:

    • DOTA-v1: A primeira versão do conjunto de dados DOTA, que fornece um conjunto abrangente de imagens aéreas com caixas delimitadoras orientadas para a deteção de objetos.
    • DOTA-v1.5: Uma versão intermédia do conjunto de dados DOTA, que oferece anotações adicionais e melhorias em relação ao DOTA-v1 para tarefas de deteção de objetos mais avançadas.
    • DOTA-v2: Este conjunto de dados inclui 1,7 milhões de instâncias com caixas delimitadoras orientadas e 11 268 imagens, com foco principal na deteção de objetos aéreos.
    • DOTA8: Um subconjunto mais pequeno, com 8 imagens, do conjunto de dados DOTA, utilizado para testes e verificações de integração contínua (CI).
    • DOTA128: Um subconjunto de 128 imagens com todas as imagens na pasta train (utilizada tanto para train como para val), que oferece mais diversidade do que o DOTA8, mantendo-se gerível para o desenvolvimento e a experimentação iniciais de modelos OBB.

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

  • Sim, podes utilizar o teu próprio conjunto de dados com caixas delimitadoras orientadas para o treino do YOLO26. Garante que as anotações do teu conjunto de dados são convertidas para o formato YOLO OBB, que envolve definir as caixas delimitadoras pelos seus quatro pontos de canto. Em seguida, podes criar um ficheiro de configuração YAML que especifique os caminhos do conjunto de dados, as classes e outros detalhes necessários. Para obteres mais informações sobre como criar e configurar os teus conjuntos de dados, consulta a secção Conjuntos de dados suportados.

Comentários