Passer au contenu

Aperçu 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 ensemble de données complet. Ce guide présente différents formats d'ensembles 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 d'ensemble de données qui vous permet de définir le répertoire racine de l'ensemble de données, les chemins relatifs vers les répertoires d'images d'entraînement/validation/test ou *.txt les fichiers contenant les chemins d'image, et 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

Les étiquettes pour ce format doivent être exportées au format YOLO avec un *.txt fichier par image. S'il n'y a pas d'objets dans une image, aucun *.txt fichier n'est requis. Le *.txt fichier doit être formaté avec une ligne par objet au class x_center y_center width height format. Les coordonnées de la boîte doivent être en xywh normalisé format (de 0 à 1). Si vos boîtes sont en pixels, vous devez 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 à zéro (commencer par 0).

Exemple d'image étiquetée

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

Exemple de fichier d'étiquettes

Lorsque vous utilisez le format Ultralytics YOLO, organisez vos images et étiquettes d'entraînement et de validation comme indiqué dans l'exemple de jeu de données COCO8 ci-dessous.

Exemple de structure de répertoire de jeu de données

Exemple d'utilisation

Voici comment utiliser les ensembles de données au format YOLO pour entraîner votre modèle :

Exemple

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

Format NDJSON Ultralytics

Le format NDJSON (JSON délimité par des sauts de ligne) offre une autre façon de définir les ensembles de données pour les modèles YOLO11 d'Ultralytics. Ce format stocke les métadonnées et les annotations de l'ensemble de données dans un seul fichier où chaque ligne contient un objet JSON distinct.

Un fichier d'ensemble de données NDJSON contient :

  1. Enregistrement de l'ensemble de données (première ligne) : Contient les métadonnées de l'ensemble de données, y compris le type de tâche, les noms de classe et les informations générales
  2. Enregistrements d'image (lignes suivantes) : Contient les données d'image individuelles, y compris les dimensions, les annotations et les chemins d'accès aux fichiers

Exemple de 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"
}
{
    "type": "image",
    "file": "image1.jpg",
    "url": "https://www.url.com/path/to/image1.jpg",
    "width": 640,
    "height": 480,
    "split": "train",
    "annotations": {
        "boxes": [
            [0, 0.52481, 0.37629, 0.28394, 0.41832],
            [1, 0.73526, 0.29847, 0.19275, 0.33691]
        ]
    }
}

Formats d'annotation par tâche :

  • Détection : "annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
  • Segmentation : "annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
  • Pose : "annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
  • OBB : "annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
  • Classification : "annotations": {"classification": [class_id]}

Exemple d'utilisation

Pour utiliser un ensemble de données NDJSON avec YOLO11, spécifiez simplement le chemin d'accès au .ndjson fichier :

Exemple

from ultralytics import YOLO

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

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640

Avantages du format NDJSON

  • Fichier unique : Toutes les informations de l'ensemble de données sont contenues dans un seul fichier
  • Streaming : Peut traiter de grands ensembles 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 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

