Zum Inhalt springen

DOTA-Datensatz mit OBB

DOTA ist ein spezieller Datensatz, der sich auf die Objekterkennung in Luftbildern konzentriert. Der aus der DOTA-Reihe stammende Datensatz bietet kommentierte Bilder, die eine Vielzahl von Luftbildern mit Oriented Bounding Boxes (OBB) erfassen.

DOTA-Klassen visuell

Wesentliche Merkmale

  • Sammlung von verschiedenen Sensoren und Plattformen, mit Bildgrößen von 800 × 800 bis 20.000 × 20.000 Pixel.
  • Mit mehr als 1,7 Millionen orientierten Bounding Boxes in 18 Kategorien.
  • Umfasst die Erkennung von Objekten auf mehreren Skalen.
  • Die Instanzen werden von Experten unter Verwendung eines beliebigen Vierecks (8 d.o.f.) kommentiert, das Objekte verschiedener Größenordnungen, Ausrichtungen und Formen erfasst.

Versionen der Datensätze

DOTA-v1.0

  • Enthält 15 allgemeine Kategorien.
  • Umfasst 2.806 Bilder mit 188.282 Instanzen.
  • Aufteilungsverhältnisse: 1/2 für das Training, 1/6 für die Validierung und 1/3 für den Test.

DOTA-v1.5

  • Beinhaltet die gleichen Bilder wie DOTA-v1.0.
  • Sehr kleine Instanzen (weniger als 10 Pixel) werden ebenfalls mit Anmerkungen versehen.
  • Hinzufügung einer neuen Kategorie: "Containerkran".
  • Insgesamt 403.318 Instanzen.
  • Freigegeben für die DOAI Challenge 2019 zur Objekterkennung in Luftbildern.

DOTA-v2.0

  • Sammlungen von Google Earth, GF-2 Satellite und anderen Luftbildern.
  • Enthält 18 allgemeine Kategorien.
  • Umfasst 11.268 Bilder mit satten 1.793.658 Instanzen.
  • Neue Kategorien eingeführt: "Flughafen" und "Hubschrauberlandeplatz".
  • Das Bild wird geteilt:
    • 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-Herausforderung: 6.053 Bilder mit 1.090.637 Instanzen.

Struktur des Datensatzes

DOTA weist ein strukturiertes Layout auf, das auf die Herausforderungen der OBB-Objekterkennung zugeschnitten ist:

  • Bilder: Eine umfangreiche Sammlung von hochauflösenden Luftbildern, die verschiedene Geländeformen und Strukturen zeigen.
  • Orientierte Bounding Boxes: Anmerkungen 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-Anmerkungen stellt es eine einzigartige Herausforderung dar und ermöglicht die Entwicklung von spezialisierten Objekterkennungsmodellen, die auf die Nuancen von Luftbildern abgestimmt sind.

Datensatz YAML

In der Regel enthalten die Datensätze eine YAML-Datei (Yet Another Markup Language), in der die Konfiguration des Datensatzes beschrieben wird. Für DOTA v1 und DOTA v1.5 bietet Ultralytics DOTAv1.yaml und DOTAv1.5.yaml Dateien. Für zusätzliche Details zu diesen Dateien und zu DOTA v2 konsultieren Sie bitte das offizielle DOTA-Repository und die Dokumentation.

DOTAv1.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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: ../datasets/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 teilen

Um den DOTA-Datensatz zu trainieren, haben wir die hochaufgelösten Original-DOTA-Bilder in Bilder mit einer Auflösung von 1024x1024 auf multiskalige Weise aufgeteilt.

Bilder teilen

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,
)

Verwendung

Um ein Modell auf dem DOTA v1-Datensatz zu trainieren, können Sie die folgenden Codeschnipsel verwenden. Eine vollständige Liste der verfügbaren Argumente finden Sie immer in der Dokumentation Ihres Modells.

Warnung

Bitte beachten Sie, dass alle Bilder und zugehörigen Anmerkungen im DOTAv1-Datensatz für akademische Zwecke verwendet werden können, eine kommerzielle Nutzung ist jedoch untersagt. Ihr Verständnis und Ihr Respekt für die Wünsche der Urheber des Datensatzes werden sehr geschätzt!

