Ultralytics YOLO27:

Conjunto de dados DOTA com OBB#

O conjunto de dados DOTA é um benchmark de grande escala para deteção de objetos em imagens aéreas, lançado em três versões (v1.0, v1.5, v2.0), com até 1,7 M de anotações de caixas delimitadoras orientadas (OBB) em 18 categorias, capturadas a partir de diversos sensores e plataformas aéreas.

Explora os conjuntos de dados DOTA v1.5 e DOTA v1.0, alojados oficialmente na Ultralytics Platform, para pré-visualizares as respetivas anotações orientadas, inspecionares estatísticas e cloná-los para treino.

Classes de objetos do conjunto de dados DOTA para deteção aérea

Principais funcionalidades#



Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Recolha de vários sensores e plataformas, com tamanhos de imagem que variam entre 800 × 800 e 20.000 × 20.000 píxeis.
  • Apresenta mais de 1,7 M de caixas delimitadoras orientadas em 18 categorias.
  • Abrange a deteção de objetos em várias escalas, graças à ampla diversidade de tamanhos dos objetos em cada imagem.
  • As instâncias são anotadas por especialistas utilizando quadriláteros arbitrários (8 d.o.f.), capturando objetos de diferentes escalas, orientações e formas.

Versões do conjunto de dados#

DOTA-v1.0#

  • Contém 15 categorias comuns.
  • É composto por 2.806 imagens com 188.282 instâncias.
  • Divisão: 1/2 para treino (1.411 imagens), 1/6 para validação (458 imagens) e 1/3 para teste (937 imagens).

DOTA-v1.5#

  • Incorpora as mesmas imagens que o DOTA-v1.0.
  • Também são anotadas instâncias muito pequenas (com menos de 10 píxeis).
  • Adição de uma nova categoria: "grua de contentores".
  • Um total de 403.318 instâncias.
  • Lançado para o DOAI Challenge 2019 on Object Detection in Aerial Images.

DOTA-v2.0#

  • Recolha de imagens do Google Earth, do satélite GF-2 e de outras imagens aéreas.
  • Contém 18 categorias comuns.
  • É composto por 11.268 imagens com impressionantes 1.793.658 instâncias.
  • Novas categorias introduzidas: "aeroporto" e "heliporto".
  • Divisão das imagens:
    • Treino: 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 apresenta uma estrutura organizada, adaptada aos desafios de deteção de objetos com OBB:

  • Imagens: Uma vasta coleção de imagens aéreas de alta resolução que capturam diversos terrenos e estruturas.
  • Caixas delimitadoras orientadas: Anotações sob a forma de retângulos rodados que envolvem os objetos independentemente da sua orientação, ideais para capturar objetos como aviões, navios e edifícios.

Aplicações#

O DOTA serve como benchmark para treinar e avaliar modelos especificamente adaptados à análise de imagens aéreas. Com a inclusão de anotações OBB, proporciona um desafio único, permitindo o desenvolvimento de modelos especializados de deteção de objetos que respondem às particularidades das imagens aéreas. O conjunto de dados é especialmente valioso para aplicações de deteção remota, vigilância e monitorização ambiental.

YAML do Conjunto de Dados#

Um ficheiro YAML do conjunto de dados especifica as raízes das imagens/etiquetas, os nomes das classes e outros metadados importantes. A Ultralytics mantém ficheiros YAML oficiais para as duas versões mais utilizadas:

Utiliza o YAML correspondente à versão que descarregaste ou cria um YAML personalizado se estiveres a trabalhar com o DOTA-v2 ou outro derivado. Ambas as versões são descarregadas automaticamente (2 GB) dos recursos do GitHub da Ultralytics na primeira vez que treinas.

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
#     └── DOTAv1 ← downloads here (2 GB)

# 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 as imagens DOTA#

As imagens brutas ultrapassam regularmente os 10.000 píxeis de lado, por isso é necessário criar mosaicos antes de fornecer os dados ao YOLO. Utiliza o auxiliar abaixo para dividir as imagens de origem em recortes sobrepostos de 1024 × 1024, com várias escalas, mantendo as anotações sincronizadas.

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,
)
Dica

Mantém o diretório de saída organizado no esquema YOLO padrão (images/train, labels/train, etc.) para que possas referenciá-lo diretamente a partir do YAML do conjunto de dados.

Utilização#

