Dataset DOTA con OBB

DOTA è un dataset specializzato, incentrato sul rilevamento di oggetti in immagini aeree. Originario della serie di dataset DOTA, offre immagini annotate che catturano una vasta gamma di scene aeree con Oriented Bounding Boxes (OBB).

Classi di oggetti del dataset DOTA per il rilevamento aereo

Caratteristiche principali



Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Raccolta da vari sensori e piattaforme, con dimensioni delle immagini che variano da 800 × 800 a 20.000 × 20.000 pixel.
  • Presenta oltre 1,7 milioni di oriented bounding boxes in 18 categorie.
  • Include il rilevamento di oggetti multiscala grazie all'ampia distribuzione delle dimensioni degli oggetti per immagine.
  • Le istanze sono annotate da esperti utilizzando quadrilateri arbitrari (8 d.o.f.), che catturano oggetti di diverse scale, orientamenti e forme.

Versioni del Dataset

DOTA-v1.0

  • Contiene 15 categorie comuni.
  • Comprende 2.806 immagini con 188.282 istanze.
  • Rapporti di suddivisione: 1/2 per l'addestramento, 1/6 per la validazione e 1/3 per il test.

DOTA-v1.5

DOTA-v2.0

  • Raccolte da Google Earth, GF-2 Satellite e altre immagini aeree.
  • Contiene 18 categorie comuni.
  • Comprende 11.268 immagini con ben 1.793.658 istanze.
  • Nuove categorie introdotte: "airport" e "helipad".
  • Suddivisione 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 su misura per le sfide di rilevamento oggetti OBB:

  • Immagini: Una vasta collezione di immagini aeree ad alta risoluzione che catturano terreni e strutture diverse.
  • Oriented Bounding Boxes: Annotazioni sotto forma di rettangoli ruotati che racchiudono gli oggetti a prescindere dal loro orientamento, ideali per catturare oggetti come aerei, navi ed edifici.

Applicazioni

DOTA funge da benchmark per l'addestramento e la valutazione di modelli specificamente adattati all'analisi di immagini aeree. Con l'inclusione delle annotazioni OBB, offre una sfida unica, consentendo lo sviluppo di modelli di rilevamento oggetti specializzati che si occupano delle sfumature delle immagini aeree. Il dataset è particolarmente prezioso per applicazioni nel telerilevamento, nella sorveglianza e nel monitoraggio ambientale.

YAML del dataset

Un file YAML (Yet Another Markup Language) del dataset specifica le directory radice di immagini/etichette, i nomi delle classi e altri metadati importanti. Ultralytics gestisce i file YAML ufficiali per le due release più comunemente utilizzate:

Usa il file YAML corrispondente alla release che hai scaricato, o creane uno personalizzato se stai lavorando con DOTA-v2 o un altro derivato.

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
#     └── dota1 ← 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

Suddividi le immagini DOTA

Le immagini grezze superano abitualmente i 10.000 pixel per lato, quindi è necessario eseguire il tiling prima di fornire i dati a YOLO. Usa l'helper qui sotto per suddividere l'immagine sorgente in ritagli sovrapposti di 1024 × 1024 a scale multiple, mantenendo sincronizzate le annotazioni.

Suddividi le 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 nel layout YOLO standard (images/train, labels/train, ecc.) in modo da poterla richiamare direttamente dal file YAML del dataset.

Utilizzo

Per addestrare un modello sul dataset DOTA v1, puoi utilizzare i seguenti snippet di codice. Fai sempre riferimento alla documentazione del tuo modello per un elenco completo degli argomenti disponibili. Per chi desidera sperimentare prima con un sottoinsieme più piccolo, prendi in considerazione l'utilizzo del dataset DOTA8, che contiene solo 8 immagini per test rapidi.

Avviso

