DOTA-Datensatz mit OBB#
Der DOTA-Datensatz ist ein groß angelegter Benchmark für die Objekterkennung in Luftbildern. Er wurde in drei Versionen (v1.0, v1.5, v2.0) veröffentlicht und umfasst bis zu 1,7 Mio. Annotationen für orientierte Begrenzungsrahmen (OBB) in 18 Kategorien, die mit verschiedenen Luftbildsensoren und Plattformen aufgenommen wurden.
Erkunde die offiziell gehosteten Datensätze DOTA v1.5 und DOTA v1.0 auf der Ultralytics Platform, um ihre orientierten Annotationen in der Vorschau anzuzeigen, Statistiken zu prüfen und sie für das Training zu klonen.

Wichtige Funktionen#
Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
- Zusammenstellung aus verschiedenen Sensoren und Plattformen mit Bildgrößen von 800 × 800 bis 20.000 × 20.000 Pixeln.
- Umfasst mehr als 1,7 Mio. orientierte Begrenzungsrahmen in 18 Kategorien.
- Ermöglicht die Objekterkennung in verschiedenen Maßstäben, da die Objektgrößen pro Bild stark variieren.
- Die Instanzen werden von Experten mithilfe beliebiger Vierecke mit 8 Freiheitsgraden annotiert, wodurch Objekte verschiedener Größen, Ausrichtungen und Formen erfasst werden.
Datensatzversionen#
DOTA-v1.0#
- Enthält 15 gängige Kategorien.
- Umfasst 2.806 Bilder mit 188.282 Instanzen.
- Aufteilung: 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) werden ebenfalls annotiert.
- Neue Kategorie: „Containerkran“.
- Insgesamt 403.318 Instanzen.
- Veröffentlicht für die DOAI Challenge 2019 zur Objekterkennung in Luftbildern.
DOTA-v2.0#
- Zusammenstellungen aus Google Earth, dem GF-2-Satelliten und weiteren Luftbildern.
- Enthält 18 gängige Kategorien.
- Umfasst 11.268 Bilder mit insgesamt 1.793.658 Instanzen.
- Neue Kategorien: „Flughafen“ und „Hubschrauberlandeplatz“.
- Bildaufteilung:
- Training: 1.830 Bilder mit 268.627 Instanzen.
- Validierung: 593 Bilder mit 81.048 Instanzen.
- Test-Entwicklung: 2.792 Bilder mit 353.346 Instanzen.
- Test-Herausforderung: 6.053 Bilder mit 1.090.637 Instanzen.
Datensatzstruktur#
DOTA weist eine strukturierte Anordnung auf, die speziell auf Herausforderungen bei der Objekterkennung mit OBB zugeschnitten ist:
- Bilder: Eine umfangreiche Sammlung hochauflösender Luftbilder, die vielfältige Geländeformen und Strukturen erfasst.
- Orientierte Begrenzungsrahmen: Annotationen in Form gedrehter Rechtecke, die Objekte unabhängig von ihrer Ausrichtung umschließen. Das eignet sich ideal zur Erfassung von Objekten wie Flugzeugen, Schiffen und Gebäuden.
Anwendungen#
DOTA dient als Benchmark für das Training und die Bewertung von Modellen, die speziell für die Analyse von Luftbildern entwickelt wurden. Durch die Einbindung von OBB-Annotationen stellt der Datensatz eine besondere Herausforderung dar und ermöglicht die Entwicklung spezialisierter Objekterkennungsmodelle, die den Besonderheiten von Luftbildern gerecht werden. Der Datensatz ist besonders wertvoll für Anwendungen in der Fernerkundung, Überwachung und Umweltbeobachtung.
Dataset-YAML#
Eine YAML-Datei für einen Datensatz legt die Verzeichnisse für Bilder und Labels, Klassennamen sowie weitere wichtige Metadaten fest. Ultralytics pflegt offizielle YAML-Dateien für die beiden am häufigsten verwendeten Veröffentlichungen:
Verwende die YAML-Datei, die zur heruntergeladenen Veröffentlichung passt, oder erstelle eine eigene YAML-Datei, wenn du mit DOTA-v2 oder einer anderen Ableitung arbeitest. Beide Veröffentlichungen werden beim ersten Training automatisch (2 GB) aus 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 an einer Seite regelmäßig größer als 10.000 Pixel. Deshalb müssen sie vor der Übergabe an YOLO in Kacheln aufgeteilt werden. Verwende die folgende Hilfsfunktion, um die Ausgangsbilder bei mehreren Maßstäben in überlappende Ausschnitte von 1024 × 1024 zu zerlegen und dabei die Annotationen synchron zu halten.
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 standardmäßigen YOLO-Aufbau (images/train, labels/train usw.), damit du direkt aus der YAML-Datei des Datensatzes darauf verweisen kannst.
Verwendung#
Um ein Modell mit dem DOTA-v1-Datensatz zu trainieren, kannst du die folgenden Codebeispiele verwenden. In der Dokumentation deines Modells findest du stets eine vollständige Liste der verfügbaren Argumente. Wenn du zunächst mit einer kleineren Teilmenge experimentieren möchtest, kannst du den DOTA8-Datensatz verwenden. Er enthält nur 8 Bilder für schnelle Tests und kann auf der Ultralytics Platform durchsucht werden.
Beachte, dass alle Bilder und zugehörigen Annotationen im DOTAv1-Datensatz für akademische Zwecke verwendet werden dürfen, die kommerzielle Nutzung jedoch untersagt ist. Wir wissen dein Verständnis und deinen Respekt für die Wünsche der Ersteller des Datensatzes sehr zu schätzen!
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)Beispieldaten und Annotationen#
Ein Blick auf den Datensatz veranschaulicht seine Tiefe:

