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

L'entraînement d'un modèle de détection d'objets robuste et précis 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 fournit des informations sur leur structure, leur utilisation et la manière de convertir entre différents formats.

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/validation/test ou les fichiers *.txt contenant les chemins des images, ainsi qu'un dictionnaire des 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

Les étiquettes pour ce format doivent être exportées au format YOLO avec un fichier *.txt par image. S'il n'y a aucun objet dans une image, aucun fichier *.txt n'est requis. Le fichier *.txt doit être formaté 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 en pixels, tu dois diviser x_center et width par la largeur de l'image, et y_center et height par la hauteur de l'image. Les numéros de classe doivent être indexés à partir de zéro (commencer par 0).

YOLO labeled image with bounding boxes on persons and tie

Le fichier d'étiquette 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 indiqué 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 tu peux utiliser les jeux de données au format YOLO pour entraîner ton modèle :

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Format Ultralytics NDJSON

Le format NDJSON (Newline Delimited JSON) offre une alternative pour définir des jeux de données pour les modèles Ultralytics YOLO. Ce format stocke les métadonnées et les annotations du jeu de données dans un seul fichier où chaque ligne contient 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, y compris le type de tâche, les noms des classes et des informations générales.
  2. Enregistrements d'images (lignes suivantes) : contient les données individuelles des images, y compris les dimensions, les annotations et les chemins des fichiers.
Exemple NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.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"
}

Exemple d'utilisation

Pour utiliser un jeu de données NDJSON avec YOLO26, indique simplement le chemin vers le fichier .ndjson :

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
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 contenues dans un seul fichier.
  • Streaming : Permet de traiter de grands jeux de données ligne par ligne sans tout charger en mémoire.
  • Intégration cloud : Prend en charge les URLs d'images distantes pour un entraînement basé sur le cloud.
  • Extensible : Facile d'ajouter des champs de métadonnées personnalisés.
  • Contrôle de version : Le format de fichier unique fonctionne bien avec git et les systèmes de contrôle de version.

Jeux de données pris en charge

Voici une liste des jeux de données pris en charge et une brève description pour chacun :

  • African-wildlife : Un jeu de données présentant des images de la faune africaine, notamment des buffles, des éléphants, des rhinocéros et des zèbres.
  • Argoverse : Un jeu de données contenant des données de suivi 3D et de prévision de mouvement issues d'environnements urbains avec des annotations riches.
  • Brain-tumor : Un jeu de données pour la détection de tumeurs cérébrales comprenant des images IRM ou CT scan avec des détails sur la présence, l'emplacement et les caractéristiques de la tumeur.
  • COCO : Common Objects in Context (COCO) est un jeu de données à grande échelle de détection d'objets, de segmentation et de légende avec 80 catégories d'objets.
  • COCO8 : Un sous-ensemble plus petit des 4 premières images de l'entraînement et de la validation COCO, adapté aux tests rapides.
  • COCO8-Grayscale : Une version en niveaux de gris de COCO8 créée en convertissant le RGB en niveaux de gris, utile pour l'évaluation de modèles à canal unique.
  • COCO8-Multispectral : Une version multispectrale à 10 canaux de COCO8 créée en interpolant les longueurs d'onde RGB, utile pour l'évaluation de modèles sensibles au spectre.
  • COCO12-Formats : Un jeu de données de test avec 12 images couvrant tous les formats d'image pris en charge (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) pour valider les pipelines de chargement d'images.
  • COCO128 : Un sous-ensemble plus petit des 128 premières images de l'entraînement et de la validation COCO, adapté aux tests.
  • Construction-PPE : Un jeu de données présentant des travailleurs sur un chantier de construction avec des équipements de sécurité étiquetés tels que des casques, des gilets, des gants, des bottes et des lunettes, y compris des annotations pour équipement manquant comme no_helmet, no_googles pour le suivi de conformité en situation réelle.
  • Global Wheat 2020 : Un jeu de données contenant des images de têtes de blé pour le Global Wheat Challenge 2020.
  • HomeObjects-3K : Un jeu de données d'objets ménagers intérieurs incluant des lits, des chaises, des téléviseurs, et plus encore — idéal pour les applications en domotique intelligente, robotique, réalité augmentée et analyse de configuration de 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 telles que l'identification de voitures, de piétons et de cyclistes dans des environnements urbains, ruraux et autoroutiers.
  • LVIS : Un jeu de données à grande échelle de détection d'objets, de segmentation et de légende avec 1203 catégories d'objets.
  • Medical-pills : Un jeu de données présentant des images de pilules médicales, annotées pour des applications telles que l'assurance qualité pharmaceutique, le tri de pilules et la conformité réglementaire.
  • Objects365 : Un jeu de données de haute qualité et à grande échelle pour la détection d'objets avec 365 catégories d'objets et plus de 600 000 images annotées.
  • OpenImagesV7 : Un jeu de données complet de Google avec 1,7 million d'images d'entraînement et 42 000 images de validation.
  • Roboflow 100 : Un benchmark de détection d'objets diversifié avec 100 jeux de données couvrant sept domaines d'imagerie pour une évaluation complète des modèles.
  • Signature : Un jeu de données présentant des images de divers documents avec des signatures annotées, soutenant la recherche sur la vérification de documents et la détection de fraude.
  • SKU-110K : Un jeu de données présentant la détection d'objets denses dans les environnements de vente au détail avec plus de 11 000 images et 1,7 million de boîtes englobantes.
  • TT100K : Explore le jeu de données de panneaux de signalisation Tsinghua-Tencent 100K (TT100K) avec 100 000 images de vue de rue et plus de 30 000 panneaux de signalisation annotés 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'imagerie capturée par drone avec plus de 10 000 images et séquences vidéo.
  • VOC : Le jeu de données Pascal Visual Object Classes (VOC) pour la détection et la segmentation d'objets avec 20 classes d'objets et plus de 11 000 images.
  • xView : Un jeu de données pour la détection d'objets dans l'imagerie aérienne 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 avec le format Ultralytics YOLO, assure-toi qu'il suit le format spécifié ci-dessus dans la section "Format Ultralytics YOLO". Convertis tes annotations au format requis et précise les chemins, le nombre de classes et les noms des classes dans le fichier de configuration YAML.

