Ultralytics YOLO27 :
Get Started

Présentation des jeux de données de détection d'objets#

L'entraînement d'un modèle robuste et précis de détection d'objets nécessite un jeu de données complet. Ce guide présente différents formats de jeux de données compatibles avec le modèle Ultralytics YOLO et explique leur structure, leur utilisation et la conversion d'un format à un autre.

Formats de jeux de données pris en charge#

Format Ultralytics YOLO#

Le format Ultralytics YOLO est un format de configuration de jeu de données qui te permet de définir le répertoire racine du jeu de données, les chemins relatifs vers les répertoires d'images d'entraînement, de validation et de test ou vers des fichiers *.txt contenant des chemins d'images, ainsi qu'un dictionnaire de noms de classes. Voici un exemple :

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

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← 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: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.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/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

Les étiquettes de ce format doivent être exportées au format YOLO, avec un fichier *.txt par image. Si une image ne contient aucun objet, aucun fichier *.txt n'est nécessaire. Le fichier *.txt doit être structuré avec une ligne par objet au format class x_center y_center width height. Les coordonnées des boîtes doivent être au format xywh normalisé (de 0 à 1). Si tes boîtes sont exprimées en pixels, divise x_center et width par la largeur de l'image, et y_center et height par sa hauteur. Les numéros de classe doivent commencer à 0.

YOLO labeled image with bounding boxes on persons and tie

Le fichier d'étiquettes correspondant à l'image ci-dessus contient 2 personnes (classe 0) et une cravate (classe 27) :

YOLO format label file with normalized coordinates

Lorsque tu utilises le format Ultralytics YOLO, organise tes images et étiquettes d'entraînement et de validation comme dans l'exemple du jeu de données COCO8 ci-dessous.

YOLO dataset directory structure with train and val folders

Exemple d’utilisation#

Voici comment utiliser des jeux de données au format YOLO pour entraîner ton modèle :

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)

# Entraîner le modèle
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Format Ultralytics NDJSON#

Le format NDJSON (JSON délimité par des retours à la ligne) offre une autre façon de définir des jeux de données pour les modèles Ultralytics YOLO. Ce format stocke les métadonnées du jeu de données et les annotations dans un seul fichier, chaque ligne contenant un objet JSON distinct.

Un fichier de jeu de données NDJSON contient :

  1. Enregistrement du jeu de données (première ligne) : contient les métadonnées du jeu de données, notamment le type de tâche, les noms de classes et des informations générales.
  2. Enregistrements d'images (lignes suivantes) : contiennent les données de chaque image, notamment ses dimensions, ses annotations et ses chemins de fichiers.
Exemple NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Métadonnées personnalisées des images#

Chaque enregistrement d'image peut inclure un objet JSON metadata contenant des informations contextuelles propres à l'application, telles que les conditions de capture, les identifiants du matériel ou le statut de révision. Les valeurs imbriquées sont prises en charge. Lorsqu'elles sont importées dans Ultralytics Platform, les métadonnées sont associées à l'image et peuvent être consultées ou modifiées depuis son panneau d'informations en plein écran.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Platform limite les clés de métadonnées de premier niveau à 128 caractères, l'objet de métadonnées sérialisé de chaque image à 500 000 caractères et l'ensemble des métadonnées effectives d'une importation NDJSON à 500 000 caractères.

Exemple d’utilisation#

Pour utiliser un jeu de données NDJSON avec YOLO26, il suffit d'indiquer le chemin du fichier .ndjson :

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n.pt")

# Entraîner avec un jeu de données NDJSON
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

Avantages du format NDJSON#

  • Fichier unique : toutes les informations du jeu de données sont regroupées dans un seul fichier.
  • Traitement en flux : permet de traiter de grands jeux de données ligne par ligne sans tout charger en mémoire.
  • Intégration au cloud : prend en charge les URL d'images distantes pour l'entraînement dans le cloud.
  • Extensible : permet d'ajouter facilement des champs de métadonnées personnalisés.
  • Gestion des versions : le format à fichier unique fonctionne bien avec git et les systèmes de gestion de versions.

Jeux de données pris en charge#

