Vai al contenuto

Dataset DOTA con OBB

DOTA si distingue come un dataset specializzato, che enfatizza l'object detection in immagini aeree. Proveniente dalla serie di dataset DOTA, offre immagini annotate che catturano una vasta gamma di scene aeree con Bounding Box orientati (OBB).

Visualizzazione delle classi DOTA

Caratteristiche principali



Guarda: Come addestrare Ultralytics YOLO11 sul dataset DOTA per bounding box orientati in Google Colab

  • Raccolta da vari sensori e piattaforme, con dimensioni delle immagini che variano da 800 × 800 a 20.000 × 20.000 pixel.
  • Include più di 1,7 milioni di Oriented Bounding Boxes in 18 categorie.
  • Comprende il rilevamento di oggetti multiscala.
  • Le istanze sono annotate da esperti utilizzando quadrilateri arbitrari (8 g.d.l.), catturando 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 convalida e 1/3 per il test.

DOTA-v1.5

DOTA-v2.0

  • Raccolte da Google Earth, satellite GF-2 e altre immagini aeree.
  • Contiene 18 categorie comuni.
  • Comprende 11.268 immagini con ben 1.793.658 istanze.
  • Nuove categorie introdotte: "airport" (aeroporto) e "helipad" (eliporto).
  • Suddivisioni 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 set di dati

DOTA presenta un layout strutturato su misura per le sfide di rilevamento di oggetti OBB:

  • Immagini: Una vasta raccolta di immagini aeree ad alta risoluzione che catturano diversi terreni e strutture.
  • Oriented Bounding Boxes: Annotazioni sotto forma di rettangoli ruotati che incapsulano gli oggetti indipendentemente dal loro orientamento, ideali per catturare oggetti come aeroplani, navi ed edifici.

Applicazioni

DOTA funge da benchmark per l'addestramento e la valutazione di modelli specificamente progettati per l'analisi di immagini aeree. Con l'inclusione di annotazioni OBB, offre una sfida unica, consentendo lo sviluppo di modelli specializzati di object detection che si adattano alle sfumature dell'immaginario aereo. Il dataset è particolarmente prezioso per applicazioni nel telerilevamento, nella sorveglianza e nel monitoraggio ambientale.

YAML del set di dati

In genere, i dataset includono un file YAML (Yet Another Markup Language) che specifica la configurazione del dataset. Per DOTA v1 e DOTA v1.5, Ultralytics fornisce DOTAv1.yaml e DOTAv1.5.yaml file. Per ulteriori dettagli su questi e su DOTA v2, consultare il repository e la documentazione ufficiali di DOTA.

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 (2GB)

# 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

Dividi le immagini DOTA

Per addestrare il dataset DOTA, dividiamo le immagini DOTA originali ad alta risoluzione in immagini con risoluzione 1024x1024 in modo multiscala. Questo passaggio di preelaborazione è fondamentale per un addestramento efficiente, poiché le immagini originali possono essere estremamente grandi.

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

Utilizzo

Per addestrare un modello sul set di dati DOTA v1, puoi utilizzare i seguenti frammenti di codice. Fai sempre riferimento alla documentazione del tuo modello per un elenco completo degli argomenti disponibili. Per coloro che desiderano sperimentare prima con un sottoinsieme più piccolo, considera l'utilizzo del set di dati DOTA8, che contiene solo 8 immagini per test rapidi.

Attenzione

Si prega di notare che tutte le immagini e le annotazioni associate nel dataset DOTAv1 possono essere utilizzate per scopi accademici, ma l'uso commerciale è proibito. La vostra comprensione e il rispetto per i desideri dei creatori del dataset sono molto apprezzati!

Esempio di addestramento

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Dati di esempio e annotazioni

Uno sguardo al dataset ne illustra la profondità:

Immagine di esempio del set di dati

  • Esempi DOTA: Questa istantanea sottolinea la complessità delle scene aeree e il significato delle annotazioni di Bounding Box orientati, catturando gli oggetti nel loro orientamento naturale.

La ricchezza del dataset offre spunti preziosi sulle sfide di object detection esclusive 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 alle diverse categorie di oggetti.

Citazioni e ringraziamenti

Per coloro che sfruttano DOTA nei loro sforzi, è pertinente citare i relativi documenti di ricerca:

@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, visitare il sito web ufficiale di DOTA.

FAQ

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

Il dataset DOTA è un dataset specializzato incentrato sull'object detection in immagini aeree. È dotato di Bounding Box orientati (OBB), che forniscono immagini annotate da diverse scene aeree. La diversità di DOTA nell'orientamento, nella scala e nella forma degli oggetti nelle 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 scale e orientamenti diversi nelle immagini?

DOTA utilizza Oriented Bounding Boxes (OBB) per l'annotazione, che sono rappresentati da rettangoli ruotati che incapsulano gli oggetti indipendentemente dal loro orientamento. Questo metodo assicura che gli oggetti, siano essi piccoli o ad angolazioni diverse, vengano catturati accuratamente. Le immagini multiscala del dataset, che vanno da 800 × 800 a 20.000 × 20.000 pixel, consentono inoltre di rilevare efficacemente sia oggetti piccoli che grandi. Questo approccio è particolarmente prezioso per l'immaginario aereo dove gli oggetti appaiono a varie angolazioni e scale.

Come posso addestrare un modello utilizzando il dataset DOTA?

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

Esempio di addestramento

from ultralytics import YOLO

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

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Per maggiori dettagli su come dividere ed elaborare le immagini DOTA, fare riferimento alla sezione dividi le 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 training, convalida 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 dettagli aggiuntivi, consulta la sezione 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 training gestibile. Ecco un frammento Python per dividere 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 training e prestazioni del modello. Per istruzioni dettagliate, visitare la sezione dividi le immagini DOTA.



📅 Creato 1 anno fa ✏️ Aggiornato 3 mesi fa

Commenti