Meet YOLO26: next-gen vision AI.

Link to this sectionJeu de données DOTA avec OBB#

DOTA est un jeu de données spécialisé, axé sur la détection d'objets dans les images aériennes. Issu de la série de jeux de données DOTA, il propose des images annotées capturant une grande variété de scènes aériennes avec des Oriented Bounding Boxes (OBB).

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

Link to this sectionFonctionnalités clés#



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

Link to this sectionVersions du jeu de données#

Link to this sectionDOTA-v1.0#

  • Contient 15 catégories courantes.
  • Comprend 2 806 images avec 188 282 instances.
  • Ratios de répartition : 1/2 pour l'entraînement, 1/6 pour la validation et 1/3 pour le test.

Link to this sectionDOTA-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 : "container crane" (grue à conteneurs).
  • Un total de 403 318 instances.
  • Publié pour le DOAI Challenge 2019 on Object Detection in Aerial Images.

Link to this sectionDOTA-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 avec un nombre impressionnant de 1 793 658 instances.
  • Nouvelles catégories introduites : "airport" (aéroport) et "helipad" (héliport).
  • Répartitions 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.

Link to this sectionStructure du jeu de données#

DOTA présente une mise en page structurée conçue pour les défis de détection d'objets OBB :

  • Images : Une vaste collection d'images aériennes haute résolution capturant des terrains et des structures variés.
  • Oriented Bounding Boxes : Annotations sous forme de rectangles pivotés englobant les objets indépendamment de leur orientation, idéales pour capturer des objets comme les avions, les navires et les bâtiments.

Link to this sectionApplications#

DOTA sert de référence pour entraîner et évaluer des modèles spécifiquement conçus pour l'analyse d'images aériennes. Grâce à l'inclusion des annotations OBB, il offre 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. Le jeu de données est particulièrement utile pour les applications de télédétection, de surveillance et de surveillance environnementale.

Link to this sectionYAML du jeu de données#

Un fichier YAML (Yet Another Markup Language) du jeu de données spécifie les racines des images/étiquettes, les noms des classes et d'autres métadonnées importantes. Ultralytics maintient des fichiers YAML officiels pour les deux versions les plus couramment utilisées :

Utilise le fichier YAML qui correspond à 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é.

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

Link to this sectionDiviser les images DOTA#

L'imagerie brute dépasse régulièrement les 10 000 pixels de côté, le découpage en tuiles est donc nécessaire avant d'envoyer les données à YOLO. Utilise l'outil ci-dessous pour découper l'imagerie source en rognages de 1024 × 1024 se chevauchant, à plusieurs échelles, tout en maintenant les annotations synchronisées.

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

Maintiens le répertoire de sortie organisé selon la mise en page standard YOLO (images/train, labels/train, etc.) afin de pouvoir y faire référence directement depuis le YAML du jeu de données.

Link to this sectionUtilisation#

Pour entraîner un modèle sur le jeu de données DOTA v1, tu peux utiliser les extraits de code suivants. Reporte-toi toujours à la documentation de ton modèle pour obtenir une liste complète des arguments disponibles. Pour ceux qui souhaitent d'abord expérimenter avec un sous-ensemble plus petit, envisage d'utiliser le jeu de données DOTA8, qui contient seulement 8 images pour des tests rapides.

Avertissement

Note que toutes les images et les annotations associées dans le jeu de données DOTAv1 peuvent être utilisées à des fins académiques, mais que toute utilisation commerciale est interdite. Ta compréhension et ton respect des souhaits des créateurs du jeu de données sont grandement appréciés !

Exemple d'entraînement
from ultralytics import YOLO

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

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

Link to this sectionExemples de données et d'annotations#

Avoir un aperçu du jeu de données illustre sa profondeur :

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 Bounding Box orientées, capturant les objets dans leur orientation naturelle.

La richesse du jeu de données offre des perspectives inestimables sur les défis de détection d'objets exclusifs à l'imagerie aérienne. 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 en raison de ses annotations complètes et de ses diverses catégories d'objets.

Link to this sectionCitations 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3117983}
}

Une note de gratitude spéciale à l'équipe derrière les jeux de données DOTA pour leurs efforts louables dans la curation de ce jeu de données. Pour une compréhension exhaustive du jeu de données et de ses nuances, visite le site officiel DOTA.

Link to this sectionFAQ#

Link to this sectionQu'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é axé sur la détection d'objets dans les images aériennes. Il propose des boîtes englobantes orientées (OBB), fournissant des images annotées issues de scènes aériennes diverses. La diversité de DOTA en termes d'orientation, d'échelle et de forme des objets, à travers 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'imagerie aérienne, tels que ceux utilisés dans la surveillance, le suivi environnemental et la gestion des catastrophes.

Link to this sectionComment le jeu de données DOTA gère-t-il les différentes échelles et orientations dans les images ?#

DOTA utilise des boîtes englobantes orientées (OBB) pour l'annotation, représentées par des rectangles pivotés englobant 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 multi-échelles du jeu de données, allant de 800 × 800 à 20 000 × 20 000 pixels, permettent également de détecter efficacement les petits et les grands objets. Cette approche est particulièrement précieuse pour l'imagerie aérienne où les objets apparaissent sous divers angles et échelles.

Link to this sectionComment puis-je entraîner un modèle en utilisant le jeu de données DOTA ?#

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

# Create a new YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

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

Pour plus de détails sur la façon de diviser et de prétraiter les images DOTA, reporte-toi à la section diviser les images DOTA.

Link to this sectionQuelles sont les différences entre DOTA-v1.0, DOTA-v1.5 et DOTA-v2.0 ?#

  • DOTA-v1.0 : Inclut 15 catégories courantes réparties sur 2 806 images avec 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 de très petites instances (moins de 10 pixels) et en ajoutant une nouvelle catégorie, "container crane", totalisant 403 318 instances.
  • DOTA-v2.0 : S'étend davantage avec des annotations provenant de Google Earth et du satellite GF-2, comprenant 11 268 images et 1 793 658 instances. Il inclut de nouvelles catégories comme "airport" et "helipad".

Pour une comparaison détaillée et des spécificités supplémentaires, consulte la section des versions du jeu de données.

Link to this sectionComment puis-je préparer des images DOTA haute résolution pour l'entraînement ?#

Les images DOTA, qui peuvent être très volumineuses, sont divisées en résolutions plus petites pour un entraînement gérable. Voici un extrait 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 facilite une meilleure efficacité d'entraînement et de meilleures performances du modèle. Pour des instructions détaillées, visite la section diviser les images DOTA.

Commentaires