DOTA Dataset mit OBB
DOTA ist ein spezialisierter Datensatz, der sich auf die Objekterkennung in Luftbildern konzentriert. Er stammt aus der DOTA-Datensatzserie und bietet annotierte Bilder, die eine Vielzahl von Luftaufnahmen mit Oriented Bounding Boxes (OBB) erfassen.

Hauptmerkmale
Watch: How to Train Ultralytics YOLO26 on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
- Sammlung von verschiedenen Sensoren und Plattformen, wobei die Bildgrößen von 800 × 800 bis 20.000 × 20.000 Pixel reichen.
- Enthält mehr als 1,7 Millionen orientierte Bounding Boxes in 18 Kategorien.
- Umfasst die Objekterkennung in mehreren Maßstäben dank der großen Streuung der Objektgrößen pro Bild.
- Die Instanzen werden von Experten mithilfe von willkürlichen (8 d.o.f.) Vierecken annotiert, die Objekte unterschiedlicher Größe, Ausrichtung und Form 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/6 für die Validierung und 1/3 für den Test.
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 von Google Earth, dem 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 bietet eine strukturierte Anordnung für OBB-Objekterkennungs-Herausforderungen:
- Images: Eine riesige Sammlung hochauflösender Luftbilder, die verschiedene Geländetypen 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 Luftbildanalyse zugeschnitten sind. Mit der Einbindung von OBB-Annotationen bietet er eine einzigartige Herausforderung und ermöglicht die Entwicklung spezialisierter Objekterkennungs-Modelle, die auf die Nuancen von Luftbildern abgestimmt sind. Der Datensatz ist besonders wertvoll für Anwendungen in der Fernerkundung, Überwachung und Umweltbeobachtung.
Datensatz-YAML
Eine YAML-Datei (Yet Another Markup Language) spezifiziert Bild-/Label-Roots, Klassennamen und andere wichtige Metadaten. Ultralytics pflegt offizielle YAML-Dateien für die beiden am häufigsten verwendeten Releases:
Verwende das YAML, das zum heruntergeladenen Release passt, oder erstelle ein benutzerdefiniertes YAML, wenn du mit DOTA-v2 oder einem anderen Derivat arbeitest.
# 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.zipDOTA-Bilder aufteilen
Die Rohbilder überschreiten routinemäßig 10.000 Pixel pro Seite, daher ist Tiling erforderlich, bevor die Daten an YOLO übergeben werden. Nutze das unten stehende Hilfsprogramm, um das Quellbild in überlappende 1024 × 1024 Ausschnitte bei mehreren Maßstäben zu unterteilen 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-Layout (images/train, labels/train usw.) organisiert, damit du direkt aus dem Datensatz-YAML darauf verweisen kannst.
Verwendung
Um ein Modell auf dem DOTA v1 Datensatz zu trainieren, kannst du die folgenden Code-Schnipsel verwenden. Schaue immer in die Dokumentation deines Modells für eine vollständige Liste der verfügbaren Argumente. Wenn du zuerst mit einer kleineren Teilmenge experimentieren möchtest, ziehe die Verwendung des DOTA8-Datensatzes in Betracht, der nur 8 Bilder für schnelle Tests enthält.
Bitte beachte, dass alle Bilder und zugehörigen Annotationen im DOTAv1-Datensatz für akademische Zwecke verwendet werden können, eine kommerzielle Nutzung jedoch untersagt ist. Dein Verständnis und deine Rücksichtnahme auf die Wünsche der Datensatzersteller werden sehr geschätzt!
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 veranschaulicht seine Tiefe:

- DOTA-Beispiele: Dieser Snapshot unterstreicht die Komplexität von Luftbildszenen und die Bedeutung von orientierten Bounding-Box-Annotationen, die Objekte in ihrer natürlichen Ausrichtung erfassen.
Der Reichtum des Datensatzes bietet unschätzbare Einblicke in Herausforderungen der Objekterkennung, die exklusiv für Luftbilder gelten. Der DOTA-v2.0-Datensatz ist aufgrund seiner umfassenden Annotationen und vielfältigen Objektkategorien besonders beliebt für Projekte in der Fernerkundung und Luftüberwachung geworden.
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={2021},
volume={},
number={},
pages={1-1},
doi={10.1109/TPAMI.2021.3117983}
}Ein besonderer Dank gilt dem 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 offizielle DOTA-Website.
FAQ
Was ist der DOTA-Datensatz und warum ist er für die Objekterkennung in Luftbildern wichtig?
Der DOTA-Datensatz ist ein spezialisierter Datensatz, der sich auf die Objekterkennung in Luftbildern konzentriert. Er bietet Oriented Bounding Boxes (OBB) und stellt annotierte Bilder aus verschiedenen Luftbildszenen zur Verfügung. Die Vielfalt von DOTA in Bezug auf Objektausrichtung, Skalierung und Form über seine 1,7 Millionen Annotationen und 18 Kategorien hinweg macht ihn ideal für die Entwicklung und Evaluierung von Modellen, die auf die Luftbildanalyse zugeschnitten sind, wie sie z. B. in der Überwachung, Umweltbeobachtung und im Katastrophenmanagement eingesetzt werden.
Wie geht der DOTA-Datensatz mit verschiedenen Maßstäben und Ausrichtungen in Bildern um?
DOTA verwendet Oriented Bounding Boxes (OBB) zur Annotation, die durch gedrehte Rechtecke dargestellt werden, die Objekte unabhängig von ihrer Ausrichtung umschließen. Diese Methode stellt sicher, dass Objekte, ob klein oder in verschiedenen Winkeln, präzise erfasst werden. Die multiskaligen Bilder des Datensatzes, die von 800 × 800 bis 20.000 × 20.000 Pixel reichen, ermöglichen zudem die effektive Erkennung von kleinen und großen Objekten. Dieser Ansatz ist besonders wertvoll für Luftbilder, bei denen Objekte in verschiedenen Winkeln und Maßstäben erscheinen.
Wie kann ich ein Modell unter Verwendung des DOTA-Datensatzes trainieren?
Um ein Modell auf dem DOTA-Datensatz zu trainieren, kannst du das folgende Beispiel mit Ultralytics YOLO verwenden:
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)Weitere Details dazu, wie man die DOTA-Bilder aufteilt und vorverarbeitet, findest du im Abschnitt DOTA-Bilder aufteilen.
Was sind die Unterschiede zwischen DOTA-v1.0, DOTA-v1.5 und DOTA-v2.0?
- DOTA-v1.0: Beinhaltet 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 sehr kleine Instanzen (unter 10 Pixel) annotiert und eine neue Kategorie, "container crane", hinzugefügt wurden, insgesamt 403.318 Instanzen.
- DOTA-v2.0: Erweitert dies weiter mit Annotationen von Google Earth und dem GF-2 Satelliten und bietet 11.268 Bilder mit 1.793.658 Instanzen. Es enthält neue Kategorien wie "airport" und "helipad".
Für einen detaillierten Vergleich und weitere Spezifikationen siehe den Abschnitt Datensatz-Versionen.
Wie kann ich hochauflösende DOTA-Bilder für das Training vorbereiten?
DOTA-Bilder, die sehr groß sein können, werden zur einfacheren Handhabung während des Trainings in kleinere Auflösungen unterteilt. Hier ist ein Python-Schnipsel, um Bilder aufzuteilen:
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,
)Dieser Prozess erleichtert die Trainingseffizienz und die Modellleistung. Für detaillierte Anweisungen besuche den Abschnitt DOTA-Bilder aufteilen.