Passer au contenu

Segmentation et suivi d'instances avec Ultralytics YOLO11 🚀

Qu'est-ce que la segmentation d'instance ?

La segmentation d'instance est une tâche de vision par ordinateur qui consiste à identifier et à délimiter les objets individuels dans une image au niveau des pixels. Contrairement à la segmentation sémantique qui ne fait que classer les pixels par catégorie, la segmentation d'instance étiquette de manière unique et délimite précisément chaque instance d'objet, ce qui la rend essentielle pour les applications nécessitant une compréhension spatiale détaillée comme l'imagerie médicale, la conduite autonome et l'automatisation industrielle.

Ultralytics YOLO11 fournit de puissantes capacités de segmentation d'instances qui permettent une détection précise des limites des objets tout en conservant la vitesse et l'efficacité qui font la réputation des modèles YOLO.

Il existe deux types de suivi de la segmentation d'instance disponibles dans le package Ultralytics :

  • Segmentation d’instance avec des objets de classe : Chaque objet de classe se voit attribuer une couleur unique pour une séparation visuelle claire.

  • Segmentation d’instance avec suivi d’objets : Chaque piste est représentée par une couleur distincte, ce qui facilite l’identification et le suivi dans les trames vidéo.



Regarder : Segmentation d'instance avec suivi d'objet utilisant Ultralytics YOLO11

Échantillons

Segmentation d'instance Segmentation d'instance + Suivi d'objet
Segmentation d'instance Ultralytics Segmentation d'instance Ultralytics avec suivi d'objet
Segmentation d'instance Ultralytics 😍 Segmentation d'instance Ultralytics avec suivi d'objet 🔥

Segmentation d'instance avec Ultralytics YOLO

# Instance segmentation using Ultralytics YOLO11
yolo solutions isegment show=True

