Ir para o conteúdo

Visão Geral de Conjuntos de Dados de Caixa Delimitadora Orientada (OBB)

Treinar um modelo preciso de detecção de objetos com caixas delimitadoras orientadas (OBB) requer um conjunto de dados completo. Este guia explica os vários formatos de conjunto de dados OBB compatíveis com os 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 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 em xywhr formato, que representa o bounding boxo ponto central (xy), largura, altura e rotação de.

Exemplos de formato OBB

Um exemplo de *.txt Arquivo de etiqueta para a imagem acima, que contém um objeto da classe 0 no formato OBB, poderia ser parecido com:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Formato YAML do Conjunto de Dados

O framework Ultralytics usa um formato de arquivo YAML para definir o conjunto de dados e a configuração do modelo para treinar Modelos OBB. Aqui está um exemplo do formato YAML usado para definir um conjunto de dados OBB:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset 8 images from split DOTAv1 dataset 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 (1MB)

# 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

Utilização

Para treinar um modelo usando estes formatos OBB:

Exemplo

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Conjuntos de Dados Suportados

Atualmente, os seguintes conjuntos de dados 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 e melhorias adicionais em relação ao DOTA-v1 para tarefas aprimoradas de detecção de objetos.
  • DOTA-v2: DOTA (Um Conjunto de Dados em Larga Escala para Detecção de Objetos em Imagens Aéreas) versão 2, enfatiza a detecção 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) de treinamento OBB no ultralytics repositório.

Incorporando seu próprio conjunto de dados OBB

Para aqueles que desejam introduzir seus próprios conjuntos de dados com caixas delimitadoras orientadas, garantam a compatibilidade com o "Formato YOLO OBB" mencionado acima. Converta suas anotações para este formato exigido e detalhe os caminhos, classes e nomes de classe em um arquivo de configuração YAML correspondente.

Converter Formatos de Etiqueta

Formato do Conjunto de Dados DOTA para o Formato YOLO OBB

A transição de rótulos do formato do conjunto de dados DOTA para o formato YOLO OBB pode ser alcançada 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.

É imprescindível validar a compatibilidade do conjunto de dados com o seu modelo e aderir às convenções de formato necessárias. Conjuntos de dados devidamente estruturados são fundamentais para treinar modelos eficientes de detecção de objetos com caixas delimitadoras orientadas.

FAQ

O que são Caixas Delimitadoras Orientadas (OBB) e como são usadas nos modelos Ultralytics YOLO?

Caixas Delimitadoras Orientadas (OBB) são um tipo de anotação de caixa delimitadora onde a caixa pode ser girada para se alinhar mais estreitamente com o objeto que está sendo detectado, em vez de apenas ser alinhada ao eixo. 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 por 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 girar para se ajustarem melhor aos objetos.

Como converto as minhas etiquetas de conjunto de dados DOTA existentes para o formato YOLO OBB para usar com o Ultralytics YOLO11?

Você pode converter rótulos de conjunto de dados DOTA para o formato YOLO OBB usando o convert_dota_to_yolo_obb função da Ultralytics. Esta conversão garante a compatibilidade com os modelos YOLO da Ultralytics, permitindo que você aproveite os recursos OBB para 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 em um formato compatível com YOLO.

Como faço para treinar um modelo YOLO11 com caixas delimitadoras orientadas (OBB) no meu dataset?

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

Exemplo

from ultralytics import YOLO

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

# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLO11n-OBB model on the custom dataset
yolo obb train data=your_dataset.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640

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

Quais datasets são atualmente suportados para treinamento OBB em modelos Ultralytics YOLO?

Atualmente, o Ultralytics suporta os seguintes conjuntos de dados 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 e melhorias adicionais 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, com foco principal 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).

Esses conjuntos de dados são feitos sob medida para cenários onde OBBs oferecem uma vantagem significativa, como análise de imagens aéreas e de satélite.

Posso usar meu próprio conjunto de dados com caixas delimitadoras orientadas para treinamento YOLO11 e, em caso afirmativo, como?

Sim, você pode usar seu próprio conjunto de dados com caixas delimitadoras orientadas para o treinamento do YOLO11. Certifique-se de que as anotações do seu conjunto de dados sejam convertidas para o formato YOLO OBB, que envolve a definição de caixas delimitadoras por seus quatro pontos de canto. Em seguida, você pode criar um arquivo de configuração YAML especificando os caminhos do conjunto de dados, classes e outros detalhes necessários. Para obter mais informações sobre como criar e configurar seus conjuntos de dados, consulte a seção Conjuntos de Dados Suportados.



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

Comentários