Ultralytics YOLO27 :

Jeu de données DOTA avec OBB#

Le jeu de données DOTA est un benchmark à grande échelle pour la détection d'objets dans les images aériennes. Il existe en trois versions (v1.0, v1.5, v2.0) et comprend jusqu'à 1,7 M 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 la plateforme Ultralytics, pour prévisualiser leurs annotations orientées, examiner les statistiques et les cloner en vue de l'entraînement.

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

Fonctionnalités clés#



Regarder : Comment entraîner Ultralytics YOLO sur le jeu de données DOTA pour détecter des boîtes englobantes orientées dans Google Colab
  • Collecte réalisée avec divers capteurs et plateformes, avec des images dont la taille varie de 800 × 800 à 20 000 × 20 000 pixels.
  • Comprend plus de 1,7 M de boîtes englobantes orientées réparties sur 18 catégories.
  • Permet 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 degrés de liberté), qui représentent des objets de différentes échelles, 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 le test (937 images).

DOTA-v1.5#

DOTA-v2.0#

  • Images issues de Google Earth, du satellite GF-2 et d'autres sources d'images aériennes.
  • Contient 18 catégories courantes.
  • Comprend 11 268 images et un total impressionnant de 1 793 658 instances.
  • Nouvelles catégories ajoutées : « aéroport » et « héliport ».
  • Répartition des images :
    • Entraînement : 1 830 images avec 268 627 instances.
    • Validation : 593 images avec 81 048 instances.
    • Test-dev : 2 792 images avec 353 346 instances.
    • Test-challenge : 6 053 images avec 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 couvrant des terrains et des structures variés.
  • Boîtes englobantes orientées : Des annotations sous forme de rectangles pivotés qui encadrent les objets quelle que soit leur orientation, idéales pour détecter des objets comme les avions, les navires et les bâtiments.

Applications#

DOTA sert de référence pour entraîner et évaluer des modèles spécialement conçus pour l’analyse d’images aériennes. Grâce à ses annotations OBB, le jeu de données pose un défi unique qui favorise le développement de modèles spécialisés de détection d’objets adaptés aux spécificité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.

Fichier YAML du jeu de données#

Un fichier YAML de jeu de données définit les chemins d’accès aux images et aux étiquettes, les noms des 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 fichier YAML correspondant à la version que tu as téléchargée, ou crée un fichier 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 souvent les 10 000 pixels de côté ; il est donc recommandé de les découper avant de fournir les données à YOLO. Utilise la fonction d’aide ci-dessous pour découper les images sources en vignettes chevauchantes de 1024 × 1024 à plusieurs échelles, tout en synchronisant les annotations.

Découper les images
from ultralytics.data.split_dota import split_test, split_trainval

# Découper les jeux train et val, avec les étiquettes.
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,
)
# Découper le jeu test, sans étiquettes.
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

Organise le répertoire de sortie selon la structure YOLO standard (images/train, labels/train, etc.) afin de pouvoir le référencer directement depuis le fichier 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 tester un sous-ensemble plus petit, essaie le jeu de données DOTA8, qui ne contient que 8 images pour des tests rapides et que tu peux parcourir 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 de comprendre et de respecter les souhaits des créateurs du jeu de données !

Exemple d’entraînement
from ultralytics import YOLO

# Charger un modèle YOLO26n-OBB préentraîné
model = YOLO("yolo26n-obb.pt")

# Entraîner le modèle sur le jeu de données DOTAv1
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 apprécier la richesse :

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

  • Exemples DOTA : Cet aperçu 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 offre des informations précieuses sur les défis de 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 jeux de données DOTA pour son travail remarquable de constitution de ce jeu de données. Pour comprendre en détail le jeu de données et ses particularité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 comprend des boîtes englobantes orientées (OBB) et des images annotées provenant de scènes aériennes variées. La diversité des orientations, des échelles et des formes d’objets dans DOTA, avec ses 1,7 million d’annotations et ses 18 catégories, en fait un jeu de données idéal pour développer et évaluer des modèles d’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 les annotations. Celles-ci sont représentées par des rectangles pivotés qui encadrent les objets quelle que soit leur orientation. Cette méthode garantit que les objets, même petits ou placés sous différents angles, sont capturés avec précision. Les images multiscalaires du jeu de données, dont la résolution 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érentes orientations 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
    
    # Charger un modèle YOLO26n-OBB préentraîné
    model = YOLO("yolo26n-obb.pt")
    
    # Entraîner le modèle sur le jeu de données DOTAv1
    results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

    Pour en savoir plus 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 : Reprend DOTA-v1.0 en annotant les très petites instances (moins de 10 pixels) et en ajoutant une nouvelle catégorie, « grue portuaire », pour un total de 403 318 instances.
    • DOTA-v2.0 : Étend encore le jeu de données avec des annotations provenant de Google Earth et du satellite GF-2. Il comprend 11 268 images et 1 793 658 instances, ainsi que 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 peuvent être très volumineuses ; on les découpe donc en images de plus petite résolution 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
    
    # découper les jeux train et val, avec les étiquettes.
    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,
    )
    # découper le jeu test, sans étiquettes.
    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