Ultralytics YOLO27:

Dataset DOTA con OBB#

Il dataset DOTA è un benchmark su larga scala per il rilevamento di oggetti nelle immagini aeree, rilasciato in tre versioni (v1.0, v1.5, v2.0) con fino a 1,7 milioni di annotazioni di riquadri delimitatori orientati (OBB) distribuite in 18 categorie, acquisite da sensori e piattaforme aeree diversi.

Esplora i dataset DOTA v1.5 e DOTA v1.0 ospitati ufficialmente su Ultralytics Platform 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#



Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Raccolta proveniente da diversi sensori e piattaforme, con dimensioni delle immagini comprese tra 800 × 800 e 20.000 × 20.000 pixel.
  • Include più di 1,7 milioni di riquadri delimitatori orientati distribuiti in 18 categorie.
  • Comprende il rilevamento di oggetti a più scale grazie all'ampia varietà di dimensioni degli oggetti in ogni immagine.
  • Le istanze sono annotate da esperti utilizzando quadrilateri arbitrari (8 d.o.f.), che rappresentano oggetti con scale, orientamenti e forme diverse.

Versioni del dataset#

DOTA-v1.0#

  • Contiene 15 categorie comuni.
  • È composto da 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.
  • È composto da 11.268 immagini con ben 1.793.658 istanze.
  • Nuove categorie introdotte: "aeroporto" e "eliporto".
  • Suddivisione delle immagini:
    • Addestramento: 1.830 immagini con 268.627 istanze.
    • Convalida: 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, progettata per le sfide di rilevamento di oggetti con OBB:

  • Immagini: un'ampia raccolta di immagini aeree ad alta risoluzione che catturano terreni e strutture diversi.
  • Riquadri delimitatori orientati: annotazioni sotto forma di rettangoli ruotati che racchiudono gli oggetti indipendentemente dal loro orientamento, ideali per rappresentare oggetti come aerei, navi ed edifici.

Applicazioni#

DOTA funge da benchmark per l'addestramento e la valutazione di modelli progettati specificamente per l'analisi di immagini aeree. Grazie all'inclusione delle annotazioni OBB, offre una sfida unica che consente di sviluppare modelli specializzati di rilevamento degli oggetti adatti alle caratteristiche specifiche 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 principali 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 scaricata oppure crea un YAML personalizzato se lavori con DOTA-v2 o un'altra derivazione. Entrambe le release vengono scaricate automaticamente (2 GB) dagli asset di Ultralytics su GitHub la prima volta che avvii l'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

Suddivisione delle immagini DOTA#

Le immagini originali superano regolarmente i 10.000 pixel per lato, quindi è necessario suddividerle in riquadri prima di fornire i dati a YOLO. Usa l'helper qui sotto per suddividere le immagini originali in ritagli sovrapposti da 1024 × 1024 a più scale, mantenendo sincronizzate le annotazioni.

Suddivisione delle immagini
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,
)
Suggerimento

Mantieni la directory di output organizzata secondo la struttura YOLO standard (images/train, labels/train, ecc.) così potrai farvi riferimento direttamente dal file YAML del dataset.

Utilizzo#

Per addestrare un modello sul dataset DOTA v1, puoi utilizzare i seguenti frammenti di codice. Consulta sempre la documentazione del tuo modello per un elenco completo degli argomenti disponibili. Se vuoi prima sperimentare con un sottoinsieme più piccolo, prova a usare 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 annotazioni associate nel dataset DOTAv1 possono essere utilizzate per scopi accademici, ma l'uso commerciale è vietato. Apprezziamo molto la tua comprensione e il rispetto per le volontà dei creatori del dataset.

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

Dati ed esempi di annotazioni#

Dare un'occhiata al dataset ne illustra la profondità:

Dataset DOTA con annotazioni di riquadri delimitatori orientati

  • Esempi DOTA: questa panoramica evidenzia la complessità delle scene aeree e l'importanza delle annotazioni di riquadri delimitatori orientati, che catturano gli oggetti nel loro orientamento naturale.

La ricchezza del dataset offre informazioni preziose sulle sfide del rilevamento degli oggetti specifiche delle immagini aeree. Il dataset DOTA-v2.0 è diventato particolarmente popolare per i progetti di telerilevamento e sorveglianza aerea grazie alle sue annotazioni complete e alla varietà delle categorie di oggetti.

Citazioni e ringraziamenti#

Se utilizzi 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 creato i dataset DOTA per l'impegno encomiabile nella raccolta e nella cura di questo dataset. Per una comprensione esaustiva del dataset e delle sue peculiarità, visita il sito web ufficiale di DOTA.

FAQ#

  • Il dataset DOTA è un dataset specializzato incentrato sul rilevamento degli oggetti nelle immagini aeree. Include riquadri delimitatori orientati (OBB) e fornisce immagini annotate provenienti da diverse scene aeree. La varietà di orientamento, scala e forma degli oggetti nelle sue 1,7 milioni di annotazioni e 18 categorie lo rende ideale per sviluppare e valutare modelli progettati per l'analisi delle immagini aeree, come quelli utilizzati nella sorveglianza, nel monitoraggio ambientale e nella gestione delle calamità.

  • DOTA utilizza riquadri delimitatori orientati (OBB) per le annotazioni, rappresentati da rettangoli ruotati che racchiudono gli oggetti indipendentemente dal loro orientamento. Questo metodo garantisce che gli oggetti, piccoli o disposti con angolazioni diverse, vengano catturati con precisione. Le immagini del dataset a più scale, comprese tra 800 × 800 e 20.000 × 20.000 pixel, consentono inoltre di rilevare efficacemente oggetti sia piccoli sia grandi. Questo approccio è particolarmente utile per le immagini aeree, dove gli oggetti appaiono con angolazioni e scale diverse.

  • Per addestrare un modello sul dataset DOTA, puoi utilizzare il seguente esempio con Ultralytics YOLO:

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

    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 distribuite in 2.806 immagini con 188.282 istanze. Il dataset è suddiviso in set di addestramento, convalida e test.
    • DOTA-v1.5: si basa su DOTA-v1.0 annotando le istanze molto piccole (inferiori a 10 pixel) e aggiungendo una nuova categoria, "gru per container", per un totale di 403.318 istanze.
    • DOTA-v2.0: amplia ulteriormente il dataset con annotazioni provenienti da Google Earth e dal satellite GF-2, includendo 11.268 immagini e 1.793.658 istanze. Comprende 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 immagini a risoluzione inferiore per semplificare l'addestramento. Ecco un frammento Python per suddividere le immagini:

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

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

Commenti