Ultralytics YOLO27:

DOTA-Datensatz mit OBB#

Der DOTA-Datensatz ist ein groß angelegter Benchmark für die Objekterkennung in Luftbildern. Er wurde in drei Versionen veröffentlicht (v1.0, v1.5, v2.0) und umfasst bis zu 1,7 Millionen Annotationen mit orientierten Begrenzungsrahmen (OBB) in 18 Kategorien. Die Aufnahmen stammen von verschiedenen Luftbildsensoren und Plattformen.

Entdecke die offiziell gehosteten Datensätze DOTA v1.5 und DOTA v1.0 auf der Ultralytics Platform. Dort kannst du dir die Annotationen mit orientierten Begrenzungsrahmen ansehen, Statistiken prüfen und die Datensätze zum Trainieren klonen.

DOTA-Datensatz: Objektklassen für die Erkennung in Luftbildern

Wichtige Funktionen#



Ansehen: So trainierst du Ultralytics YOLO mit dem DOTA-Datensatz für gedrehte Begrenzungsrahmen in Google Colab
  • Die Sammlung stammt von verschiedenen Sensoren und Plattformen. Die Bildgrößen reichen von 800 × 800 bis 20.000 × 20.000 Pixel.
  • Umfasst mehr als 1,7 Millionen orientierte Begrenzungsrahmen in 18 Kategorien.
  • Ermöglicht die Objekterkennung auf verschiedenen Maßstabsebenen, da die Objektgrößen innerhalb der Bilder stark variieren.
  • Experten annotieren die Instanzen mit frei geformten Vierecken (8 Freiheitsgrade), um Objekte unterschiedlicher Größe, Ausrichtung und Form zu erfassen.

Datensatzversionen#

DOTA-v1.0#

  • Enthält 15 gängige Kategorien.
  • Umfasst 2.806 Bilder mit 188.282 Instanzen.
  • Aufteilung: 1/2 zum Trainieren (1.411 Bilder), 1/6 zur Validierung (458 Bilder) und 1/3 zum Testen (937 Bilder).

DOTA-v1.5#

DOTA-v2.0#

  • Zusammengestellt aus Bildern von Google Earth, dem GF-2-Satelliten und weiteren Luftbildquellen.
  • 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 Objektinstanzen.
    • Validierung: 593 Bilder mit 81.048 Objektinstanzen.
    • Test-dev: 2.792 Bilder mit 353.346 Objektinstanzen.
    • Test-challenge: 6.053 Bilder mit 1.090.637 Objektinstanzen.

Datensatzstruktur#

DOTA weist eine strukturierte Aufteilung auf, die auf Herausforderungen bei der OBB-Objekterkennung zugeschnitten ist:

  • Bilder: Eine umfangreiche Sammlung hochauflösender Luftbilder, die vielfältige Landschaften und Strukturen zeigen.
  • Rotierte Begrenzungsrahmen: Annotationen in Form gedrehter Rechtecke, die Objekte unabhängig von ihrer Ausrichtung umschließen – ideal für die Erfassung von Objekten wie Flugzeugen, Schiffen und Gebäuden.

Anwendungsfälle#

DOTA dient als Benchmark für das Training und die Bewertung von Modellen, die speziell auf die Analyse von Luftbildern zugeschnitten sind. Durch die OBB-Annotationen stellt der Datensatz eine besondere Herausforderung dar und ermöglicht die Entwicklung spezialisierter Modelle zur Objekterkennung, die auf die Besonderheiten von Luftbildern zugeschnitten sind. Der Datensatz ist besonders wertvoll für Anwendungen in der Fernerkundung, Überwachung und Umweltbeobachtung.

YAML-Datei des Datensatzes#

Eine YAML-Datei für einen Datensatz gibt Bild- und Label-Stammverzeichnisse, Klassennamen und weitere wichtige Metadaten an. Ultralytics pflegt offizielle YAML-Dateien für die beiden am häufigsten verwendeten Versionen:

Verwende die YAML-Datei, die zur heruntergeladenen Version passt, oder erstelle eine eigene YAML-Datei, wenn du mit DOTA-v2 oder einer anderen abgeleiteten Version arbeitest. Beide Versionen werden beim ersten Training automatisch (2 GB) von den Ultralytics-GitHub-Dateien heruntergeladen.

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
#     └── 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.zip

DOTA-Bilder aufteilen#

Die Rohbilder sind häufig mehr als 10.000 Pixel pro Seite groß. Daher empfiehlt es sich, sie vor der Verwendung mit YOLO in Kacheln aufzuteilen. Mit der folgenden Hilfsfunktion kannst du die Ausgangsbilder in überlappende Ausschnitte von 1024 × 1024 Pixeln mit mehreren Maßstäben aufteilen und dabei die Annotationen synchron halten.

Bilder aufteilen
from ultralytics.data.split_dota import split_test, split_trainval

# # Trainings- und Validierungsdatensatz mit Labels aufteilen.
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,
)
# # Testdatensatz ohne Labels aufteilen.
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,
)
Tipp

