Ultralytics YOLO27 :
Get Started

Aperçu des jeux de données de boîtes englobantes orientées (OBB)#

L’entraînement d’un modèle précis de détection d’objets avec des boîtes englobantes orientées (OBB) nécessite un jeu de données complet. Ce guide explique les différents formats de jeux de données OBB compatibles avec les modèles Ultralytics YOLO et présente leur structure, leurs applications ainsi que les méthodes de conversion de format.

Formats de jeux de données OBB pris en charge#

Format YOLO OBB#

Le format YOLO OBB définit les boîtes englobantes à l’aide de leurs quatre sommets, dont les coordonnées sont normalisées entre 0 et 1. Il suit le format suivant :

class_index x1 y1 x2 y2 x3 y3 x4 y4

En interne, YOLO traite les pertes et les sorties au format xywhr, qui représente le centre de la boîte englobante (xy), sa largeur, sa hauteur et sa rotation.

Oriented bounding box annotation format examples

Un fichier d’étiquettes *.txt pour l’image ci-dessus, contenant un objet de classe 0 au format OBB, pourrait ressembler à ceci :

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

Format YAML du jeu de données#

Le framework Ultralytics utilise des fichiers YAML pour définir le jeu de données et la configuration du modèle lors de l’entraînement de modèles OBB. Voici un exemple de format YAML servant à définir un jeu de données OBB :

ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← downloads here (1 MB)

# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 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/dota8.zip

Chacun des champs train, val et test accepte un répertoire, une liste de répertoires ou un fichier *.txt qui répertorie un chemin d'image par ligne (les chemins commençant par ./ sont résolus par rapport au fichier *.txt). Un fichier *.txt est utile pour entraîner un modèle sur un sous-ensemble d'un répertoire, ignorer les images non annotées ou combiner des images issues de plusieurs sources dans une seule partition.

Chemins des images dans un fichier `*.txt`
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: plane

Utilisation#

Pour entraîner un modèle avec ces formats OBB :

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

Jeux de données pris en charge#

Les jeux de données suivants avec des boîtes englobantes orientées sont actuellement pris en charge. La plupart sont également hébergés sur Ultralytics Platform, où tu peux parcourir les images et les annotations, consulter les statistiques des jeux de données et les cloner pour l’entraînement dans le cloud.

  • DOTA-v1 : première version du jeu de données DOTA, qui fournit un ensemble complet d’images aériennes avec des boîtes englobantes orientées pour la détection d’objets.
  • DOTA-v1.5 : version intermédiaire du jeu de données DOTA, qui propose des annotations supplémentaires et des améliorations par rapport à DOTA-v1 pour optimiser les tâches de détection d’objets.
  • DOTA-v2 : version 2 de DOTA (jeu de données à grande échelle pour la détection d’objets dans des images aériennes), axée sur la détection depuis des perspectives aériennes et comprenant des boîtes englobantes orientées couvrant 1,7 million d’instances et 11 268 images.
  • DOTA8 : petit sous-ensemble de 8 images du jeu de données DOTA complet, adapté aux tests de workflow et aux vérifications d’intégration continue (CI) de l’entraînement OBB dans le dépôt ultralytics.
  • DOTA8 Multispectral : sous-ensemble de 8 images TIFF à 10 canaux pour tester l’entraînement OBB multispectral sur Ultralytics Platform.
  • DOTA128 : sous-ensemble de 128 images du jeu de données DOTA, toutes placées dans le dossier train (utilisé à la fois pour train et val), qui offre un bon équilibre entre taille et diversité pour tester des modèles OBB.

Intégrer ton propre jeu de données OBB#

Si tu souhaites intégrer tes propres jeux de données avec des boîtes englobantes orientées, vérifie qu’ils sont compatibles avec le « format YOLO OBB » présenté ci-dessus. Convertis tes annotations dans ce format requis et indique les chemins, les classes et les noms des classes dans un fichier de configuration YAML correspondant.

Convertir les formats d’étiquettes#

Convertir le format DOTA en format YOLO OBB#

Tu peux convertir les étiquettes du format du jeu de données DOTA au format YOLO OBB à l’aide de ce script :

