Ultralytics YOLO27 :

Jeu de données DOTA avec OBB#

Le jeu de données DOTA est une référence à grande échelle pour la détection d’objets dans les images aériennes, publiée en trois versions (v1.0, v1.5, v2.0) avec jusqu’à 1,7 million d’annotations de boîtes englobantes orientées (OBB) réparties sur 18 catégories, capturées par divers capteurs et plateformes aériens.

Explore les jeux de données DOTA v1.5 et DOTA v1.0 hébergés officiellement sur Ultralytics Platform pour prévisualiser leurs annotations orientées, examiner leurs statistiques et les cloner pour l’entraînement.

Classes d’objets du jeu de données DOTA pour la détection aérienne

Fonctionnalités clés#



Watch: How to Train Ultralytics YOLO on the DOTA Dataset for Oriented Bounding Boxes in Google Colab
  • Collecte provenant de divers capteurs et plateformes, avec des images dont la taille varie de 800 × 800 à 20 000 × 20 000 pixels.
  • Comprend plus de 1,7 million de boîtes englobantes orientées réparties sur 18 catégories.
  • Couvre la détection d’objets à plusieurs échelles grâce à la grande diversité des tailles d’objets dans chaque image.
  • Les instances sont annotées par des experts à l’aide de quadrilatères arbitraires (8 d.o.f.), qui capturent des objets de différentes tailles, orientations et formes.

Versions du jeu de données#

DOTA-v1.0#

  • Contient 15 catégories courantes.
  • Comprend 2 806 images et 188 282 instances.
  • Répartition : 1/2 pour l’entraînement (1 411 images), 1/6 pour la validation (458 images) et 1/3 pour les tests (937 images).

DOTA-v1.5#

  • Intègre 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 à conteneurs ».
  • Un total de 403 318 instances.
  • Publié pour le DOAI Challenge 2019 on Object Detection in Aerial Images.

DOTA-v2.0#

  • Collections provenant de Google Earth, du satellite GF-2 et d’autres images aériennes.
  • Contient 18 catégories courantes.
  • Comprend 11 268 images et pas moins de 1 793 658 instances.
  • Nouvelles catégories introduites : « aéroport » et « héliport ».
  • Répartition des images :
    • Entraînement : 1 830 images et 268 627 instances.
    • Validation : 593 images et 81 048 instances.
    • Test-dev : 2 792 images et 353 346 instances.
    • Test-challenge : 6 053 images et 1 090 637 instances.

Structure du jeu de données#

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

  • Images : une vaste collection d’images aériennes haute résolution capturant des terrains et des structures variés.
  • Boîtes englobantes orientées : des annotations sous forme de rectangles pivotés qui entourent les objets quelle que soit leur orientation, idéales pour capturer des objets tels que des avions, des navires et des bâtiments.

Applications#

DOTA sert de référence pour l’entraînement et l’évaluation de modèles spécialement conçus pour l’analyse d’images aériennes. Grâce à ses annotations OBB, il offre un défi unique qui permet de développer des modèles spécialisés de détection d’objets adaptés aux particularités des images aériennes. Le jeu de données est particulièrement utile pour la télédétection, la surveillance et le suivi environnemental.

YAML du jeu de données#

Un fichier YAML de jeu de données spécifie les racines des images et des labels, les noms de classes et d’autres métadonnées importantes. Ultralytics gère des fichiers YAML officiels pour les deux versions les plus utilisées :

Utilise le YAML correspondant à la version que tu as téléchargée, ou crée un YAML personnalisé si tu travailles avec DOTA-v2 ou un autre dérivé. Les deux versions sont téléchargées automatiquement (2 Go) depuis les ressources GitHub d’Ultralytics lors du premier entraînement.

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

Découper les images DOTA#

Les images brutes dépassent régulièrement 10 000 pixels de côté. Il faut donc les découper avant de fournir les données à YOLO. Utilise l’utilitaire ci-dessous pour découper les images sources en recadrages superposés de 1024 × 1024 à plusieurs échelles, tout en conservant la correspondance avec les annotations.

Découper les images
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,
)
Conseil

Garde le répertoire de sortie organisé selon la structure YOLO standard (images/train, labels/train, etc.) afin de pouvoir le référencer directement depuis le YAML du jeu de données.

Utilisation#