Sorge dafür, dass das Ausgabeverzeichnis der üblichen YOLO-Verzeichnisstruktur folgt (images/train, labels/train usw.), damit du direkt in 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 eine vollständige Liste der verfügbaren Argumente. Wenn du zuerst mit einer kleineren Teilmenge experimentieren möchtest, probiere den DOTA8-Datensatz mit nur 8 Bildern aus. Du kannst ihn auf der Ultralytics Platform durchsuchen.

Warnung

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 es sehr zu schätzen, dass du die Wünsche der Datensatz-Ersteller verstehst und respektierst!

Trainingsbeispiel
from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-OBB-Modell laden
model = YOLO("yolo26n-obb.pt")

# Das Modell mit dem DOTAv1-Datensatz trainieren
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Beispieldaten und Annotationen#

Ein Blick auf den Datensatz zeigt seine Vielfalt:

DOTA-Datensatz mit Annotationen für rotierte Begrenzungsrahmen

  • DOTA-Beispiele: Diese Momentaufnahme verdeutlicht die Komplexität von Luftbildszenen und die Bedeutung von Annotationen für rotierte Begrenzungsrahmen, die Objekte in ihrer natürlichen Ausrichtung erfassen.

Der umfangreiche Datensatz bietet wertvolle Einblicke in die besonderen Herausforderungen der Objekterkennung in Luftbildern. Der DOTA-v2.0-Datensatz ist aufgrund seiner umfassenden Annotationen und vielfältigen Objektklassen besonders für Projekte zur Fernerkundung und Luftüberwachung beliebt.

Zitate und Danksagungen#

Wenn du DOTA in deiner Arbeit verwendest, zitiere bitte die entsprechenden Forschungsarbeiten:

Zitat
@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 die bemerkenswerte Arbeit bei der Zusammenstellung dieses Datensatzes. Eine umfassende Erläuterung des Datensatzes und seiner Besonderheiten findest du auf der offiziellen DOTA-Website.

Häufig gestellte Fragen#

  • Der DOTA-Datensatz ist ein spezialisierter Datensatz für die Objekterkennung in Luftbildern. Er umfasst annotierte Bilder aus vielfältigen Luftbildszenen mit rotierenden Begrenzungsrahmen (OBB). Die Vielfalt der Objektausrichtungen, Maßstäbe und Formen in den 1,7 Mio. Annotationen und 18 Kategorien von DOTA macht den Datensatz ideal für die Entwicklung und Bewertung von Modellen zur Analyse von Luftbildern, etwa für Überwachung, Umweltbeobachtung und Katastrophenschutz.

  • DOTA verwendet für die Annotation rotierte Begrenzungsrahmen (OBB), die als gedrehte Rechtecke dargestellt werden, welche Objekte unabhängig von ihrer Ausrichtung umschließen. So werden Objekte – ob klein oder in verschiedenen Winkeln – präzise erfasst. Die Bilder des Datensatzes in verschiedenen Maßstäben, von 800 × 800 bis 20.000 × 20.000 Pixeln, ermöglichen zudem die zuverlässige Erkennung sowohl kleiner als auch großer Objekte. Dieser Ansatz ist besonders wertvoll für Luftbilder, in denen Objekte in unterschiedlichen Winkeln und Maßstäben erscheinen.

  • Um ein Modell mit dem DOTA-Datensatz zu trainieren, kannst du das folgende Beispiel mit Ultralytics YOLO verwenden:

    Trainingsbeispiel
    from ultralytics import YOLO
    
    # Ein vortrainiertes YOLO26n-OBB-Modell laden
    model = YOLO("yolo26n-obb.pt")
    
    # Das Modell mit dem DOTAv1-Datensatz trainieren
    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 von DOTA-Bildern.

    • DOTA-v1.0: Umfasst 15 gängige Kategorien in 2.806 Bildern mit 188.282 Objektinstanzen. Der Datensatz ist in Trainings-, Validierungs- und Testdaten aufgeteilt.
    • DOTA-v1.5: Baut auf DOTA-v1.0 auf, indem sehr kleine Objektinstanzen (unter 10 Pixel) annotiert und eine neue Kategorie „Containerkran“ hinzugefügt werden. Insgesamt umfasst die Version 403.318 Objektinstanzen.
    • DOTA-v2.0: Erweitert den Datensatz um Annotationen von Google Earth und GF-2 Satellite und umfasst 11.268 Bilder sowie 1.793.658 Objektinstanzen. Zu den neuen Kategorien gehören „Flughafen“ und „Hubschrauberlandeplatz“.

    Einen detaillierten Vergleich und weitere Informationen findest du im Abschnitt zu den Datensatzversionen.

  • DOTA-Bilder können sehr groß sein und werden daher für ein handhabbares Training in kleinere Ausschnitte aufgeteilt. Hier ist ein Python-Codebeispiel zum Aufteilen der Bilder:

    Beispiel
    from ultralytics.data.split_dota import split_test, split_trainval
    
    # # Trainings- und Validierungsdatensatz mit Labels aufteilen.
    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,
    )
    # # Testdatensatz ohne Labels aufteilen.
    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,
    )

    Dieses Verfahren verbessert die Trainingseffizienz und die Modellleistung. Eine ausführliche Anleitung findest du im Abschnitt zum Aufteilen von DOTA-Bildern.

Kommentare