Beispiel für einen Zug

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:

Datensatz Beispielbild

  • DOTA-Beispiele: Dieser Schnappschuss verdeutlicht die Komplexität von Luftaufnahmen und die Bedeutung von Oriented Bounding Box-Anmerkungen, die Objekte in ihrer natürlichen Ausrichtung erfassen.

Der Reichtum des Datensatzes bietet unschätzbare Einblicke in die Herausforderungen der Objekterkennung, die ausschließlich bei Luftbildern auftreten.

Zitate und Danksagungen

Für diejenigen, die DOTA in ihren Bemühungen nutzen, 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, das hinter den DOTA-Datensätzen steht, für seine lobenswerten Bemühungen bei der Zusammenstellung dieses Datensatzes. Für ein umfassendes Verständnis des Datensatzes und seiner Feinheiten besuchen Sie 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 spezieller Datensatz, der sich auf die Objekterkennung in Luftbildern konzentriert. Er verfügt über Oriented Bounding Boxes (OBB) und bietet kommentierte Bilder aus verschiedenen Luftbildern. Die Vielfalt der Objektausrichtung, des Maßstabs und der Form in den 1,7 Mio. Anmerkungen und 18 Kategorien macht DOTA ideal für die Entwicklung und Bewertung von Modellen, die auf die Analyse von Luftbildern zugeschnitten sind, wie z. B. für die Überwachung, die Umweltüberwachung und das Katastrophenmanagement.

Wie geht der DOTA-Datensatz mit unterschiedlichen Maßstäben und Ausrichtungen in Bildern um?

DOTA verwendet für die Beschriftung Oriented Bounding Boxes (OBB), die durch gedrehte Rechtecke dargestellt werden, die Objekte unabhängig von ihrer Ausrichtung umschließen. Mit dieser Methode wird sichergestellt, dass kleine oder aus verschiedenen Winkeln aufgenommene Objekte genau erfasst werden. Die multiskaligen Bilder des Datensatzes, die von 800 × 800 bis 20.000 × 20.000 Pixel reichen, ermöglichen darüber hinaus die effektive Erkennung sowohl kleiner als auch großer Objekte.

Wie kann ich ein Modell mit dem DOTA-Datensatz trainieren?

Um ein Modell mit dem DOTA-Datensatz zu trainieren, können Sie das folgende Beispiel mit Ultralytics YOLO verwenden:

Beispiel für einen Zug

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 Einzelheiten über die Aufteilung und Vorverarbeitung von DOTA-Bildern finden Sie im Abschnitt Aufteilung von DOTA-Bildern.

Was sind die Unterschiede zwischen DOTA-v1.0, DOTA-v1.5 und DOTA-v2.0?

  • DOTA-v1.0: Enthält 15 allgemeine Kategorien in 2.806 Bildern mit 188.282 Instanzen. Der Datensatz ist in Trainings-, Validierungs- und Test-Sets aufgeteilt.
  • DOTA-v1.5: Baut auf DOTA-v1.0 auf, indem sehr kleine Instanzen (weniger als 10 Pixel) kommentiert werden und eine neue Kategorie, "Containerkran", mit insgesamt 403.318 Instanzen hinzugefügt wird.
  • DOTA-v2.0: Erweitert um Anmerkungen von Google Earth und GF-2 Satellite, mit 11.268 Bildern und 1.793.658 Instanzen. Sie enthält neue Kategorien wie "Flughafen" und "Hubschrauberlandeplatz".

Einen detaillierten Vergleich und weitere Einzelheiten finden Sie im Abschnitt Versionen der Datensätze.

Wie kann ich hochauflösende DOTA-Bilder für die Ausbildung vorbereiten?

DOTA-Bilder, die sehr groß sein können, werden in kleinere Auflösungen aufgeteilt, um sie für die Ausbildung handhabbar zu machen. Hier ist ein Python Schnipsel 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,
)

Dieses Verfahren ermöglicht eine bessere Trainingseffizienz und Modellleistung. Ausführliche Anleitungen finden Sie im Abschnitt DOTA-Bilder teilen.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare