Ultralytics YOLO27:

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.

Classi di oggetti del dataset DOTA per il rilevamento aereo

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#

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.

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

Suddividere 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.

Suddividere le immagini
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,
)
Suggerimento

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.

Attenzione

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!

Esempio di addestramento
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:

Dataset DOTA con annotazioni di bounding box orientati

  • 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:

Citazione
@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 addestramento
    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)

    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:

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

    Questo processo migliora l'efficienza dell'addestramento e le prestazioni del modello. Per istruzioni dettagliate, consulta la sezione sulla suddivisione delle immagini DOTA.

Commenti