Skip to content

Ensemble de données DOTA avec OBB

DOTA est un jeu de données spécialisé qui met l'accent sur la détection d'objets dans les images aériennes. Issu de la série d'ensembles de données DOTA, il propose des images annotées capturant un large éventail de scènes aériennes avec des boîtes de délimitation orientées (OBB).

Visuel des classes DOTA

Caractéristiques principales

  • Collection provenant de divers capteurs et plateformes, avec des tailles d'image allant de 800 × 800 à 20 000 × 20 000 pixels.
  • Comprend plus de 1,7 million de boîtes de délimitation orientées dans 18 catégories.
  • englobe la détection d'objets à plusieurs échelles.
  • Les instances sont annotées par des experts à l'aide d'un quadrilatère arbitraire (8 d.o.f.), capturant des objets de différentes échelles, orientations et formes.

Versions de l'ensemble de données

DOTA-v1.0

  • Contient 15 catégories communes.
  • Comprend 2 806 images avec 188 282 instances.
  • Ratios de répartition : 1/2 pour la formation, 1/6 pour la validation et 1/3 pour le test.

DOTA-v1.5

  • Incorpore les mêmes images que DOTA-v1.0.
  • Les très petites instances (moins de 10 pixels) sont également annotées.
  • Ajout d'une nouvelle catégorie : "grue à conteneur".
  • Un total de 403 318 cas.
  • Publié pour le défi DOAI 2019 sur la détection d'objets dans les images aériennes.

DOTA-v2.0

  • Collections provenant de Google Earth, du satellite GF-2 et d'autres images aériennes.
  • Contient 18 catégories communes.
  • Comprend 11 268 images avec un nombre impressionnant de 1 793 658 instances.
  • De nouvelles catégories ont été introduites : "aéroport" et "héliport".
  • Séparation des images :
    • Formation : 1 830 images avec 268 627 instances.
    • Validation : 593 images avec 81 048 instances.
    • Test-dev : 2 792 images avec 353 346 instances.
    • Test-défi : 6 053 images avec 1 090 637 instances.

Structure de l'ensemble de données

DOTA présente une structure adaptée aux défis de la détection d'objets OBB :

  • Images: Une vaste collection d'images aériennes à haute résolution capturant divers terrains et structures.
  • Boîtes de délimitation orientées: Annotations sous forme de rectangles tournés encapsulant les objets indépendamment de leur orientation, idéales pour capturer des objets tels que des avions, des bateaux et des bâtiments.

Applications

DOTA sert de référence pour la formation et l'évaluation de modèles spécifiquement conçus pour l'analyse d'images aériennes. Avec l'inclusion des annotations OBB, il constitue un défi unique, permettant le développement de modèles de détection d'objets spécialisés qui répondent aux nuances de l'imagerie aérienne.

Jeu de données YAML

Généralement, les jeux de données intègrent un fichier YAML (Yet Another Markup Language) détaillant la configuration du jeu de données. Pour DOTA v1 et DOTA v1.5, Ultralytics fournit DOTAv1.yaml et DOTAv1.5.yaml fichiers. Pour plus de détails sur ces fichiers ainsi que sur DOTA v2, veuillez consulter le dépôt officiel et la documentation de DOTA.

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

Images de DOTA divisées

Pour former l'ensemble de données DOTA, nous avons divisé les images DOTA originales à haute résolution en images à résolution 1024x1024 de manière multiéchelle.

Images fractionnées

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

Utilisation

Pour entraîner un modèle sur l'ensemble de données DOTA v1, vous pouvez utiliser les extraits de code suivants. Référez-vous toujours à la documentation de votre modèle pour une liste complète des arguments disponibles.

Avertissement

Veuillez noter que toutes les images et les annotations associées dans l'ensemble de données DOTAv1 peuvent être utilisées à des fins académiques, mais que l'utilisation commerciale est interdite. Votre compréhension et votre respect des souhaits des créateurs du jeu de données sont grandement appréciés !