- DOTA-Beispiele: Diese Momentaufnahme verdeutlicht die Komplexität von Luftbildszenen und die Bedeutung von Annotationen für orientierte Begrenzungsrahmen, die Objekte in ihrer natürlichen Ausrichtung erfassen.
Der umfangreiche Datensatz bietet wertvolle Einblicke in Herausforderungen der Objekterkennung, die speziell bei Luftbildern auftreten. Der DOTA-v2.0-Datensatz ist aufgrund seiner umfassenden Annotationen und vielfältigen Objektkategorien besonders beliebt für Projekte zur Fernerkundung und Luftbildüberwachung.
Zitate und Danksagungen#
Wenn du DOTA in deiner 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}
}Unser besonderer Dank gilt dem Team hinter den DOTA-Datensätzen für seine bemerkenswerte Arbeit bei der Zusammenstellung dieses Datensatzes. Eine ausführliche Beschreibung des Datensatzes und seiner Besonderheiten findest du auf der offiziellen DOTA-Website.
FAQ#
Der DOTA-Datensatz ist ein spezialisierter Datensatz für die Objekterkennung in Luftbildern. Er enthält orientierte Begrenzungsrahmen (OBB) und annotierte Bilder aus vielfältigen Luftbildszenen. Die Vielfalt der Objektausrichtungen, -größen und -formen in seinen 1,7 Mio. Annotationen und 18 Kategorien macht DOTA ideal für die Entwicklung und Bewertung von Modellen zur Analyse von Luftbildern, beispielsweise für Überwachung, Umweltbeobachtung und Katastrophenmanagement.
DOTA verwendet zur Annotation orientierte Begrenzungsrahmen (OBB), die durch gedrehte Rechtecke dargestellt werden und Objekte unabhängig von ihrer Ausrichtung umschließen. Dadurch werden Objekte, ob klein oder unterschiedlich angewinkelt, präzise erfasst. Die Bilder des Datensatzes liegen in verschiedenen Maßstäben vor und reichen von 800 × 800 bis 20.000 × 20.000 Pixeln, sodass sowohl kleine als auch große Objekte effektiv erkannt werden können. Dieser Ansatz ist besonders wertvoll für Luftbilder, in denen Objekte in verschiedenen Winkeln und Größen erscheinen.
Um ein Modell mit dem DOTA-Datensatz zu trainieren, kannst du das folgende Beispiel mit Ultralytics YOLO verwenden:
Trainingsbeispielfrom 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)Weitere Informationen zum Aufteilen und Vorverarbeiten der DOTA-Bilder findest du im Abschnitt zum Aufteilen der DOTA-Bilder.
- DOTA-v1.0: Enthält 15 gängige Kategorien in 2.806 Bildern mit 188.282 Instanzen. Der Datensatz ist in Trainings-, Validierungs- und Testdaten aufgeteilt.
- DOTA-v1.5: Baut auf DOTA-v1.0 auf, indem sehr kleine Instanzen (weniger als 10 Pixel) annotiert und eine neue Kategorie, „Containerkran“, hinzugefügt werden. Insgesamt umfasst die Version 403.318 Instanzen.
- DOTA-v2.0: Wird durch Annotationen aus Google Earth und vom GF-2-Satelliten erweitert und umfasst 11.268 Bilder mit 1.793.658 Instanzen. Die Version enthält neue Kategorien wie „Flughafen“ und „Hubschrauberlandeplatz“.
Eine ausführliche Gegenüberstellung und weitere Einzelheiten findest du im Abschnitt zu den Datensatzversionen.
Die teilweise sehr großen DOTA-Bilder werden für ein praktikables Training in kleinere Auflösungen aufgeteilt. Hier ist ein Python-Codeausschnitt 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 verbessert die Trainingseffizienz und die Modellleistung. Eine ausführliche Anleitung findest du im Abschnitt zum Aufteilen der DOTA-Bilder.