Ensembles de données pris en charge

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

  • Argoverse : Un jeu de données contenant des données de suivi 3D et de prévision de mouvement provenant d'environnements urbains avec de riches annotations.
  • COCO : Common Objects in Context (COCO) est un ensemble de données à grande échelle pour la détection d'objets, la segmentation et le légendage avec 80 catégories d'objets.
  • LVIS : Un jeu de données à grande échelle pour la détection d'objets, la segmentation et la légende, avec 1 203 catégories d'objets.
  • COCO8 : Un sous-ensemble plus petit des 4 premières images de COCO train et COCO val, adapté aux tests rapides.
  • COCO8-Grayscale : Une version en niveaux de gris de COCO8 créée en convertissant RVB 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 RVB, utile pour l'évaluation de modèles sensibles au spectre.
  • COCO128 : Un sous-ensemble plus petit des 128 premières images de COCO train et COCO val, adapté aux tests.
  • Global Wheat 2020 : Un jeu de données contenant des images d'épis de blé pour le Global Wheat Challenge 2020.
  • Objects365 : Un jeu de données à grande échelle de haute qualité 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.
  • SKU-110K : Un ensemble de données présentant une détection d'objets dense dans des environnements de vente au détail avec plus de 11 000 images et 1,7 million de boîtes englobantes.
  • HomeObjects-3K Nouveau 🚀 : Un ensemble de données d'articles ménagers d'intérieur comprenant des lits, des chaises, des téléviseurs et plus encore, idéal pour les applications dans l'automatisation de la maison intelligente, la robotique, la réalité augmentée et l'analyse de l'aménagement des pièces.
  • VisDrone : Un jeu de données contenant des données de détection d'objets et de suivi multi-objets provenant d'images capturées 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.
  • Roboflow 100 : Un benchmark diversifié de détection d'objets avec 100 jeux de données couvrant sept domaines d'imagerie pour une évaluation complète du modèle.
  • Brain-tumor : Un jeu de données pour la détection des tumeurs cérébrales comprend des images d'IRM ou de tomodensitométrie avec des détails sur la présence, l'emplacement et les caractéristiques de la tumeur.
  • African-wildlife : Un jeu de données présentant des images de la faune africaine, y compris des buffles, des éléphants, des rhinocéros et des zèbres.
  • Signature : Un jeu de données présentant des images de divers documents avec des signatures annotées, prenant en charge la vérification des documents et la recherche sur la détection des fraudes.
  • Medical-pills : un ensemble de données contenant des images de pilules médicales, annotées pour des applications telles que l'assurance qualité pharmaceutique, le tri des pilules et la conformité réglementaire.

Ajouter votre propre ensemble de données

Si vous avez votre propre jeu de données et que vous souhaitez l'utiliser pour entraîner des modèles de détection au format Ultralytics YOLO, assurez-vous qu'il respecte le format spécifié ci-dessus sous « Format Ultralytics YOLO ». Convertissez vos annotations au format requis et spécifiez les chemins, le nombre de classes et les noms de classes dans le fichier de configuration YAML.

Transférer ou convertir les formats d'étiquettes

Conversion du format de l'ensemble de données COCO au format YOLO

Vous pouvez facilement convertir les étiquettes du format populaire COCO dataset au 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 l'ensemble de données COCO ou tout ensemble de données au format COCO au format Ultralytics YOLO. Le processus transforme les annotations COCO basées sur JSON en format YOLO textuel plus simple, le rendant compatible avec les modèles Ultralytics YOLO.

N'oubliez pas de vérifier si le jeu de données que vous souhaitez utiliser est compatible avec votre 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.

FAQ

Qu'est-ce que le format d'ensemble de données Ultralytics YOLO et comment le structurer ?

Le format Ultralytics YOLO est une configuration structurée pour définir les jeux de données dans vos projets d'entraînement. Il implique la définition des chemins d'accès à vos images d'entraînement, de validation et de test, ainsi qu'aux é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 *.txt fichiers 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é, consultez l'exemple du jeu de données COCO8.

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

Vous pouvez convertir un ensemble 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 vos annotations COCO au format YOLO, permettant une intégration transparente avec les modèles Ultralytics YOLO. Pour plus de détails, consultez la section Portage ou conversion des formats d'étiquettes.

Quels ensembles 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, conçues pour un entraînement YOLO11 efficace. Explorez la liste complète dans la section Jeux de données pris en charge.

Comment démarrer l'entraînement d'un modèle YOLO11 en utilisant mon ensemble de données ?

Pour commencer à entraîner un modèle YOLO11, assurez-vous que votre jeu de données est correctement formaté et que les chemins sont définis dans un fichier YAML. Utilisez le script suivant pour commencer l'entraînement :

Exemple

from ultralytics import YOLO

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

Consultez la section Utilisation 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 l'utilisation de YOLO11 dans diverses applications. Pour une vue d'ensemble complète, visitez le Blog Ultralytics où vous trouverez 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 YOLO11. Pour des exemples spécifiques, consultez la section Utilisation dans la documentation.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 10 jours

Commentaires