Ti ricordiamo che tutte le immagini e le relative annotazioni nel dataset DOTAv1 possono essere utilizzate per scopi accademici, ma l'uso commerciale è vietato. La tua comprensione e il rispetto per i desideri dei creatori del dataset sono molto apprezzati!

Esempio di training
from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Dati ed annotazioni di esempio

Uno sguardo al dataset ne illustra la profondità:

Dataset DOTA con annotazioni oriented bounding box

  • Esempi DOTA: Questa istantanea sottolinea la complessità delle scene aeree e l'importanza delle annotazioni Oriented Bounding Box, che catturano gli oggetti nel loro orientamento naturale.

La ricchezza del dataset offre approfondimenti inestimabili sulle sfide di rilevamento oggetti esclusive delle immagini aeree. Il dataset DOTA-v2.0 è diventato particolarmente popolare per progetti di telerilevamento e sorveglianza aerea grazie alle sue annotazioni complete e alle diverse categorie di oggetti.

Citazioni e ringraziamenti

Se utilizzi DOTA nel tuo lavoro, ti preghiamo di citare 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

Un ringraziamento speciale al team dietro i dataset DOTA per il loro lodevole impegno nella cura di questo dataset. Per una comprensione esaustiva del dataset e delle sue sfumature, visita il sito ufficiale DOTA.

FAQ

Cos'è il dataset DOTA e perché è importante per il rilevamento di oggetti nelle immagini aeree?

Il dataset DOTA è un dataset specializzato incentrato sul rilevamento di oggetti nelle immagini aeree. Presenta Oriented Bounding Boxes (OBB), fornendo immagini annotate da diverse scene aeree. La diversità di DOTA nell'orientamento, nella scala e nella forma degli oggetti attraverso le sue 1,7 milioni di annotazioni e 18 categorie lo rende ideale per sviluppare e valutare modelli su misura per l'analisi di immagini aeree, come quelli utilizzati nella sorveglianza, nel monitoraggio ambientale e nella gestione dei disastri.

In che modo il dataset DOTA gestisce diverse scale e orientamenti nelle immagini?

DOTA utilizza Oriented Bounding Boxes (OBB) per l'annotazione, che sono rappresentati da rettangoli ruotati che racchiudono gli oggetti indipendentemente dal loro orientamento. Questo metodo garantisce che gli oggetti, sia piccoli che inclinati, vengano catturati accuratamente. Le immagini multiscala del dataset, che vanno da 800 × 800 a 20.000 × 20.000 pixel, consentono inoltre di rilevare efficacemente oggetti sia piccoli che grandi. Questo approccio è particolarmente prezioso per le immagini aeree, dove gli oggetti appaiono con angolazioni e scale variabili.

Come posso addestrare un modello utilizzando il dataset DOTA?

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

Esempio di training
from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Per ulteriori dettagli su come suddividere e pre-elaborare le immagini DOTA, consulta la sezione sulla suddivisione delle immagini DOTA.

Quali sono le differenze tra DOTA-v1.0, DOTA-v1.5 e DOTA-v2.0?

  • 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: Si basa su DOTA-v1.0 annotando istanze molto piccole (meno di 10 pixel) e aggiungendo una nuova categoria, "container crane", per un totale di 403.318 istanze.
  • DOTA-v2.0: Si espande ulteriormente con annotazioni da Google Earth e GF-2 Satellite, con 11.268 immagini e 1.793.658 istanze. Include nuove categorie come "airport" e "helipad".

Per un confronto dettagliato e specifiche aggiuntive, controlla la sezione sulle versioni del dataset.

Come posso preparare immagini DOTA ad alta risoluzione per l'addestramento?

Le immagini DOTA, che possono essere molto grandi, vengono suddivise in risoluzioni più piccole per un addestramento gestibile. Ecco uno snippet 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 facilita una migliore efficienza di addestramento e prestazioni del modello. Per istruzioni dettagliate, visita la sezione sulla suddivisione delle immagini DOTA.

Commenti