Porter ou convertir des formats d'étiquettes

Format de jeu de données COCO vers le format YOLO

Tu peux facilement convertir les étiquettes du format populaire jeu de données COCO vers le format YOLO en utilisant 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 peut être utilisé pour convertir le jeu de données COCO ou tout jeu de données au format COCO vers le format Ultralytics YOLO. Le processus transforme les annotations COCO basées sur JSON en un format YOLO textuel plus simple, le rendant compatible avec les modèles Ultralytics YOLO.

N'oublie pas de vérifier si le jeu de données que tu souhaites utiliser est compatible avec ton modèle et suit les conventions de format nécessaires. Des jeux de données correctement formatés sont cruciaux pour entraîner des modèles de détection d'objets réussis.

FAQ

Quel est le format de jeu de données Ultralytics YOLO et comment le structurer ?

Le format Ultralytics YOLO est une configuration structurée pour définir des jeux de données dans tes projets d'entraînement. Il implique de définir les chemins vers tes images d'entraînement, de validation et de test ainsi que les étiquettes correspondantes. 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 avec un fichier par image, formatés comme 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.

Comment convertir un jeu de données COCO au format YOLO ?

Tu peux convertir un jeu de données COCO au format YOLO en utilisant les 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, permettant une intégration fluide avec les modèles Ultralytics YOLO. Pour plus de détails, visite la section Porter ou convertir des formats d'étiquettes.

Quels jeux de données sont pris en charge par Ultralytics YOLO pour la détection d'objets ?

Ultralytics YOLO prend en charge une large gamme de jeux de données, notamment :

Chaque page de jeu de données fournit des informations détaillées sur la structure et l'utilisation adaptées pour un entraînement efficace de YOLO26. Explore la liste complète dans la section Jeux de données pris en charge.

Comment commencer à entraîner un modèle YOLO26 en utilisant mon jeu de données ?

Pour commencer à entraîner un modèle YOLO26, assure-toi 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 lancer l'entraînement :

Exemple
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

Consulte la section Usage pour plus de détails sur l'utilisation des différents modes, y compris les commandes CLI.

Où puis-je trouver des exemples pratiques d'utilisation d'Ultralytics YOLO pour la détection d'objets ?

Ultralytics fournit de nombreux exemples et guides pratiques pour utiliser YOLO26 dans diverses applications. Pour un aperçu complet, visite le blog Ultralytics où tu peux trouver des études de cas, des tutoriels détaillés et des histoires de la communauté illustrant la détection d'objets, la segmentation, et plus encore avec YOLO26. Pour des exemples spécifiques, consulte la section Usage dans la documentation.

Commentaires