Exemple de train

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

Exemples de données et d'annotations

Un simple coup d'œil à l'ensemble des données permet d'en mesurer la profondeur :

Image de l'échantillon de l'ensemble de données

  • Exemples de DOTA: Cet instantané souligne la complexité des scènes aériennes et l'importance des annotations de la boîte englobante orientée, qui permet de capturer les objets dans leur orientation naturelle.

La richesse du jeu de données offre des perspectives inestimables sur les problèmes de détection d'objets propres à l'imagerie aérienne.

Citations et remerciements

Pour ceux qui utilisent DOTA dans leurs efforts, il est pertinent de citer les documents de recherche pertinents :

@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}
}

Nous tenons à remercier tout particulièrement l'équipe responsable des ensembles de données DOTA pour les efforts louables qu'elle a déployés afin de conserver cet ensemble de données. Pour une compréhension exhaustive de l'ensemble de données et de ses nuances, veuillez consulter le site officiel de DOTA.

FAQ

Qu'est-ce que le jeu de données DOTA et pourquoi est-il important pour la détection d'objets dans les images aériennes ?

Le jeu de données DOTA est un jeu de données spécialisé dans la détection d'objets dans les images aériennes. Il comprend des boîtes de délimitation orientées (OBB), qui fournissent des images annotées de diverses scènes aériennes. La diversité de l'orientation, de l'échelle et de la forme des objets dans les 1,7 million d'annotations et les 18 catégories de DOTA en fait un outil idéal pour le développement et l'évaluation de modèles adaptés à l'analyse d'images aériennes, tels que ceux utilisés pour la surveillance, le contrôle environnemental et la gestion des catastrophes.

Comment l'ensemble de données DOTA gère-t-il les différentes échelles et orientations des images ?

DOTA utilise des boîtes de délimitation orientées (OBB) pour l'annotation, qui sont représentées par des rectangles tournés encapsulant les objets quelle que soit leur orientation. Cette méthode garantit que les objets, qu'ils soient petits ou sous différents angles, sont capturés avec précision. Les images à plusieurs échelles de l'ensemble de données, allant de 800 × 800 à 20 000 × 20 000 pixels, permettent en outre de détecter efficacement les objets de petite et de grande taille.

Comment puis-je entraîner un modèle en utilisant l'ensemble de données DOTA ?

Pour entraîner un modèle sur l'ensemble de données DOTA, vous pouvez utiliser l'exemple suivant avec Ultralytics YOLO :

Exemple de train

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

Pour plus de détails sur la manière de diviser et de prétraiter les images DOTA, reportez-vous à la section "Diviser les images DOTA".

Quelles sont les différences entre DOTA-v1.0, DOTA-v1.5 et DOTA-v2.0 ?

  • DOTA-v1.0: comprend 15 catégories communes sur 2 806 images avec 188 282 instances. L'ensemble de données est divisé en ensembles de formation, de validation et de test.
  • DOTA-v1.5: s'appuie sur DOTA-v1.0 en annotant de très petites instances (moins de 10 pixels) et en ajoutant une nouvelle catégorie, "container crane", pour un total de 403 318 instances.
  • DOTA-v2.0: S'enrichit d'annotations provenant de Google Earth et GF-2 Satellite, avec 11 268 images et 1 793 658 instances. Il inclut de nouvelles catégories telles que "aéroport" et "héliport".

Pour une comparaison détaillée et des détails supplémentaires, consultez la section sur les versions des jeux de données.

Comment puis-je préparer des images DOTA en haute résolution pour la formation ?

Les images de DOTA, qui peuvent être très grandes, sont divisées en résolutions plus petites pour une formation gérable. Voici un extrait de Python pour diviser les images :

Exemple

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

Ce processus permet d'améliorer l'efficacité de l'entraînement et la performance du modèle. Pour des instructions détaillées, visitez la section des images DOTA divisées.

📅C réé il y a 1 an ✏️ Mis à jour il y a 2 mois

Commentaires