Conjunto de dados DOTA com OBB#
O conjunto de dados DOTA é um benchmark de grande escala para a deteção de objetos em imagens aéreas. Foi lançado em três versões (v1.0, v1.5 e v2.0) e contém até 1,7 milhões de anotações de caixas delimitadoras orientadas (OBB) distribuídas por 18 categorias, captadas por diversos sensores e plataformas aéreas.
Explora os conjuntos de dados oficialmente alojados DOTA v1.5 e DOTA v1.0 na Ultralytics Platform para pré-visualizar as anotações orientadas, consultar as estatísticas e cloná-los para treino.

Principais funcionalidades#
Assista: Como treinar Ultralytics YOLO no conjunto de dados DOTA para caixas delimitadoras orientadas no Google Colab
- Recolhido com vários sensores e plataformas, com tamanhos de imagem entre 800 × 800 e 20.000 × 20.000 píxeis.
- Inclui mais de 1,7 milhões de caixas delimitadoras orientadas distribuídas por 18 categorias.
- Abrange a deteção de objetos em várias escalas, graças à ampla gama de tamanhos dos objetos em cada imagem.
- As instâncias são anotadas por especialistas com quadriláteros arbitrários (8 graus de liberdade), que representam objetos com 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.
- Proporções das divisões: 1/2 para treino (1.411 imagens), 1/6 para validação (458 imagens) e 1/3 para teste (937 imagens).
DOTA-v1.5#
- Inclui 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 Desafio DOAI 2019 de deteção de objetos em imagens aéreas.
DOTA-v2.0#
- Coleções 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 um total impressionante de 1.793.658 instâncias.
- Novas categorias introduzidas: "aeroporto" e "heliporto".
- Divisões 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 um layout estruturado, desenvolvido para desafios de detecção de objetos com OBB:
- Imagens: Uma vasta coleção de imagens aéreas de alta resolução que capturam terrenos e estruturas diversos.
- Caixas delimitadoras orientadas: Anotações na forma de retângulos rotacionados que delimitam objetos independentemente da orientação, ideais para capturar objetos como aviões, navios e edifícios.
Aplicações#
O DOTA serve como referência para treinar e avaliar modelos especificamente desenvolvidos para análise de imagens aéreas. Com a inclusão de anotações OBB, oferece um desafio único e permite desenvolver modelos especializados de detecção de objetos que atendem às particularidades das imagens aéreas. O conjunto de dados é especialmente valioso para aplicações de sensoriamento remoto, vigilância e monitoramento ambiental.
YAML do conjunto de dados#
Um arquivo YAML do conjunto de dados especifica as raízes de imagens/rótulos, os nomes das classes e outros metadados importantes. A Ultralytics mantém arquivos YAML oficiais para as duas versões mais usadas:
Usa o YAML correspondente à versão que baixaste ou cria um YAML personalizado se estiveres a trabalhar com DOTA-v2 ou outro derivado. Ambas as versões são baixadas automaticamente (2 GB) dos recursos do Ultralytics GitHub na primeira vez que treinas.
# 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.zipDividir imagens DOTA#
As imagens brutas costumam ultrapassar 10.000 pixels de cada lado, por isso recomenda-se dividi-las em blocos antes de fornecer os dados ao YOLO. Usa o auxiliar abaixo para dividir as imagens de origem em recortes sobrepostos de 1024 × 1024 em várias escalas, mantendo as anotações sincronizadas.
from ultralytics.data.split_dota import split_test, split_trainval
# Dividir os conjuntos de treino e validação, com rótulos.
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,
)
# Dividir o conjunto de teste, sem rótulos.
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,
)Mantém o diretório de saída organizado no layout padrão do YOLO (images/train, labels/train, etc.) para que possas referenciá-lo diretamente no YAML do conjunto de dados.
Uso#
Para treinar um modelo no conjunto de dados DOTA v1, podes usar os trechos de código a seguir. Consulta sempre a documentação do teu modelo para obter uma lista completa dos argumentos disponíveis. Se quiseres experimentar primeiro um subconjunto menor, considera usar o conjunto de dados DOTA8, que contém apenas 8 imagens para testes rápidos e pode ser explorado na Ultralytics Platform.
Nota que todas as imagens e anotações associadas do conjunto de dados DOTAv1 podem ser usadas para fins acadêmicos, mas o uso comercial é proibido. Agradecemos muito a tua compreensão e o respeito pelos desejos dos criadores do conjunto de dados!
from ultralytics import YOLO
# Carrega um modelo YOLO26n-OBB pré-treinado
model = YOLO("yolo26n-obb.pt")
# Treina o modelo no conjunto de dados DOTAv1
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Dados de exemplo e anotações#
Uma rápida olhada no conjunto de dados revela a sua riqueza:

- Exemplos do DOTA: Esta imagem destaca a complexidade das cenas aéreas e a importância das anotações de caixas delimitadoras orientadas, que capturam objetos na sua orientação natural.
A riqueza do conjunto de dados oferece informações valiosas sobre os desafios de detecção de objetos específicos de imagens aéreas. O conjunto de dados DOTA-v2.0 tornou-se especialmente popular em projetos de sensoriamento remoto e vigilância aérea graças às suas anotações abrangentes e às diversas categorias de objetos.
Citações e agradecimentos#
Se usares o DOTA no teu trabalho, cita os artigos de pesquisa pertinentes:
@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 conjuntos de dados DOTA pelo excelente trabalho de curadoria deste conjunto. Para compreenderes o conjunto de dados e as suas particularidades em detalhe, visita o site oficial do DOTA.
Perguntas frequentes#
O conjunto de dados DOTA é um conjunto de dados especializado em detecção de objetos em imagens aéreas. Ele inclui caixas delimitadoras orientadas (OBB) e imagens anotadas de diversas cenas aéreas. A diversidade de orientação, escala e forma dos objetos no DOTA, com 1,7 milhão de anotações e 18 categorias, torna-o ideal para desenvolver e avaliar modelos voltados à análise de imagens aéreas, como os usados em vigilância, monitoramento ambiental e gestão de desastres.
O DOTA usa caixas delimitadoras orientadas (OBB) para fazer anotações. Elas são representadas por retângulos rotacionados que delimitam os objetos independentemente da orientação. Esse método garante que os objetos, sejam pequenos ou estejam em ângulos diferentes, sejam capturados com precisão. As imagens multiescala do conjunto de dados, que variam de 800 × 800 a 20.000 × 20.000 pixels, também permitem detectar objetos pequenos e grandes de forma eficaz. Essa abordagem é especialmente valiosa para imagens aéreas, nas quais os objetos aparecem em vários ângulos e escalas.
Para treinar um modelo no conjunto de dados DOTA, podes usar o exemplo a seguir com Ultralytics YOLO:
Exemplo de treinofrom ultralytics import YOLO # Carrega um modelo YOLO26n-OBB pré-treinado model = YOLO("yolo26n-obb.pt") # Treina o modelo no conjunto de dados DOTAv1 results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Para mais detalhes sobre como dividir e pré-processar as imagens DOTA, consulta a seção sobre divisão de imagens DOTA.
- DOTA-v1.0: Inclui 15 categorias comuns em 2.806 imagens, com 188.282 instâncias. O conjunto de dados é dividido em conjuntos de treino, validação e teste.
- DOTA-v1.5: Expande o DOTA-v1.0 ao anotar instâncias muito pequenas (com menos de 10 pixels) e adicionar uma nova categoria, "guindaste de contêiner", totalizando 403.318 instâncias.
- DOTA-v2.0: Expande ainda mais as anotações com imagens do Google Earth e do satélite GF-2, abrangendo 11.268 imagens e 1.793.658 instâncias. Inclui novas categorias, como "aeroporto" e "heliponto".
Para uma comparação detalhada e informações adicionais, consulta a seção sobre versões do conjunto de dados.
As imagens DOTA podem ser muito grandes, por isso são divididas em imagens menores para facilitar o treino. Aqui está um trecho de código Python para dividir as imagens:
Exemplofrom ultralytics.data.split_dota import split_test, split_trainval # dividir os conjuntos de treino e validação, com rótulos. 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, ) # dividir o conjunto de teste, sem rótulos. 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, )Esse processo melhora a eficiência do treino e o desempenho do modelo. Para instruções detalhadas, visita a seção sobre divisão de imagens DOTA.



