Ir para o conteúdo

Conjunto de Dados DOTA com OBB

DOTA se destaca como um conjunto de dados especializado, enfatizando a detecção de objetos em imagens aéreas. Originário da série de conjuntos de dados DOTA, ele oferece imagens anotadas capturando uma gama diversificada de cenas aéreas com Bounding Boxes Orientadas (OBB).

Visualização das classes DOTA

Principais Características



Assista: Como Treinar o Ultralytics YOLO11 no Dataset DOTA para Caixas Delimitadoras Orientadas no Google Colab

  • Coleta de vários sensores e plataformas, com tamanhos de imagem variando de 800 × 800 a 20.000 × 20.000 pixels.
  • Apresenta mais de 1,7 milhão de caixas delimitadoras orientadas em 18 categorias.
  • Abrange a detecção de objetos multiescala.
  • As instâncias são anotadas por especialistas usando quadriláteros arbitrários (8 g.d.l.), capturando objetos de diferentes escalas, orientações e formas.

Versões do Conjunto de Dados

DOTA-v1.0

  • Contém 15 categorias comuns.
  • Compreende 2.806 imagens com 188.282 instâncias.
  • Relações de divisão: 1/2 para treinamento, 1/6 para validação e 1/3 para teste.

DOTA-v1.5

DOTA-v2.0

  • Coleções do Google Earth, Satélite GF-2 e outras imagens aéreas.
  • Contém 18 categorias comuns.
  • Compreende 11.268 imagens com impressionantes 1.793.658 instâncias.
  • Novas categorias introduzidas: "airport" e "helipad".
  • Divisões de imagem:
    • Treinamento: 1.830 imagens com 268.627 instâncias.
    • Validação: 593 imagens com 81.048 instâncias.
    • Test-dev: 2.792 imagens com 353.346 instâncias.
    • Test-challenge: 6.053 imagens com 1.090.637 instâncias.

Estrutura do Conjunto de Dados

O DOTA exibe um layout estruturado, feito sob medida para desafios de detecção de objetos OBB:

  • Imagens: Uma vasta coleção de imagens aéreas de alta resolução capturando diversos terrenos e estruturas.
  • Caixas Delimitadoras Orientadas: Anotações na forma de retângulos rotacionados que encapsulam objetos, independentemente de sua orientação, ideal para capturar objetos como aviões, navios e edifícios.

Aplicações

O DOTA serve como um benchmark para treinar e avaliar modelos especificamente adaptados para análise de imagens aéreas. Com a inclusão de anotações OBB, ele oferece um desafio único, permitindo o desenvolvimento de modelos especializados de detecção de objetos que atendem às nuances das imagens aéreas. O conjunto de dados é particularmente valioso para aplicações em sensoriamento remoto, vigilância e monitoramento ambiental.

YAML do Conjunto de Dados

Normalmente, os conjuntos de dados incorporam um arquivo YAML (Yet Another Markup Language) detalhando a configuração do conjunto de dados. Para DOTA v1 e DOTA v1.5, a Ultralytics fornece DOTAv1.yaml e DOTAv1.5.yaml ficheiros. Para obter detalhes adicionais sobre estes, bem como sobre o DOTA v2, consulte o repositório e a documentação oficiais do DOTA.

DOTAv1.yaml

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

# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2/
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota1 ← downloads here (2GB)

# 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: DOTAv1 # dataset root dir
train: images/train # train images (relative to 'path') 1411 images
val: images/val # val images (relative to 'path') 458 images
test: images/test # test images (optional) 937 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/DOTAv1.zip

Dividir imagens DOTA

Para treinar o conjunto de dados DOTA, dividimos as imagens DOTA originais com alta resolução em imagens com resolução de 1024x1024 de forma multiescala. Esta etapa de pré-processamento é crucial para um treinamento eficiente, pois as imagens originais podem ser extremamente grandes.

Dividir imagens

from ultralytics.data.split_dota import split_test, split_trainval

# split train and val set, with labels.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# split test set, without labels.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)

Utilização

Para treinar um modelo no conjunto de dados DOTA v1, você pode utilizar os seguintes trechos de código. Consulte sempre a documentação do seu modelo para obter uma lista completa dos argumentos disponíveis. Para aqueles que desejam experimentar primeiro com um subconjunto menor, considere usar o conjunto de dados DOTA8, que contém apenas 8 imagens para testes rápidos.

Aviso

Por favor, note que todas as imagens e anotações associadas no conjunto de dados DOTAv1 podem ser usadas para fins acadêmicos, mas o uso comercial é proibido. Agradecemos a sua compreensão e respeito pelos desejos dos criadores do conjunto de dados!

