Zum Inhalt springen

Segmentierung und Verfolgung von Instanzen mit Ultralytics YOLO11 🚀

Was ist Instanzsegmentierung?

Bei der Instanzsegmentierung handelt es sich um eine Aufgabe der Computer Vision, bei der einzelne Objekte in einem Bild auf Pixelebene identifiziert und umrissen werden. Im Gegensatz zur semantischen Segmentierung, bei der die Pixel nur nach Kategorien klassifiziert werden, wird bei der Instanzsegmentierung jedes Objekt eindeutig gekennzeichnet und genau abgegrenzt. Dies ist entscheidend für Anwendungen, die ein detailliertes räumliches Verständnis erfordern, wie medizinische Bildgebung, autonomes Fahren und industrielle Automatisierung.

Ultralytics YOLO11 bietet leistungsstarke Instanzsegmentierungsfunktionen, die eine präzise Erkennung von Objektgrenzen ermöglichen und gleichzeitig die Geschwindigkeit und Effizienz beibehalten, für die YOLO bekannt sind.

Es gibt zwei Arten der Instanzsegmentierungsverfolgung, die im Paket Ultralytics verfügbar sind:

  • Instanzsegmentierung mit Klassenobjekten: Jedem Klassenobjekt wird eine eindeutige Farbe zugewiesen, um eine klare visuelle Trennung zu ermöglichen.

  • Instanzsegmentierung mit Objektspuren: Jede Spur wird durch eine eindeutige Farbe dargestellt, was eine einfache Identifizierung und Verfolgung über Videobilder hinweg ermöglicht.



Beobachten: Instanz-Segmentierung mit Objektverfolgung durch Ultralytics YOLO11

Proben

Instanz-Segmentierung Instanz-Segmentierung + Objektverfolgung
Ultralytics Instanz-Segmentierung Ultralytics Instanzsegmentierung mit Objektverfolgung
Ultralytics Segmentierung der Instanz 😍. Ultralytics Instanzsegmentierung mit Objektverfolgung 🔥

Instanzsegmentierung mit 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 Argumente

Hier ist eine Tabelle mit den InstanceSegmentation Argumente:

Argument Typ Standard Beschreibung
model str None Pfad zur Ultralytics YOLO .
region list [(20, 400), (1260, 400)] Liste der Punkte, die den Zählbereich definieren.

Sie können auch die folgenden Vorteile nutzen track Argumente innerhalb der InstanceSegmentation Lösung:

Argument Typ Standard Beschreibung
tracker str 'botsort.yaml' Gibt den zu verwendenden Verfolgungsalgorithmus an, z. B., bytetrack.yaml oder botsort.yaml.
conf float 0.3 Legt die Konfidenzschwelle für Erkennungen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber auch zu falsch positiven Ergebnissen führen.
iou float 0.5 Legt den Schwellenwert für die Überschneidung über die Vereinigung (IoU) zum Filtern von überlappenden Erkennungen fest.
classes list None Filtert die Ergebnisse nach Klassenindex. Zum Beispiel, classes=[0, 2, 3] verfolgt nur die angegebenen Klassen.
verbose bool True Steuert die Anzeige der Verfolgungsergebnisse und liefert eine visuelle Ausgabe der verfolgten Objekte.
device str None Gibt das Gerät für die Inferenz an (z.B., cpu, cuda:0 oder 0). Ermöglicht dem Benutzer die Auswahl zwischen CPU, einem bestimmten GPU oder anderen Rechengeräten für die Modellausführung.

Außerdem sind die folgenden Visualisierungsargumente verfügbar:

Argument Typ Standard Beschreibung
show bool False Wenn Truezeigt die kommentierten Bilder oder Videos in einem Fenster an. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens.
line_width None or int None Gibt die Linienbreite von Begrenzungsrahmen an. Wenn Nonewird die Linienbreite automatisch an die Bildgröße angepasst. Bietet visuelle Anpassung für Klarheit.

Anwendungen der Instanzensegmentierung

Die Instanzsegmentierung mit YOLO11 hat zahlreiche praktische Anwendungen in verschiedenen Branchen:

Abfallwirtschaft und Recycling

YOLO11 kann in Abfallentsorgungseinrichtungen zur Identifizierung und Sortierung verschiedener Materialtypen eingesetzt werden. Das Modell kann Kunststoffabfälle, Pappe, Metall und andere Wertstoffe mit hoher Präzision trennen, so dass automatische Sortiersysteme den Abfall effizienter verarbeiten können. Dies ist besonders wertvoll, wenn man bedenkt, dass nur etwa 10 % der 7 Milliarden Tonnen Kunststoffabfälle, die weltweit anfallen, recycelt werden.