Para treinar um modelo no conjunto de dados DOTA v1, podes utilizar os seguintes excertos de código. Consulta sempre a documentação do teu modelo para obteres uma lista completa dos argumentos disponíveis. Se quiseres experimentar primeiro um subconjunto mais pequeno, considera utilizar o conjunto de dados DOTA8, que contém apenas 8 imagens para testes rápidos e pode ser consultado na Ultralytics Platform.

Aviso

Tem em atenção que todas as imagens e anotações associadas do conjunto de dados DOTAv1 podem ser utilizadas para fins académicos, mas a utilização comercial é proibida. Agradecemos muito a tua compreensão e o teu respeito pelos desejos dos criadores do conjunto de dados!

Exemplo de treino
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)

Dados e anotações de exemplo#

Observar brevemente o conjunto de dados ilustra a sua profundidade:

Conjunto de dados DOTA com anotações de caixas delimitadoras orientadas

  • Exemplos DOTA: Esta imagem realça a complexidade das cenas aéreas e a importância das anotações de caixas delimitadoras orientadas, capturando os objetos na sua orientação natural.

A riqueza do conjunto de dados oferece informações inestimáveis sobre os desafios de deteção de objetos exclusivos das imagens aéreas. O conjunto de dados DOTA-v2.0 tornou-se particularmente popular em projetos de deteção remota e vigilância aérea devido às suas anotações abrangentes e às diversas categorias de objetos.

Citações e agradecimentos#

Se utilizares o DOTA no teu trabalho, cita os artigos de investigação relevantes:

Citação
@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={2022},
  volume={44},
  number={11},
  pages={7778-7796},
  doi={10.1109/TPAMI.2021.3117983}
}

Um agradecimento especial à equipa responsável pelos datasets DOTA pelo louvável trabalho de organização deste dataset. Para obteres uma compreensão exaustiva do dataset e das suas particularidades, visita o site oficial do DOTA.

Perguntas frequentes#

  • O conjunto de dados DOTA é um conjunto de dados especializado, centrado na deteção de objetos em imagens aéreas. Inclui caixas delimitadoras orientadas (OBB), fornecendo imagens anotadas de diversas cenas aéreas. A diversidade do DOTA em termos de orientação, escala e forma dos objetos, distribuídos por 1,7 M de anotações e 18 categorias, torna-o ideal para desenvolver e avaliar modelos adaptados à análise de imagens aéreas, como os utilizados em vigilância, monitorização ambiental e gestão de catástrofes.

  • O DOTA utiliza caixas delimitadoras orientadas (OBB) para as anotações, representadas por retângulos rodados que envolvem os objetos independentemente da sua orientação. Este método garante que os objetos, sejam pequenos ou estejam posicionados em diferentes ângulos, são capturados com precisão. As imagens multiescala do conjunto de dados, que variam entre 800 × 800 e 20.000 × 20.000 píxeis, permitem ainda detetar eficazmente objetos pequenos e grandes. Esta abordagem é particularmente valiosa para imagens aéreas, nas quais os objetos aparecem em vários ângulos e escalas.

  • Para treinares um modelo no conjunto de dados DOTA, podes utilizar o seguinte exemplo com o Ultralytics YOLO:

    Exemplo de treino
    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)

    Para obteres mais informações sobre como dividir e pré-processar as imagens DOTA, consulta a secção sobre a divisão das imagens DOTA.

    • DOTA-v1.0: Inclui 15 categorias comuns em 2.806 imagens com 188.282 instâncias. O conjunto de dados está dividido em conjuntos de treino, validação e teste.
    • DOTA-v1.5: Baseia-se no DOTA-v1.0, anotando instâncias muito pequenas (com menos de 10 píxeis) e adicionando uma nova categoria, "grua de contentores", num total de 403.318 instâncias.
    • DOTA-v2.0: Expande ainda mais o conjunto 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 "aeroporto" e "heliporto".

    Para obteres uma comparação detalhada e informações adicionais, consulta a secção sobre as versões do conjunto de dados.

  • As imagens DOTA, que podem ser muito grandes, são divididas em resoluções mais pequenas para permitir um treino mais controlável. Eis um excerto 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 maior eficiência do treino e um melhor desempenho do modelo. Para obteres instruções detalhadas, visita a secção sobre a divisão das imagens DOTA.

Comentários