Exemplo de Treinamento

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

Dados de Amostra e Anotações

Uma olhada no conjunto de dados ilustra sua profundidade:

Imagem de amostra do conjunto de dados

  • Exemplos DOTA: Este snapshot sublinha a complexidade das cenas aéreas e a importância das anotações de Caixa Delimitadora Orientada, capturando objetos em sua orientação natural.

A riqueza do dataset oferece insights valiosos sobre os desafios de detecção de objetos exclusivos de imagens aéreas. O dataset DOTA-v2.0 se tornou particularmente popular para projetos de sensoriamento remoto e vigilância aérea devido às suas anotações abrangentes e diversas categorias de objetos.

Citações e Agradecimentos

Para aqueles que utilizam o DOTA em seus projetos, é importante citar os artigos de pesquisa relevantes:

@article{9560031,
  author={Ding, Jian and Xue, Nan and Xia, Gui-Song and Bai, Xiang and Yang, Wen and Yang, Michael and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Object Detection in Aerial Images: A Large-Scale Benchmark and Challenges},
  year={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

Uma nota especial de gratidão à equipe por trás dos conjuntos de dados DOTA por seu esforço louvável na curadoria deste conjunto de dados. Para uma compreensão exaustiva do conjunto de dados e suas nuances, visite o site oficial do DOTA.

FAQ

O que é o conjunto de dados DOTA e por que ele é importante para a detecção de objetos em imagens aéreas?

O conjunto de dados DOTA é um conjunto de dados especializado focado na detecção de objetos em imagens aéreas. Ele apresenta caixas delimitadoras orientadas (OBB), fornecendo imagens anotadas de diversas cenas aéreas. A diversidade do DOTA na orientação, escala e forma do objeto em suas 1,7 milhão de anotações e 18 categorias o torna ideal para desenvolver e avaliar modelos adaptados para análise de imagens aéreas, como os usados em vigilância, monitoramento ambiental e gerenciamento de desastres.

Como o conjunto de dados DOTA lida com diferentes escalas e orientações nas imagens?

O DOTA utiliza Caixas Delimitadoras Orientadas (OBB) para anotação, que são representadas por retângulos rotacionados que encapsulam objetos, independentemente de sua orientação. Este método garante que os objetos, sejam pequenos ou em ângulos diferentes, sejam capturados com precisão. As imagens multiescala do conjunto de dados, variando de 800 × 800 a 20.000 × 20.000 pixels, permitem ainda a detecção eficaz de objetos pequenos e grandes. Esta abordagem é particularmente valiosa para imagens aéreas onde os objetos aparecem em vários ângulos e escalas.

Como posso treinar um modelo usando o conjunto de dados DOTA?

Para treinar um modelo no conjunto de dados DOTA, você pode usar o seguinte exemplo com Ultralytics YOLO:

Exemplo de Treinamento

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

Para obter mais detalhes sobre como dividir e pré-processar as imagens DOTA, consulte a seção de divisão de imagens DOTA.

Quais são as diferenças entre DOTA-v1.0, DOTA-v1.5 e DOTA-v2.0?

  • DOTA-v1.0: Inclui 15 categorias comuns em 2.806 imagens com 188.282 instâncias. O conjunto de dados é dividido em conjuntos de treinamento, validação e teste.
  • DOTA-v1.5: Desenvolve-se sobre o DOTA-v1.0 anotando instâncias muito pequenas (menos de 10 pixels) e adicionando uma nova categoria, "container crane", totalizando 403.318 instâncias.
  • DOTA-v2.0: Expande ainda mais com anotações do Google Earth e do Satélite GF-2, apresentando 11.268 imagens e 1.793.658 instâncias. Inclui novas categorias como "airport" e "helipad".

Para uma comparação detalhada e detalhes adicionais, verifique a seção de versões do dataset.

Como posso preparar imagens DOTA de alta resolução para treinamento?

As imagens DOTA, que podem ser muito grandes, são divididas em resoluções menores para um treinamento gerenciável. Aqui está um trecho de Python para dividir as imagens:

Exemplo

from ultralytics.data.split_dota import split_test, split_trainval

# split train and val set, with labels.
split_trainval(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)
# split test set, without labels.
split_test(
    data_root="path/to/DOTAv1.0/",
    save_dir="path/to/DOTAv1.0-split/",
    rates=[0.5, 1.0, 1.5],  # multiscale
    gap=500,
)

Este processo facilita uma melhor eficiência de treinamento e desempenho do modelo. Para obter instruções detalhadas, visite a seção de divisão de imagens DOTA.



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários