Skip to content

Aperçu des ensembles de données de segmentation des instances

Formats de données pris en charge

Ultralytics YOLO format

Le format de l'étiquette du jeu de données utilisé pour l'entraînement des modèles de segmentation de YOLO est le suivant :

  1. Un fichier texte par image : À chaque image de l'ensemble de données correspond un fichier texte portant le même nom que le fichier image et l'extension ".txt".
  2. Une ligne par objet : Chaque ligne du fichier texte correspond Ă  une instance d'objet dans l'image.
  3. Informations sur l'objet par ligne : Chaque ligne contient les informations suivantes sur l'instance d'objet :
    • Indice de classe de l'objet : Un nombre entier reprĂ©sentant la classe de l'objet (par exemple, 0 pour une personne, 1 pour une voiture, etc.)
    • CoordonnĂ©es de dĂ©limitation de l'objet : Les coordonnĂ©es de dĂ©limitation autour de la zone du masque, normalisĂ©es pour ĂŞtre comprises entre 0 et 1.

Le format d'une seule ligne dans le fichier de jeu de données de segmentation est le suivant :

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

Dans ce format, <class-index> est l'indice de la classe de l'objet, et <x1> <y1> <x2> <y2> ... <xn> <yn> sont les coordonnées du masque de segmentation de l'objet. Les coordonnées sont séparées par des espaces.

Voici un exemple du format du jeu de données YOLO pour une seule image avec deux objets composés d'un segment à 3 points et d'un segment à 5 points.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104

Astuce

  • La longueur de chaque ligne ne doit pas nĂ©cessairement ĂŞtre Ă©gale.
  • Chaque Ă©tiquette de segmentation doit avoir un minimum de 3 points xy: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Format YAML du jeu de données

Le cadre Ultralytics utilise un format de fichier YAML pour définir l'ensemble de données et la configuration du modèle pour la formation des modèles de détection. Voici un exemple du format YAML utilisé pour définir un ensemble de données de détection :

# 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: ../datasets/coco8-seg  # 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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

Le train et val indiquent les chemins d'accès aux répertoires contenant respectivement les images d'entraînement et de validation.

names est un dictionnaire de noms de classes. L'ordre des noms doit correspondre à l'ordre des indices des classes d'objets dans les fichiers du jeu de données YOLO .

Utilisation

Exemple

from ultralytics import YOLO

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

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

Ensembles de données pris en charge

Ensembles de données pris en charge

  • COCO: un ensemble de donnĂ©es complet pour la dĂ©tection, la segmentation et la lĂ©gende des objets, comprenant plus de 200 000 images Ă©tiquetĂ©es dans un large Ă©ventail de catĂ©gories.
  • COCO8-seg: Un sous-ensemble compact de 8 images de COCO conçu pour tester rapidement l'apprentissage du modèle de segmentation, idĂ©al pour les vĂ©rifications CI et la validation du flux de travail dans le... ultralytics dĂ©pĂ´t.
  • Carparts-seg: Un ensemble de donnĂ©es spĂ©cialisĂ© axĂ© sur la segmentation des pièces de voiture, idĂ©al pour les applications automobiles. Il comprend une variĂ©tĂ© de vĂ©hicules avec des annotations dĂ©taillĂ©es des composants individuels de la voiture.
  • Crack-seg: un jeu de donnĂ©es adaptĂ© Ă  la segmentation des fissures dans diverses surfaces. Essentiel pour l'entretien des infrastructures et le contrĂ´le de la qualitĂ©, il fournit des images dĂ©taillĂ©es permettant d'entraĂ®ner des modèles pour identifier les faiblesses structurelles.
  • Package-seg: Un jeu de donnĂ©es dĂ©diĂ© Ă  la segmentation des diffĂ©rents types de matĂ©riaux et de formes d'emballage. Il est particulièrement utile pour la logistique et l'automatisation des entrepĂ´ts, en aidant au dĂ©veloppement de systèmes de manutention et de tri des colis.

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 segmentation avec le format Ultralytics YOLO , assure-toi qu'il respecte le format spécifié ci-dessus sous "Ultralytics YOLO format ". Convertis tes annotations au format requis et spécifie les chemins, le nombre de classes et les noms des classes dans le fichier de configuration YAML.

Porter ou convertir les formats d'Ă©tiquettes

Format des ensembles de données COCO au format YOLO

Tu peux facilement convertir les étiquettes du format de jeu de données populaire 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/", use_segments=True)

Cet outil de conversion peut être utilisé pour convertir le jeu de données COCO ou tout autre jeu de données au format COCO au format Ultralytics YOLO .