Voici la liste des jeux de données pris en charge, accompagnés d'une brève description. 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.

  • African-wildlife : un jeu de données contenant des images de la faune africaine, notamment des buffles, des éléphants, des rhinocéros et des zèbres.
  • Argoverse : le jeu de données Argoverse-HD pour la détection 2D, composé de 54 446 images urbaines de conduite autonome couvrant 8 classes d'objets routiers.
  • Brain-tumor : un jeu de données destiné à la détection de tumeurs cérébrales, qui comprend des images d'IRM ou de tomodensitométrie et des informations sur la présence, l'emplacement et les caractéristiques des tumeurs.
  • COCO : Common Objects in Context (COCO) est un jeu de données à grande échelle pour la détection d'objets, la segmentation et le sous-titrage d'images, avec 80 catégories d'objets.
  • COCO8 : un petit sous-ensemble des 8 premières images de COCO train2017, avec 4 images pour l’entraînement et 4 pour la validation, adapté aux tests rapides.
  • COCO8-Grayscale : une version en niveaux de gris de COCO8, obtenue en convertissant les images RVB en niveaux de gris, utile pour évaluer des modèles à canal unique.
  • COCO8-Multispectral : une version multispectrale de COCO8 à 10 canaux, créée par interpolation des longueurs d’onde RVB, utile pour évaluer des modèles sensibles aux spectres.
  • COCO12-Formats : un jeu de données de test contenant 12 images couvrant 12 formats d'image pris en charge (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP), destiné à valider les pipelines de chargement d'images.
  • COCO16 : un sous-ensemble des 16 premières images de COCO train2017 (8 pour l'entraînement et 8 pour la validation), adapté aux tests rapides.
  • COCO32 : un sous-ensemble des 32 premières images de COCO train2017 (16 pour l'entraînement et 16 pour la validation), adapté aux tests rapides.
  • COCO64 : un sous-ensemble des 64 premières images de COCO train2017 (32 pour l'entraînement et 32 pour la validation), adapté aux tests rapides.
  • COCO128 : un petit sous-ensemble des 128 premières images de COCO train2017, adapté aux tests.
  • Construction-PPE : un jeu de données présentant des ouvriers sur des chantiers, avec des équipements de sécurité annotés tels que des casques, des gilets, des gants, des bottes et des lunettes de protection, ainsi que des annotations signalant l'équipement manquant, comme no_helmet et no_goggle, pour le suivi de la conformité en conditions réelles.
  • Global Wheat 2020 : un jeu de données contenant des images d’épis de blé pour le Global Wheat Challenge 2020.
  • HomeObjects-3K : un jeu de données d'objets domestiques d'intérieur comprenant des lits, des chaises, des téléviseurs et bien plus encore, idéal pour la domotique, la robotique, la réalité augmentée et l'analyse de l'agencement des pièces.
  • KITTI : un jeu de données présentant des scènes de conduite réelles avec des données stéréo, LiDAR et GPS/IMU, utilisé ici pour des tâches de détection d'objets 2D, comme l'identification de voitures, de piétons et de cyclistes en milieu urbain, rural et autoroutier.
  • LVIS : un vaste jeu de données pour la détection d’objets et la segmentation d’instances, comprenant 1 203 catégories d’objets.
  • Medical-pills : un jeu de données contenant des images de médicaments sous forme de comprimés, annotées pour des applications telles que l'assurance qualité pharmaceutique, le tri des comprimés et la conformité réglementaire.
  • Objects365 : un jeu de données de haute qualité et à grande échelle pour la détection d'objets, comprenant 365 catégories d'objets et plus de 1,7 M d'images d'entraînement.
  • OpenImagesV7 : un jeu de données exhaustif de Google comprenant 1,7 million d’images d’entraînement et 42 000 images de validation.
  • Roboflow 100 : un benchmark diversifié de détection d’objets comprenant 100 jeux de données couvrant sept domaines d’imagerie, pour une évaluation complète des modèles.
  • Signature : un jeu de données composé d’images de divers documents avec des signatures annotées, destiné à la recherche sur la vérification de documents et la détection de fraudes.
  • SKU-110K : un jeu de données consacré à la détection d’objets denses dans des environnements de vente au détail, avec plus de 11K images et 1,7 million de boîtes englobantes.
  • TT100K : découvre le jeu de données de panneaux de signalisation Tsinghua-Tencent 100K (TT100K), avec 16 817 images de vues de rue réparties sur 221 catégories de panneaux, pour une détection et une classification robustes.
  • VisDrone : un jeu de données contenant des données de détection d’objets et de suivi multi-objets issues d’images capturées par drone, avec plus de 10 000 images et séquences vidéo.
  • VOC : le jeu de données Pascal de classes d’objets visuels (VOC) pour la détection et la segmentation d’objets, avec 20 classes d’objets et plus de 11K images.
  • xView : un jeu de données pour la détection d’objets dans des images aériennes, avec 60 catégories d’objets et plus d’un million d’objets annotés.

Ajouter ton propre jeu de données#

Si tu as ton propre jeu de données et que tu souhaites l’utiliser pour entraîner des modèles de détection au format Ultralytics YOLO, vérifie qu’il respecte le format décrit plus haut dans « Format Ultralytics YOLO ». Convertis tes annotations au format requis et indique les chemins, le nombre de classes et les noms des classes dans le fichier de configuration YAML.

Porter ou convertir des formats d’étiquettes#

Convertir le format du jeu de données COCO au format YOLO#

Tu peux facilement convertir les étiquettes du format du populaire jeu de données COCO au format YOLO à l’aide de l’extrait de code suivant :

Exemple
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Cet outil de conversion permet de convertir le jeu de données COCO ou tout autre jeu de données au format COCO au format Ultralytics YOLO. Le processus transforme les annotations COCO au format JSON en annotations YOLO plus simples, au format texte, compatibles avec les modèles Ultralytics YOLO. Pour connaître l’ensemble du processus — y compris la correspondance des ID de classe, la structure des répertoires et les annotations de segmentation ou de pose — consulte Convertir des annotations COCO au format YOLO.

Pense à vérifier soigneusement que le jeu de données que tu veux utiliser est compatible avec ton modèle et respecte les conventions de format nécessaires. Des jeux de données correctement formatés sont essentiels pour entraîner des modèles de détection d’objets performants.

Et ensuite ?#

Une fois ton jeu de données formaté, commence à entraîner ton modèle. Tu ne sais pas quel modèle préentraîné choisir pour commencer ? Compare les options de la famille de modèles YOLO26.

FAQ#

  • Le format Ultralytics YOLO est une configuration structurée qui permet de définir les jeux de données de tes projets d’entraînement. Il consiste à définir les chemins d’accès aux images et aux étiquettes correspondantes pour l’entraînement, la validation et le test. Par exemple :

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← 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: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

    Les étiquettes sont enregistrées dans des fichiers *.txt, à raison d’un fichier par image, au format class x_center y_center width height avec des coordonnées normalisées. Pour un guide détaillé, consulte l’exemple du jeu de données COCO8.

  • Tu peux convertir un jeu de données COCO au format YOLO à l’aide des outils de conversion Ultralytics. Voici une méthode rapide :

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    Ce code convertira tes annotations COCO au format YOLO et permettra leur intégration fluide aux modèles Ultralytics YOLO. Pour plus de détails, consulte la section Porter ou convertir des formats d’étiquettes.

  • Ultralytics YOLO prend en charge de nombreux jeux de données, notamment :

    Chaque page de jeu de données fournit des informations détaillées sur sa structure et son utilisation, adaptées à un entraînement efficace de YOLO26. Consulte la liste complète dans la section Jeux de données pris en charge.

  • Pour commencer à entraîner un modèle YOLO26, vérifie que ton jeu de données est correctement formaté et que les chemins sont définis dans un fichier YAML. Utilise le script suivant pour commencer l’entraînement :

    Exemple
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # Charger un modèle préentraîné
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Consulte la section Utilisation pour plus de détails sur l’utilisation des différents modes, notamment les commandes CLI.

  • Ultralytics propose de nombreux exemples et guides pratiques pour utiliser YOLO26 dans diverses applications. Pour un aperçu complet, consulte le blog Ultralytics, où tu trouveras des études de cas, des tutoriels détaillés et des témoignages de la communauté présentant la détection d’objets, la segmentation et bien plus encore avec YOLO26. Pour des exemples précis, consulte la page Mode Predict de la documentation.

Commentaires