Autonome Fahrzeuge

In selbstfahrenden Autos hilft die Instanzsegmentierung bei der Identifizierung und Verfolgung von Fußgängern, Fahrzeugen, Verkehrszeichen und anderen Straßenelementen auf Pixelebene. Dieses präzise Verständnis der Umgebung ist entscheidend für Navigations- und Sicherheitsentscheidungen. Die Echtzeitleistung von YOLO11 macht es ideal für diese zeitkritischen Anwendungen.

Medizinische Bildgebung

Die Instanzsegmentierung kann Tumore, Organe oder zelluläre Strukturen in medizinischen Scans identifizieren und umreißen. Die Fähigkeit von YOLO11, Objektgrenzen präzise abzugrenzen, macht es wertvoll für die medizinische Diagnostik und Behandlungsplanung.

Überwachung der Baustelle

Auf Baustellen kann die Instanzsegmentierung schwere Maschinen, Arbeiter und Materialien verfolgen. Dies trägt dazu bei, die Sicherheit zu gewährleisten, indem die Positionen der Geräte überwacht und erkannt werden, wenn Arbeiter gefährliche Bereiche betreten, während gleichzeitig der Arbeitsablauf und die Ressourcenzuweisung optimiert werden.

Hinweis

Wenn Sie Fragen haben, können Sie diese gerne im BereichUltralytics oder im unten genannten Diskussionsbereich stellen.

FAQ

Wie führe ich eine Instanzsegmentierung mit Ultralytics YOLO11 durch?

Um eine Instanzsegmentierung mit Ultralytics YOLO11 durchzuführen, initialisieren Sie das Modell YOLO mit einer Segmentierungsversion von YOLO11 und verarbeiten Sie Videobilder damit. Hier ist ein vereinfachtes Code-Beispiel:

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()

Weitere Informationen über die Segmentierung von Instanzen finden Sie in der AnleitungUltralytics YOLO11 .

Was ist der Unterschied zwischen Instanzsegmentierung und Objektverfolgung in Ultralytics YOLO11 ?

Bei der Instanzsegmentierung werden einzelne Objekte innerhalb eines Bildes identifiziert und umrissen, wobei jedem Objekt eine eindeutige Kennzeichnung und Maske zugewiesen wird. Die Objektverfolgung erweitert dies, indem sie Objekten über Videobilder hinweg konsistente IDs zuweist und so die kontinuierliche Verfolgung derselben Objekte über die Zeit erleichtert. Kombiniert man dies, wie in der YOLO11, erhält man leistungsstarke Funktionen für die Analyse von Objektbewegungen und -verhalten in Videos unter Beibehaltung präziser Grenzinformationen.

Warum sollte ich Ultralytics YOLO11 zum Beispiel für Segmentierung und Tracking gegenüber anderen Modellen wie Mask R-CNN oder Faster R-CNN verwenden?

Ultralytics YOLO11 bietet Echtzeitleistung, überragende Genauigkeit und Benutzerfreundlichkeit im Vergleich zu anderen Modellen wie Mask R-CNN oder Faster R-CNN. YOLO11 verarbeitet Bilder in einem einzigen Durchgang (einstufige Erkennung) und ist damit deutlich schneller bei gleichbleibend hoher Präzision. Außerdem bietet es eine nahtlose Integration mit Ultralytics HUB, so dass die Benutzer Modelle, Datensätze und Trainingspipelines effizient verwalten können. Für Anwendungen, die sowohl Geschwindigkeit als auch Genauigkeit erfordern, bietet YOLO11 ein optimales Gleichgewicht.

Gibt es Datensätze, die von Ultralytics zur Verfügung gestellt werden und für das Training von YOLO11 -Modellen, z. B. für Segmentierung und Tracking, geeignet sind?

Ja, Ultralytics bietet mehrere Datensätze an, die sich für das Training von YOLO11 für die Instanzsegmentierung eignen, darunter COCO-Seg, COCO8-Seg (ein kleinerer Teilsatz für schnelle Tests), Package-Seg und Crack-Seg. Diese Datensätze enthalten Anmerkungen auf Pixelebene, die für Instanzsegmentierungsaufgaben benötigt werden. Für speziellere Anwendungen können Sie auch benutzerdefinierte Datensätze nach dem Ultralytics erstellen. Vollständige Informationen zu den Datensätzen und Anweisungen zur Verwendung finden Sie in der Ultralytics Datasets-Dokumentation.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 5 Tagen

Kommentare