Pour entraîner un modèle sur le jeu de données DOTA v1, tu peux utiliser les extraits de code suivants. Consulte toujours la documentation de ton modèle pour obtenir la liste complète des arguments disponibles. Si tu souhaites d’abord expérimenter avec un sous-ensemble plus petit, utilise le jeu de données DOTA8, qui ne contient que 8 images pour des tests rapides et peut être parcouru sur Ultralytics Platform.

Avertissement

Note que toutes les images et annotations associées du jeu de données DOTAv1 peuvent être utilisées à des fins universitaires, mais que leur utilisation commerciale est interdite. Nous te remercions vivement de comprendre et de respecter les souhaits des créateurs du jeu de données !

Exemple d’entraînement
from ultralytics import YOLO

# Load a pretrained YOLO26n-OBB model
model = YOLO("yolo26n-obb.pt")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Données et annotations d'exemple#

Un aperçu du jeu de données permet d’en mesurer la richesse :

Jeu de données DOTA avec annotations de boîtes englobantes orientées

  • Exemples DOTA : cette capture souligne la complexité des scènes aériennes et l’importance des annotations de boîtes englobantes orientées, qui capturent les objets dans leur orientation naturelle.

La richesse du jeu de données fournit des informations précieuses sur les défis de la détection d’objets propres aux images aériennes. Le jeu de données DOTA-v2.0 est devenu particulièrement populaire pour les projets de télédétection et de surveillance aérienne grâce à ses annotations complètes et à la diversité de ses catégories d’objets.

Citations et remerciements#

Si tu utilises DOTA dans tes travaux, cite les articles de recherche pertinents :

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

Nous adressons nos remerciements particuliers à l’équipe à l’origine des datasets DOTA pour les efforts remarquables consacrés à la constitution de ce dataset. Pour comprendre en détail le dataset et ses spécificités, consulte le site officiel de DOTA.

FAQ#

  • 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 propose des boîtes englobantes orientées (OBB) et fournit des images annotées issues de scènes aériennes variées. La diversité des orientations, des tailles et des formes d’objets dans ses 1,7 million d’annotations et ses 18 catégories le rend idéal pour développer et évaluer des modèles adaptés à l’analyse d’images aériennes, notamment pour la surveillance, le suivi environnemental et la gestion des catastrophes.

  • DOTA utilise des boîtes englobantes orientées (OBB) pour l’annotation. Elles sont représentées par des rectangles pivotés qui entourent les objets quelle que soit leur orientation. Cette méthode garantit que les objets, qu’ils soient petits ou placés selon différents angles, sont capturés avec précision. Les images multiscalaires du jeu de données, dont la taille varie de 800 × 800 à 20 000 × 20 000 pixels, permettent également de détecter efficacement les objets petits et grands. Cette approche est particulièrement utile pour les images aériennes, où les objets apparaissent selon différents angles et à différentes échelles.

  • Pour entraîner un modèle sur le jeu de données DOTA, tu peux utiliser l’exemple suivant avec Ultralytics YOLO :

    Exemple d’entraînement
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26n-OBB model
    model = YOLO("yolo26n-obb.pt")
    
    # Train the model on the DOTAv1 dataset
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    Pour plus de détails sur le découpage et le prétraitement des images DOTA, consulte la section sur le découpage des images DOTA.

    • DOTA-v1.0 : comprend 15 catégories courantes réparties sur 2 806 images et 188 282 instances. Le jeu de données est divisé en ensembles d’entraînement, de validation et de test.
    • DOTA-v1.5 : s’appuie sur DOTA-v1.0 en annotant les très petites instances (moins de 10 pixels) et en ajoutant une nouvelle catégorie, « grue à conteneurs », pour un total de 403 318 instances.
    • DOTA-v2.0 : va plus loin avec des annotations provenant de Google Earth et du satellite GF-2, et comprend 11 268 images et 1 793 658 instances. Elle inclut de nouvelles catégories comme « aéroport » et « héliport ».

    Pour une comparaison détaillée et plus d’informations, consulte la section sur les versions du jeu de données.

  • Les images DOTA, qui peuvent être très grandes, sont découpées en résolutions plus petites pour faciliter l’entraînement. Voici un extrait Python pour découper 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 améliore l’efficacité de l’entraînement et les performances du modèle. Pour obtenir des instructions détaillées, consulte la section sur le découpage des images DOTA.

Commentaires