Exemple
from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Ce mécanisme de conversion est essentiel pour les jeux de données au format DOTA ; il garantit leur compatibilité avec le format OBB d’Ultralytics YOLO.

Il est indispensable de vérifier la compatibilité du jeu de données avec ton modèle et de respecter les conventions de format requises. Des jeux de données correctement structurés sont essentiels pour entraîner efficacement des modèles de détection d’objets avec des boîtes englobantes orientées.

FAQ#

  • Les boîtes englobantes orientées (OBB) sont un type d’annotation de boîte englobante qui peut être pivotée pour s’aligner plus étroitement sur l’objet détecté, plutôt que de suivre uniquement les axes de l’image. Elles sont particulièrement utiles pour les images aériennes ou satellitaires, où les objets ne sont pas toujours alignés sur les axes de l’image. Dans les modèles Ultralytics YOLO, les OBB sont représentées par leurs quatre sommets au format YOLO OBB. Cela permet une détection d’objets plus précise, car les boîtes englobantes peuvent pivoter pour mieux épouser les objets.

  • Tu peux convertir les annotations du jeu de données DOTA au format YOLO OBB à l'aide de la fonction convert_dota_to_yolo_obb d'Ultralytics. Cette conversion garantit la compatibilité avec les modèles Ultralytics YOLO et te permet de tirer parti des capacités OBB pour améliorer la détection d'objets. Voici un exemple rapide :

    from ultralytics.data.converter import convert_dota_to_yolo_obb
    
    convert_dota_to_yolo_obb("path/to/DOTA")

    Ce script reformate tes annotations DOTA dans un format compatible avec YOLO.

  • Pour entraîner un modèle YOLO26 avec des OBB, tu dois vérifier que ton jeu de données est au format YOLO OBB, puis utiliser l'API Ultralytics pour entraîner le modèle. Voici un exemple avec Python et CLI :

    Exemple
    from ultralytics import YOLO
    
    # Créer un nouveau modèle YOLO26n-OBB à partir de zéro
    model = YOLO("yolo26n-obb.yaml")
    
    # Entraîner le modèle sur le jeu de données personnalisé
    results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

    Cela permet à ton modèle de tirer parti des annotations OBB détaillées pour améliorer la précision de la détection.

  • Ultralytics prend actuellement en charge les jeux de données suivants pour l'entraînement OBB :

    • DOTA-v1 : première version du jeu de données DOTA, qui fournit un ensemble complet d’images aériennes avec des boîtes englobantes orientées pour la détection d’objets.
    • DOTA-v1.5 : version intermédiaire du jeu de données DOTA, qui propose des annotations supplémentaires et des améliorations par rapport à DOTA-v1 pour optimiser les tâches de détection d’objets.
    • DOTA-v2 : ce jeu de données comprend 1,7 million d'instances annotées avec des boîtes englobantes orientées et 11 268 images, principalement consacrées à la détection d'objets aériens.
    • DOTA8 : un sous-ensemble réduit de 8 images du jeu de données DOTA, utilisé pour les tests et les vérifications d'intégration continue (CI).
    • DOTA128 : un sous-ensemble de 128 images, toutes placées dans le dossier train (utilisé à la fois pour train et val). Il offre davantage de diversité que DOTA8, tout en restant facile à gérer pour le développement et l'expérimentation initiaux de modèles OBB.

    Ces jeux de données sont adaptés aux scénarios où les OBB offrent un avantage significatif, comme l'analyse d'images aériennes et satellitaires.

  • Oui, tu peux utiliser ton propre jeu de données avec des boîtes englobantes orientées pour entraîner YOLO26. Vérifie que les annotations de ton jeu de données sont converties au format YOLO OBB, qui consiste à définir les boîtes englobantes à l'aide de leurs quatre sommets. Tu peux ensuite créer un fichier de configuration YAML qui spécifie les chemins d'accès au jeu de données, les classes et les autres informations nécessaires. Pour en savoir plus sur la création et la configuration de tes jeux de données, consulte la section Jeux de données pris en charge.

Commentaires