Dataset DOTA con OBB#
Il dataset DOTA è un benchmark su larga scala per il rilevamento di oggetti nelle immagini aeree, pubblicato in tre versioni (v1.0, v1.5, v2.0) con fino a 1,7 milioni di annotazioni di riquadri di delimitazione orientati (OBB) in 18 categorie, raccolte con sensori e piattaforme aeree diversi.
Esplora i dataset DOTA v1.5 e DOTA v1.0, ospitati ufficialmente sulla piattaforma Ultralytics, per visualizzare in anteprima le annotazioni orientate, esaminare le statistiche e clonarli per l'addestramento.

Funzionalità principali#
Guarda: Come addestrare Ultralytics YOLO sul dataset DOTA per bounding box orientate in Google Colab
- Raccolta effettuata con sensori e piattaforme diversi, con dimensioni delle immagini da 800 × 800 a 20.000 × 20.000 pixel.
- Include oltre 1,7 milioni di riquadri di delimitazione orientati in 18 categorie.
- Consente il rilevamento di oggetti su più scale grazie all'ampia gamma di dimensioni degli oggetti presenti in ogni immagine.
- Le istanze sono annotate da esperti usando quadrilateri arbitrari (8 d.o.f.), che rappresentano oggetti di scale, orientamenti e forme diversi.
Versioni del dataset#
DOTA-v1.0#
- Contiene 15 categorie comuni.
- Comprende 2.806 immagini con 188.282 istanze.
- Suddivisione: 1/2 per l'addestramento (1.411 immagini), 1/6 per la convalida (458 immagini) e 1/3 per il test (937 immagini).
DOTA-v1.5#
- Include le stesse immagini di DOTA-v1.0.
- Sono annotate anche le istanze molto piccole (meno di 10 pixel).
- Aggiunta di una nuova categoria: "gru a portale per container".
- Un totale di 403.318 istanze.
- Pubblicato per la DOAI Challenge 2019 sul rilevamento di oggetti in immagini aeree.
DOTA-v2.0#
- Raccolte da Google Earth, dal satellite GF-2 e da altre immagini aeree.
- Contiene 18 categorie comuni.
- Comprende 11.268 immagini con ben 1.793.658 istanze.
- Nuove categorie introdotte: "aeroporto" e "eliporto".
- Suddivisioni delle immagini:
- Addestramento: 1.830 immagini con 268.627 istanze.
- Validazione: 593 immagini con 81.048 istanze.
- Test-dev: 2.792 immagini con 353.346 istanze.
- Test-challenge: 6.053 immagini con 1.090.637 istanze.
Struttura del dataset#
DOTA presenta una struttura organizzata, pensata per le sfide di rilevamento di oggetti OBB:
- Immagini: una vasta raccolta di immagini aeree ad alta risoluzione che ritraggono terreni e strutture diversi.
- Bounding box orientati: annotazioni sotto forma di rettangoli ruotati che racchiudono gli oggetti indipendentemente dal loro orientamento, ideali per identificare oggetti come aerei, navi ed edifici.
Applicazioni#
DOTA è un benchmark per addestrare e valutare modelli progettati specificamente per l'analisi di immagini aeree. Grazie alle annotazioni OBB, propone una sfida unica e permette di sviluppare modelli specializzati di rilevamento degli oggetti, adatti alle peculiarità delle immagini aeree. Il dataset è particolarmente utile per applicazioni di telerilevamento, sorveglianza e monitoraggio ambientale.
YAML del dataset#
Un file YAML del dataset specifica le directory delle immagini e delle etichette, i nomi delle classi e altri metadati importanti. Ultralytics mantiene file YAML ufficiali per le due release più utilizzate:
Usa il file YAML corrispondente alla release che hai scaricato oppure creane uno personalizzato se lavori con DOTA-v2 o un'altra derivazione. Entrambe le release vengono scaricate automaticamente (2 GB) dagli asset GitHub di Ultralytics al primo addestramento.
# 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.zipSuddividere le immagini DOTA#
Le immagini originali superano regolarmente i 10.000 pixel per lato, quindi è consigliabile suddividerle in riquadri prima di passare i dati a YOLO. Usa la funzione di supporto qui sotto per suddividere le immagini originali in ritagli sovrapposti da 1024 × 1024 a più scale, mantenendo sincronizzate le annotazioni.
from ultralytics.data.split_dota import split_test, split_trainval
# Suddividi i set di train e val, con le etichette.
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,
)
# Suddividi il set di test, senza etichette.
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,
)Mantieni la directory di output organizzata secondo la struttura YOLO standard (images/train, labels/train e così via), così potrai farvi riferimento direttamente dal file YAML del dataset.
Utilizzo#
Per addestrare un modello sul dataset DOTA v1, puoi usare i seguenti frammenti di codice. Consulta sempre la documentazione del tuo modello per l'elenco completo degli argomenti disponibili. Se vuoi prima sperimentare con un sottoinsieme più piccolo, prova il dataset DOTA8, che contiene solo 8 immagini per test rapidi ed è consultabile su Ultralytics Platform.
Tieni presente che tutte le immagini e le relative annotazioni del dataset DOTAv1 possono essere utilizzate per scopi accademici, ma l'uso commerciale è vietato. Apprezziamo molto la tua comprensione e il rispetto delle volontà dei creatori del dataset!
from ultralytics import YOLO
# Carica un modello YOLO26n-OBB preaddestrato
model = YOLO("yolo26n-obb.pt")
# Addestra il modello sul dataset DOTAv1
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Dati di esempio e annotazioni#
Uno sguardo al dataset ne mostra la ricchezza:

- Esempi DOTA: questa immagine evidenzia la complessità delle scene aeree e l'importanza delle annotazioni di bounding box orientati, che identificano gli oggetti nel loro orientamento naturale.
La ricchezza del dataset offre preziose informazioni sulle sfide di rilevamento degli oggetti specifiche delle immagini aeree. Il dataset DOTA-v2.0 è diventato particolarmente popolare nei progetti di telerilevamento e sorveglianza aerea grazie alle annotazioni complete e alle diverse categorie di oggetti.
Citazioni e ringraziamenti#
Se usi DOTA nel tuo lavoro, cita gli articoli di ricerca pertinenti:
@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}
}Un ringraziamento speciale al team che ha realizzato i dataset DOTA per l'apprezzabile lavoro di raccolta e preparazione di questo dataset. Per conoscere a fondo il dataset e le sue caratteristiche, visita il sito ufficiale di DOTA.
Domande frequenti#
Il dataset DOTA è un dataset specializzato nel rilevamento degli oggetti nelle immagini aeree. Include bounding box orientati (OBB) e immagini annotate provenienti da diverse scene aeree. La varietà di orientamento, scala e forma degli oggetti nelle 1,7 milioni di annotazioni e nelle 18 categorie rende DOTA ideale per sviluppare e valutare modelli destinati all'analisi delle immagini aeree, come quelli utilizzati per la sorveglianza, il monitoraggio ambientale e la gestione delle emergenze.
DOTA utilizza bounding box orientati (OBB) per le annotazioni, rappresentati da rettangoli ruotati che racchiudono gli oggetti indipendentemente dal loro orientamento. Questo metodo consente di identificare con precisione gli oggetti, anche se piccoli o inclinati. Le immagini multiscala del dataset, con dimensioni comprese tra 800 × 800 e 20.000 × 20.000 pixel, permettono inoltre di rilevare efficacemente oggetti sia piccoli sia grandi. Questo approccio è particolarmente utile nelle immagini aeree, in cui gli oggetti appaiono con angolazioni e scale diverse.
Per addestrare un modello sul dataset DOTA, puoi usare il seguente esempio con Ultralytics YOLO:
Esempio di addestramentofrom ultralytics import YOLO # Carica un modello YOLO26n-OBB preaddestrato model = YOLO("yolo26n-obb.pt") # Addestra il modello sul dataset DOTAv1 results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)Per ulteriori dettagli su come suddividere e preelaborare le immagini DOTA, consulta la sezione sulla suddivisione delle immagini DOTA.
- DOTA-v1.0: include 15 categorie comuni in 2.806 immagini con 188.282 istanze. Il dataset è suddiviso in set di addestramento, validazione e test.
- DOTA-v1.5: amplia DOTA-v1.0 annotando istanze molto piccole (meno di 10 pixel) e aggiungendo una nuova categoria, «gru per container», per un totale di 403.318 istanze.
- DOTA-v2.0: si amplia ulteriormente con annotazioni provenienti da Google Earth e dal satellite GF-2 e include 11.268 immagini e 1.793.658 istanze. Aggiunge nuove categorie come «aeroporto» ed «eliporto».
Per un confronto dettagliato e ulteriori informazioni, consulta la sezione sulle versioni del dataset.
Le immagini DOTA, che possono essere molto grandi, vengono suddivise in risoluzioni più piccole per semplificare l'addestramento. Ecco un frammento di Python per suddividere le immagini:
Esempiofrom ultralytics.data.split_dota import split_test, split_trainval # suddividi i set di train e val, con le etichette. 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, ) # suddividi il set di test, senza etichette. 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, )Questo processo migliora l'efficienza dell'addestramento e le prestazioni del modello. Per istruzioni dettagliate, consulta la sezione sulla suddivisione delle immagini DOTA.