# Pass a source video
yolo solutions isegment source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions isegment classes="[0, 5]"
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("isegment_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize instance segmentation object
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
    # classes=[0, 2],  # segment specific classes i.e, person and car with pretrained model.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = isegment(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

InstanceSegmentation Arguments

Voici un tableau avec les InstanceSegmentation arguments :

Argument Type Par défaut Description
model str None Chemin d'accès au fichier de modèle Ultralytics YOLO.
region list '[(20, 400), (1260, 400)]' Liste des points définissant la région de comptage.

Vous pouvez également profiter de track arguments dans le InstanceSegmentation solution :

Argument Type Par défaut Description
tracker str 'botsort.yaml' Spécifie l'algorithme de suivi à utiliser, par exemple, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Définit le seuil de confiance pour les détections ; des valeurs plus basses permettent de suivre plus d'objets, mais peuvent inclure de faux positifs.
iou float 0.5 Définit le seuil Intersection sur Union (IoU) pour filtrer les détections qui se chevauchent.
classes list None Filtre les résultats par index de classe. Par exemple, classes=[0, 2, 3] suit uniquement les classes spécifiées.
verbose bool True Contrôle l'affichage des résultats de suivi, fournissant une sortie visuelle des objets suivis.
device str None Spécifie le périphérique pour l'inférence (par exemple, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle.

De plus, les arguments de visualisation suivants sont disponibles :

Argument Type Par défaut Description
show bool False Si True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour visuel immédiat pendant le développement ou les tests.
line_width None or int None Spécifie la largeur de ligne des boîtes englobantes. Si None, la largeur de ligne est automatiquement ajustée en fonction de la taille de l'image. Fournit une personnalisation visuelle pour plus de clarté.
show_conf bool True Affiche le score de confiance pour chaque détection à côté de l'étiquette. Donne un aperçu de la certitude du modèle pour chaque détection.
show_labels bool True Affiche les étiquettes pour chaque détection dans la sortie visuelle. Fournit une compréhension immédiate des objets détectés.

Applications de la segmentation d'instance

La segmentation d'instance avec YOLO11 a de nombreuses applications concrètes dans divers secteurs :

Gestion des déchets et recyclage

YOLO11 peut être utilisé dans les installations de gestion des déchets pour identifier et trier différents types de matériaux. Le modèle peut segmenter les déchets plastiques, le carton, le métal et autres matériaux recyclables avec une grande précision, permettant aux systèmes de tri automatisés de traiter les déchets plus efficacement. Ceci est particulièrement précieux étant donné que seulement environ 10 % des 7 milliards de tonnes de déchets plastiques générés dans le monde sont recyclés.

Véhicules autonomes

Dans les voitures autonomes, la segmentation d'instance aide à identifier et à suivre les piétons, les véhicules, les panneaux de signalisation et autres éléments de la route au niveau du pixel. Cette compréhension précise de l'environnement est cruciale pour la navigation et les décisions de sécurité. Les performances en temps réel de YOLO11 le rendent idéal pour ces applications sensibles au facteur temps.

Imagerie médicale

La segmentation d'instance peut identifier et délimiter les tumeurs, les organes ou les structures cellulaires dans les analyses médicales. La capacité de YOLO11 à délimiter précisément les contours des objets la rend précieuse pour le diagnostic médical et la planification du traitement.

Surveillance de chantier

Sur les chantiers de construction, la segmentation d'instance peut suivre les machines lourdes, les travailleurs et les matériaux. Cela contribue à assurer la sécurité en surveillant les positions des équipements et en détectant lorsque les travailleurs pénètrent dans des zones dangereuses, tout en optimisant le flux de travail et l'allocation des ressources.

Remarque

Pour toute question, n'hésitez pas à la poser dans la section Problèmes d'Ultralytics ou dans la section de discussion mentionnée ci-dessous.

FAQ

Comment effectuer une segmentation d'instance en utilisant Ultralytics YOLO11 ?

Pour effectuer une segmentation d'instance à l'aide d'Ultralytics YOLO11, initialisez le modèle YOLO avec une version de segmentation de YOLO11 et traitez les trames vidéo à travers celui-ci. Voici un exemple de code simplifié :

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init InstanceSegmentation
isegment = solutions.InstanceSegmentation(
    show=True,  # display the output
    model="yolo11n-seg.pt",  # model="yolo11n-seg.pt" for object segmentation using YOLO11.
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or processing is complete.")
        break
    results = isegment(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Apprenez-en davantage sur la segmentation d'instance dans le guide Ultralytics YOLO11.

Quelle est la différence entre la segmentation d'instance et le suivi d'objet dans Ultralytics YOLO11 ?

La segmentation d'instance identifie et délimite les objets individuels dans une image, en attribuant à chaque objet une étiquette et un masque uniques. Le suivi d'objet étend cela en attribuant des identifiants cohérents aux objets à travers les trames vidéo, facilitant le suivi continu des mêmes objets au fil du temps. Lorsqu'elles sont combinées, comme dans l'implémentation de YOLO11, vous obtenez de puissantes capacités pour analyser le mouvement et le comportement des objets dans les vidéos tout en conservant des informations précises sur les limites.

Pourquoi devrais-je utiliser Ultralytics YOLO11 pour la segmentation d'instances et le suivi plutôt que d'autres modèles comme Mask R-CNN ou Faster R-CNN ?

Ultralytics YOLO11 offre des performances en temps réel, une précision supérieure et une facilité d’utilisation par rapport à d’autres modèles comme Mask R-CNN ou Faster R-CNN. YOLO11 traite les images en un seul passage (détection en une seule étape), ce qui le rend beaucoup plus rapide tout en conservant une grande précision. Il offre également une intégration transparente avec Ultralytics HUB, permettant aux utilisateurs de gérer efficacement les modèles, les ensembles de données et les pipelines d’entraînement. Pour les applications nécessitant à la fois vitesse et précision, YOLO11 offre un équilibre optimal.

Existe-t-il des ensembles de données fournis par Ultralytics qui conviennent à la formation de modèles YOLO11 pour la segmentation et le suivi d'instances ?

Oui, Ultralytics propose plusieurs ensembles de données adaptés à l'entraînement des modèles YOLO11 pour la segmentation d'instance, notamment COCO-Seg, COCO8-Seg (un sous-ensemble plus petit pour des tests rapides), Package-Seg et Crack-Seg. Ces ensembles de données sont fournis avec des annotations au niveau des pixels nécessaires pour les tâches de segmentation d'instance. Pour des applications plus spécialisées, vous pouvez également créer des ensembles de données personnalisés en suivant le format Ultralytics. Des informations complètes sur les ensembles de données et des instructions d'utilisation sont disponibles dans la documentation Ultralytics Datasets.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 4 mois

Commentaires