N'oublie pas de vérifier que le jeu de données que tu veux utiliser est compatible avec ton modèle et qu'il respecte les conventions de format nécessaires. Des ensembles de données correctement formatés sont essentiels pour former des modèles de détection d'objets performants.

Auto-Annotation

L'auto-annotation est une fonctionnalité essentielle qui te permet de générer un ensemble de données de segmentation à l'aide d'un modèle de détection pré-entraîné. Elle te permet d'annoter rapidement et précisément un grand nombre d'images sans qu'il soit nécessaire de procéder à un étiquetage manuel, ce qui représente un gain de temps et d'efforts.

Générer un ensemble de données de segmentation à l'aide d'un modèle de détection

Pour auto-annoter ton jeu de données à l'aide du cadre Ultralytics , tu peux utiliser la fonction auto_annotate comme indiqué ci-dessous :

Exemple

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")
Argument Type Description DĂ©faut
data str Chemin d'accès à un dossier contenant des images à annoter. None
det_model str, optional Modèle de détection YOLO pré-entraîné. La valeur par défaut est 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Modèle de segmentation pré-entraîné SAM . La valeur par défaut est 'sam_b.pt'. 'sam_b.pt'
device str, optional Appareil sur lequel les modèles doivent être exécutés. La valeur par défaut est une chaîne vide (CPU ou GPU, si disponible). ''
output_dir str or None, optional Répertoire où enregistrer les résultats annotés. Par défaut, il s'agit d'un 'labels' dans le même répertoire que 'data'. None

Le auto_annotate La fonction prend le chemin de tes images, ainsi que des arguments facultatifs pour spécifier la détection pré-entraînée et la méthode de détection. SAM modèles de segmentation, l'appareil sur lequel exécuter les modèles et le répertoire de sortie pour sauvegarder les résultats annotés.

En tirant parti de la puissance des modèles pré-entraînés, l'auto-annotation peut réduire considérablement le temps et les efforts nécessaires à la création d'ensembles de données de segmentation de haute qualité. Cette fonction est particulièrement utile pour les chercheurs et les développeurs qui travaillent avec de grandes collections d'images, car elle leur permet de se concentrer sur le développement et l'évaluation des modèles plutôt que sur l'annotation manuelle.

FAQ

Quels formats de données Ultralytics YOLO prend-il en charge pour la segmentation des instances ?

Ultralytics YOLO prend en charge plusieurs formats d'ensembles de données pour la segmentation des instances, le format principal étant son propre format Ultralytics YOLO . Chaque image de ton jeu de données doit être accompagnée d'un fichier texte contenant des informations sur l'objet segmenté en plusieurs lignes (une ligne par objet), répertoriant l'indice de classe et les coordonnées de délimitation normalisées. Pour obtenir des instructions plus détaillées sur le format de l'ensemble de données YOLO , consulte la page Vue d'ensemble des ensembles de données de segmentation d'instance.

Comment puis-je convertir les annotations des jeux de données COCO au format YOLO ?

La conversion des annotations au format COCO au format YOLO est très simple à l'aide des outils Ultralytics . Tu peux utiliser l'outil convert_coco de la fonction ultralytics.data.converter module :

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Ce script convertit les annotations de ton jeu de données COCO au format requis YOLO , afin qu'elles soient adaptées à l'entraînement de tes modèles YOLO . Pour plus de détails, voir Porter ou convertir les formats d'étiquettes.

Comment préparer un fichier YAML pour l'entraînement des modèles Ultralytics YOLO ?

Pour préparer un fichier YAML afin d'entraîner les modèles YOLO avec Ultralytics, tu dois définir les chemins d'accès aux ensembles de données et les noms des classes. Voici un exemple de configuration YAML :

path: ../datasets/coco8-seg  # dataset root dir
train: images/train  # train images (relative to 'path') 
val: images/val  # val images (relative to 'path') 

names:
  0: person
  1: bicycle
  2: car
  # ...

Assure-toi de mettre à jour les chemins et les noms de classe en fonction de ton jeu de données. Pour plus d'informations, consulte la section Format YAML des jeux de données.

Qu'est-ce que la fonction d'auto-annotation dans Ultralytics YOLO ?

L'auto-annotation dans Ultralytics YOLO te permet de générer des annotations de segmentation pour ton ensemble de données à l'aide d'un modèle de détection pré-entraîné. Cela réduit considérablement le besoin d'étiquetage manuel. Tu peux utiliser la fonction auto_annotate fonctionne comme suit :

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt")

Cette fonction automatise le processus d'annotation, ce qui le rend plus rapide et plus efficace. Pour plus de détails, explore la section Annotation automatique.



Créé le 2023-11-12, Mis à jour le 2024-07-04
Auteurs : glenn-jocher (12), Burhan-Q (1)

Commentaires