DOTA-Datensatz mit OBB
DOTA ist ein spezialisierter Datensatz, der den Schwerpunkt auf die Objekterkennung in Luftaufnahmen legt. Er stammt aus der DOTA-Serie von Datensätzen und bietet annotierte Bilder, die eine vielfältige Auswahl an Luftaufnahmen mit Oriented Bounding Boxes (OBB) erfassen.
Hauptmerkmale
Ansehen: Wie man Ultralytics YOLO11 auf dem DOTA-Datensatz für orientierte Bounding Boxes in Google Colab trainiert
- Erfassung von verschiedenen Sensoren und Plattformen, mit Bildgrößen von 800 × 800 bis 20.000 × 20.000 Pixel.
- Enthält mehr als 1,7 Millionen orientierte Begrenzungsrahmen in 18 Kategorien.
- Umfasst die Multiscale-Objekterkennung.
- Instanzen werden von Experten unter Verwendung beliebiger (8 d.o.f.) Vierecke annotiert, die Objekte unterschiedlicher Größe, Ausrichtung und Form erfassen.
Datensatzversionen
DOTA-v1.0
- Enthält 15 gängige Kategorien.
- Umfasst 2.806 Bilder mit 188.282 Instanzen.
- Aufteilungsverhältnisse: 1/2 für Training, 1/6 für Validierung und 1/3 für Tests.
DOTA-v1.5
- Beinhaltet die gleichen Bilder wie DOTA-v1.0.
- Sehr kleine Instanzen (weniger als 10 Pixel) werden ebenfalls annotiert.
- Hinzufügung einer neuen Kategorie: "Containerkran".
- Insgesamt 403.318 Instanzen.
- Veröffentlicht für die DOAI Challenge 2019 zur Objekterkennung in Luftbildern.
DOTA-v2.0
- Sammlungen von Google Earth, GF-2 Satellit und anderen Luftaufnahmen.
- Enthält 18 gängige Kategorien.
- Umfasst 11.268 Bilder mit beeindruckenden 1.793.658 Instanzen.
- Neue Kategorien eingeführt: „Flughafen“ und „Hubschrauberlandeplatz“.
- 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.
Dataset-Struktur
DOTA weist ein strukturiertes Layout auf, das auf OBB-Objekterkennungsherausforderungen zugeschnitten ist:
- Bilder: Eine riesige Sammlung von hochauflösenden Luftaufnahmen, die verschiedene Gelände und Strukturen erfassen.
- Orientierte Begrenzungsrahmen: 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 Einbeziehung von OBB-Annotationen bietet es eine einzigartige Herausforderung und ermöglicht die Entwicklung spezialisierter Objekterkennungs-Modelle, die auf die Besonderheiten von Luftbildern zugeschnitten sind. Der Datensatz ist besonders wertvoll für Anwendungen in der Fernerkundung, Überwachung und Umweltbeobachtung.
Datensatz-YAML
Typischerweise enthalten Datensätze eine YAML-Datei (Yet Another Markup Language), die die Konfiguration des Datensatzes detailliert beschreibt. Für DOTA v1 und DOTA v1.5 stellt Ultralytics DOTAv1.yaml
und DOTAv1.5.yaml
Dateien. Für weitere Informationen zu diesen sowie zu DOTA v2 konsultieren Sie bitte das offizielle Repository und die Dokumentation von 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
DOTA-Bilder aufteilen
Um den DOTA-Datensatz zu trainieren, teilen wir die ursprünglichen DOTA-Bilder mit hoher Auflösung auf multiskalige Weise in Bilder mit einer Auflösung von 1024x1024 auf. Dieser Vorverarbeitungsschritt ist entscheidend für ein effizientes Training, da die Originalbilder extrem groß sein können.
Bilder aufteilen
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,
)
Nutzung
Um ein Modell auf dem DOTA v1-Datensatz zu trainieren, können Sie die folgenden Code-Snippets verwenden. Beachten Sie immer die Dokumentation Ihres Modells für eine vollständige Liste der verfügbaren Argumente. Für diejenigen, die zuerst mit einer kleineren Teilmenge experimentieren möchten, sollten Sie den DOTA8-Datensatz verwenden, der nur 8 Bilder für schnelle Tests enthält.
Warnung
Bitte beachten Sie, dass alle Bilder und zugehörigen Anmerkungen im DOTAv1-Datensatz für akademische Zwecke verwendet werden dürfen, die kommerzielle Nutzung jedoch untersagt ist. Ihr Verständnis und die Achtung der Wünsche der Ersteller des Datensatzes werden sehr geschätzt!
Trainingsbeispiel
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
Beispieldaten und Anmerkungen
Ein Blick auf den Datensatz verdeutlicht seine Tiefe:
- DOTA-Beispiele: Dieser Schnappschuss unterstreicht die Komplexität von Luftaufnahmen und die Bedeutung von Oriented Bounding Box-Annotationen, die Objekte in ihrer natürlichen Ausrichtung erfassen.
Der Reichtum des Datensatzes bietet unschätzbare Einblicke in Herausforderungen der Objekterkennung, die es nur bei Luftaufnahmen gibt. Der DOTA-v2.0-Datensatz ist aufgrund seiner umfassenden Annotationen und vielfältigen Objektkategorien besonders beliebt für Fernerkundungs- und Luftüberwachungsprojekte geworden.
Zitate und Danksagungen
Für diejenigen, die DOTA in ihren Bemühungen einsetzen, ist es wichtig, die relevanten Forschungsarbeiten zu zitieren:
@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 besuchen Sie bitte die offizielle DOTA-Website.
FAQ
Was ist der DOTA-Datensatz und warum ist er wichtig für die Objekterkennung in Luftaufnahmen?
Der DOTA-Datensatz ist ein spezialisierter Datensatz, der sich auf die Objekterkennung in Luftaufnahmen konzentriert. Er enthält Oriented Bounding Boxes (OBB) und bietet annotierte Bilder aus verschiedenen Luftaufnahmen. Die Vielfalt von DOTA in Bezug auf Objektausrichtung, -maßstab und -form über seine 1,7 Millionen Annotationen und 18 Kategorien hinweg macht ihn ideal für die Entwicklung und Bewertung von Modellen, die auf die Analyse von Luftbildern zugeschnitten sind, wie sie beispielsweise in der Überwachung, der Umweltbeobachtung und dem Katastrophenmanagement eingesetzt werden.
Wie verarbeitet der DOTA-Datensatz unterschiedliche Maßstäbe und Ausrichtungen in Bildern?
DOTA verwendet Oriented Bounding Boxes (OBB) für die Annotation, die durch gedrehte Rechtecke dargestellt werden, welche Objekte unabhängig von ihrer Ausrichtung umschließen. Diese Methode stellt sicher, dass Objekte, egal ob klein oder in unterschiedlichen Winkeln, genau erfasst werden. Die Multiscale-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 mit dem DOTA-Datensatz trainieren?
Um ein Modell auf dem DOTA-Datensatz zu trainieren, können Sie das folgende Beispiel mit Ultralytics YOLO verwenden:
Trainingsbeispiel
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
Weitere Informationen zum Aufteilen und Vorverarbeiten der DOTA-Bilder finden Sie im Abschnitt DOTA-Bilder aufteilen.
Was sind die Unterschiede zwischen DOTA-v1.0, DOTA-v1.5 und DOTA-v2.0?
- DOTA-v1.0: Enthält 15 gängige Kategorien in 2.806 Bildern mit 188.282 Instanzen. Der Datensatz ist in Trainings-, Validierungs- und Testdatensätze unterteilt.
- 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, was insgesamt 403.318 Instanzen ergibt.
- DOTA-v2.0: Erweitert sich weiter mit Annotationen von Google Earth und GF-2 Satellite und umfasst 11.268 Bilder und 1.793.658 Instanzen. Es enthält neue Kategorien wie "Flughafen" und "Hubschrauberlandeplatz".
Einen detaillierten Vergleich und zusätzliche Details finden Sie im Abschnitt Datensatzversionen.
Wie kann ich hochauflösende DOTA-Bilder für das Training vorbereiten?
DOTA-Bilder, die sehr groß sein können, werden für ein überschaubares Training in kleinere Auflösungen aufgeteilt. Hier ist ein Python-Codeausschnitt zum Aufteilen von Bildern:
Beispiel
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 ermöglicht eine bessere Trainingseffizienz und Modellleistung. Detaillierte Anweisungen finden Sie im Abschnitt zum Aufteilen von DOTA-Bildern.