Passer au contenu

Segmentation d'instances et suivi avec Ultralytics YOLO26 🚀

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 YOLO26 offre de puissantes capacités de segmentation d'instances qui permettent une détection précise des limites d'objets tout en maintenant la vitesse et l'efficacité pour lesquelles les modèles YOLO sont connus.

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'instances avec suivi d'objets à l'aide d'Ultralytics YOLO26

Échantillons

Segmentation d'instanceSegmentation d'instance + Suivi d'objet
Segmentation d'instance UltralyticsSegmentation 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 YOLO26
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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
    # classes=[0, 2],  # segment specific classes, e.g., person and car with the 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 :

ArgumentTypePar défautDescription
modelstrNoneChemin d'accès à un fichier de modèle Ultralytics YOLO.
regionlist'[(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 :

ArgumentTypePar défautDescription
trackerstr'botsort.yaml'Spécifie l'algorithme de suivi à utiliser, par exemple, bytetrack.yaml ou botsort.yaml.
conffloat0.1Dé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.
ioufloat0.7Définit le seuil Intersection over Union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par index de classe. Par exemple, classes=[0, 2, 3] suit uniquement les classes spécifiées.
verboseboolTrueContrôle l'affichage des résultats de suivi, fournissant une sortie visuelle des objets suivis.
devicestrNoneSpé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 :

ArgumentTypePar défautDescription
showboolFalseSi 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_widthint or NoneNoneSpé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_confboolTrueAffiche 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_labelsboolTrueAffiche 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'instances avec YOLO26 a de nombreuses applications réelles dans diverses industries :

Gestion des déchets et recyclage

YOLO26 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 d'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'instances aide à identifier et à suivre les piétons, les véhicules, les panneaux de signalisation et d'autres éléments routiers 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 YOLO26 le rendent idéal pour ces applications sensibles au temps.

Imagerie médicale

La segmentation d'instances peut identifier et délimiter les tumeurs, les organes ou les structures cellulaires dans les scanners médicaux. La capacité de YOLO26 à délimiter précisément les contours des objets le rend précieux 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'instances à l'aide d'Ultralytics YOLO26 ?

Pour effectuer une segmentation d'instances à l'aide d'Ultralytics YOLO26, initialisez le modèle YOLO avec une version de segmentation de YOLO26 et traitez les cadres 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="yolo26n-seg.pt",  # model="yolo26n-seg.pt" for object segmentation using YOLO26.
)

# 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'instances dans le guide Ultralytics YOLO26.

Quelle est la différence entre la segmentation d'instances et le suivi d'objets dans Ultralytics YOLO26 ?

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

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

Ultralytics YOLO26 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. YOLO26 traite les images en un seul passage (détection en une étape), ce qui le rend considérablement plus rapide tout en maintenant une haute précision. Il offre également une intégration transparente avec la plateforme Ultralytics, permettant aux utilisateurs de gérer efficacement les modèles, les jeux de données et les pipelines d'entraînement. Pour les applications nécessitant à la fois rapidité et précision, YOLO26 offre un équilibre optimal.

Existe-t-il des jeux de données fournis par Ultralytics adaptés à l'entraînement des modèles YOLO26 pour la segmentation d'instances et le suivi ?

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



📅 Créé il y a 2 ans ✏️ Mis à jour il y a 7 jours
glenn-jocherRizwanMunawarRizwanMunawarpderrengerleonnilUltralyticsAssistantMatthewNoyceIvorZhu331

Commentaires