DOTA-Datensatz mit OBB#
Das DOTA Dataset ist ein groß angelegter Benchmark für die Objekterkennung in Luftbildern, veröffentlicht in drei Versionen (v1.0, v1.5, v2.0) mit bis zu 1,7 Millionen Oriented Bounding Box (OBB)-Anmerkungen über 18 Kategorien hinweg, aufgenommen von verschiedenen Luftbildsensoren und -plattformen.

Hauptfunktionen#
Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
- Sammlung von verschiedenen Sensoren und Plattformen mit Bildgrößen von 800 × 800 bis zu 20.000 × 20.000 Pixeln.
- Enthält mehr als 1,7 Millionen orientierte Begrenzungsrahmen über 18 Kategorien hinweg.
- Ermöglicht multiskalige Objekterkennung dank der großen Bandbreite an Objektgrößen pro Bild.
- Die Instanzen werden von Experten mithilfe von beliebigen (8 Freiheitsgrade) Vierecken annotiert, um Objekte unterschiedlicher Skalierungen, Ausrichtungen und Formen zu erfassen.
Datensatz-Versionen#
DOTA-v1.0#
- Enthält 15 gängige Kategorien.
- Umfasst 2.806 Bilder mit 188.282 Instanzen.
- Aufteilungsverhältnis: 1/2 für das Training (1.411 Bilder), 1/6 für die Validierung (458 Bilder) und 1/3 für das Testen (937 Bilder).
DOTA-v1.5#
- Enthält dieselben Bilder wie DOTA-v1.0.
- Sehr kleine Instanzen (weniger als 10 Pixel) sind ebenfalls annotiert.
- Hinzufügen einer neuen Kategorie: "container crane".
- Insgesamt 403.318 Instanzen.
- Veröffentlicht für die DOAI Challenge 2019 on Object Detection in Aerial Images.
DOTA-v2.0#
- Sammlungen aus Google Earth, GF-2 Satelliten und anderen Luftbildern.
- Enthält 18 gängige Kategorien.
- Umfasst 11.268 Bilder mit beeindruckenden 1.793.658 Instanzen.
- Neue Kategorien eingeführt: "airport" und "helipad".
- Bildaufteilungen:
- Training: 1.830 Bilder mit 268.627 Instanzen.
- Validierung: 593 Bilder mit 81.048 Instanzen.
- Test-dev: 2.792 Bilder mit 353.346 Instanzen.
- Test-challenge: 6.053 Bilder mit 1.090.637 Instanzen.
Datensatzstruktur#
DOTA weist eine strukturierte Anordnung auf, die auf OBB-Objekterkennungs-Herausforderungen zugeschnitten ist:
- Bilder: Eine riesige Sammlung hochauflösender Luftbilder, die verschiedene Gelände und Strukturen erfassen.
- Oriented Bounding Boxes: Annotationen in Form von gedrehten Rechtecken, die Objekte unabhängig von ihrer Ausrichtung umschließen, ideal für die Erfassung von Objekten wie Flugzeugen, Schiffen und Gebäuden.
Anwendungen#
DOTA dient als Benchmark für das Training und die Evaluierung von Modellen, die speziell auf die Analyse von Luftbildern zugeschnitten sind. Durch die Einbindung von OBB-Anmerkungen bietet es eine einzigartige Herausforderung und ermöglicht die Entwicklung spezieller Objekterkennung-Modelle, die den Besonderheiten von Luftbildern gerecht werden. Das Dataset ist besonders wertvoll für Anwendungen in der Fernerkundung, Überwachung und Umweltbeobachtung.
Datensatz-YAML#
Eine Dataset-YAML-Datei spezifiziert Bild-/Label-Roots, Klassennamen und andere wichtige Metadaten. Ultralytics pflegt offizielle YAML-Dateien für die zwei am häufigsten verwendeten Releases:
Verwende das YAML, das zu der von dir heruntergeladenen Version passt, oder erstelle ein benutzerdefiniertes YAML, wenn du mit DOTA-v2 oder einem anderen Derivat arbeitest. Beide Versionen werden beim ersten Training automatisch (2 GB) von den Ultralytics GitHub-Assets heruntergeladen.
# 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.zipDOTA-Bilder aufteilen#
Die Rohbilder sind routinemäßig über 10.000 Pixel breit, daher ist ein Tiling erforderlich, bevor die Daten in YOLO eingespeist werden. Verwende das untenstehende Hilfsprogramm, um das Quellmaterial in überlappende 1024 × 1024-Zuschnitte bei mehreren Skalierungen zu zerlegen, während die Annotationen synchron gehalten werden.
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,
)Halte das Ausgabeverzeichnis im Standard-YOLO-Layout (images/train, labels/train usw.) organisiert, damit du direkt aus dem Dataset-YAML darauf verweisen kannst.
Verwendung#
Um ein Modell auf dem DOTA v1 Dataset zu trainieren, kannst du die folgenden Code-Snippets verwenden. Schlage für eine vollständige Liste der verfügbaren Argumente immer in der Dokumentation deines Modells nach. Wenn du zunächst mit einer kleineren Teilmenge experimentieren möchtest, ziehe die Verwendung des DOTA8 dataset in Betracht, das nur 8 Bilder für schnelle Tests enthält und auf der Ultralytics Platform durchsuchbar ist.
Bitte beachte, dass alle Bilder und zugehörigen Annotationen im DOTAv1-Datensatz für akademische Zwecke verwendet werden dürfen, eine kommerzielle Nutzung jedoch untersagt ist. Wir wissen dein Verständnis und deinen Respekt für die Wünsche der Datensatzersteller sehr zu schätzen!
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)Beispieldaten und Annotationen#
Ein Blick auf den Datensatz verdeutlicht seine Tiefe:

- DOTA-Beispiele: Dieser Ausschnitt unterstreicht die Komplexität von Luftbildszenen und die Bedeutung von orientierten Bounding Box-Anmerkungen, die Objekte in ihrer natürlichen Ausrichtung erfassen.
Die Fülle des Datasets liefert unschätzbare Einblicke in Herausforderungen der Objekterkennung, die exklusiv für Luftbilder sind. Das DOTA-v2.0 dataset ist aufgrund seiner umfassenden Anmerkungen und vielfältigen Objektkategorien besonders beliebt für Projekte zur Fernerkundung und Luftüberwachung geworden.
Zitate und Danksagungen#
Wenn du DOTA für deine Arbeit verwendest, zitiere bitte die relevanten Forschungsarbeiten:
@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}
}Ein besonderer Dank geht an das Team hinter den DOTA-Datensätzen für ihre lobenswerte Arbeit bei der Kuratierung dieses Datensatzes. Für ein umfassendes Verständnis des Datensatzes und seiner Nuancen besuche bitte die official DOTA website.
FAQ#
Das DOTA dataset ist ein spezialisiertes Dataset, das sich auf die Objekterkennung in Luftbildern konzentriert. Es bietet Oriented Bounding Boxes (OBB) und enthält annotierte Bilder aus verschiedenen Luftbildszenen. Dotas Vielfalt bei der Objektausrichtung, im Maßstab und in der Form über seine 1,7 Millionen Anmerkungen und 18 Kategorien hinweg macht es ideal für die Entwicklung und Evaluierung von Modellen, die auf die Analyse von Luftbildern zugeschnitten sind, wie sie etwa in der Überwachung, der Umweltbeobachtung und dem Katastrophenschutz eingesetzt werden.
DOTA verwendet Oriented Bounding Boxes (OBB) zur Annotation, die durch gedrehte Rechtecke dargestellt werden, welche Objekte unabhängig von ihrer Ausrichtung umschließen. Diese Methode stellt sicher, dass Objekte, ob klein oder in verschiedenen Winkeln, genau erfasst werden. Die multiskaligen Bilder des Datensatzes, die von 800 × 800 bis zu 20.000 × 20.000 Pixeln reichen, erlauben zudem die effektive Erkennung sowohl kleiner als auch großer Objekte. Dieser Ansatz ist besonders wertvoll für Luftbilder, bei denen Objekte in verschiedenen Winkeln und Skalierungen erscheinen.
Um ein Modell auf dem DOTA Dataset zu trainieren, kannst du das folgende Beispiel mit Ultralytics YOLO verwenden:
Trainingsbeispielfrom 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)Weitere Details dazu, wie du die DOTA-Bilder aufteilst und vorverarbeitest, findest du im Abschnitt zum Aufteilen von DOTA-Bildern.
- DOTA-v1.0: Enthält 15 gängige Kategorien in 2.806 Bildern mit 188.282 Instanzen. Der Datensatz ist in Trainings-, Validierungs- und Testsets unterteilt.
- DOTA-v1.5: Baut auf DOTA-v1.0 auf, indem es sehr kleine Instanzen (weniger als 10 Pixel) annotiert und eine neue Kategorie, "container crane", hinzufügt, was insgesamt 403.318 Instanzen ergibt.
- DOTA-v2.0: Erweitert das Ganze mit Annotationen aus Google Earth und GF-2 Satelliten und bietet 11.268 Bilder mit 1.793.658 Instanzen. Es enthält neue Kategorien wie "airport" und "helipad".
Eine detaillierte Gegenüberstellung und weitere Besonderheiten findest du im Abschnitt zu Dataset-Versionen.
DOTA-Bilder, die sehr groß sein können, werden für ein handhabbares Training in kleinere Auflösungen aufgeteilt. Hier ist ein Python-Snippet zum Aufteilen der Bilder:
Beispielfrom 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, )Dieser Prozess fördert eine bessere Trainingseffizienz und Modellleistung. Detaillierte Anweisungen findest du im Abschnitt zum Aufteilen von DOTA-Bildern.