Instanzsegmentierung und -verfolgung mit Ultralytics YOLO11 🚀
Was ist Instanzsegmentierung?
Instanzsegmentierung ist eine Computer-Vision-Aufgabe, bei der einzelne Objekte in einem Bild auf Pixelebene identifiziert und umrissen werden. Im Gegensatz zur semantischen Segmentierung, die Pixel nur nach Kategorien klassifiziert, kennzeichnet die Instanzsegmentierung jede Objektinstanz eindeutig und grenzt sie präzise ab, was sie für Anwendungen wie medizinische Bildgebung, autonomes Fahren und industrielle Automatisierung unerlässlich macht, die ein detailliertes räumliches Verständnis erfordern.
Ultralytics YOLO11 bietet leistungsstarke Funktionen zur Instanzsegmentierung, die eine präzise Erkennung von Objektgrenzen ermöglichen und gleichzeitig die Geschwindigkeit und Effizienz beibehalten, für die YOLO-Modelle bekannt sind.
Es gibt zwei Arten von Instance-Segmentation-Tracking, die im Ultralytics-Paket verfügbar sind:
-
Instanzsegmentierung mit Klassenobjekten: Jedem Klassenobjekt wird eine eindeutige Farbe für eine klare visuelle Trennung zugewiesen.
-
Instanzsegmentierung mit Objektverfolgung: Jede Verfolgung wird durch eine eigene Farbe dargestellt, was die einfache Identifizierung und Verfolgung über Videobilder hinweg ermöglicht.
Ansehen: Instanzsegmentierung mit Objektverfolgung unter Verwendung von Ultralytics YOLO11
Stichproben
Instanzsegmentierung | Instanzsegmentierung + Objektverfolgung |
---|---|
![]() |
![]() |
Ultralytics Instanzsegmentierung 😍 | 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 Modelldatei. |
region |
list |
'[(20, 400), (1260, 400)]' |
Liste der Punkte, die den Zählbereich definieren. |
Sie können auch profitieren von track
Argumente innerhalb der InstanceSegmentation
Lösung:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Gibt den zu verwendenden Tracking-Algorithmus an, z. B. bytetrack.yaml oder botsort.yaml . |
conf |
float |
0.3 |
Legt den Konfidenzschwellenwert für Erkennungen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber auch falsch positive Ergebnisse liefern. |
iou |
float |
0.5 |
Legt den Intersection over Union (IoU)-Schwellenwert zum Filtern überlappender Erkennungen fest. |
classes |
list |
None |
Filtert Ergebnisse nach Klassenindex. Zum Beispiel, classes=[0, 2, 3] verfolgt nur die angegebenen Klassen. |
verbose |
bool |
True |
Steuert die Anzeige der Tracking-Ergebnisse und bietet 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 es Benutzern, zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung zu wählen. |
Darüber hinaus stehen die folgenden Visualisierungsargumente zur Verfügung:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
show |
bool |
False |
Wenn True aktiviert, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens. |
line_width |
None or int |
None |
Gibt die Linienbreite der Begrenzungsrahmen an. Wenn None , wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet eine visuelle Anpassung für mehr Klarheit. |
show_conf |
bool |
True |
Zeigt den Konfidenzwert für jede Erkennung zusammen mit der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung. |
show_labels |
bool |
True |
Zeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte. |
Anwendungen der Instanzsegmentierung
Die Instanzsegmentierung mit YOLO11 hat zahlreiche Anwendungen in der realen Welt in verschiedenen Branchen:
Abfallwirtschaft und Recycling
YOLO11 kann in Abfallentsorgungsanlagen eingesetzt werden, um verschiedene Arten von Materialien zu identifizieren und zu sortieren. Das Modell kann Kunststoffabfälle, Pappe, Metall und andere Wertstoffe mit hoher Präzision segmentieren, sodass automatisierte Sortiersysteme Abfälle 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 dabei, Fußgänger, Fahrzeuge, Verkehrszeichen und andere Straßenelemente auf Pixelebene zu identifizieren und zu verfolgen. Dieses präzise Verständnis der Umgebung ist entscheidend für Navigations- und Sicherheitsentscheidungen. Die Echtzeit-Performance 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.
Baustellenüberwachung
Auf Baustellen kann die Instanzsegmentierung schwere Maschinen, Arbeiter und Materialien verfolgen. Dies trägt zur Gewährleistung der Sicherheit bei, indem die Positionen der Geräte überwacht und erkannt wird, wenn Arbeiter Gefahrenbereiche betreten, während gleichzeitig der Workflow und die Ressourcenzuweisung optimiert werden.
Hinweis
Bei Fragen können Sie diese gerne im Ultralytics Issue Bereich oder im unten erwähnten Diskussionsbereich posten.
FAQ
Wie führe ich eine Instanzsegmentierung mit Ultralytics YOLO11 durch?
Um Instanzsegmentierung mit Ultralytics YOLO11 durchzuführen, initialisieren Sie das YOLO-Modell mit einer Segmentierungsversion von YOLO11 und verarbeiten Sie Videoframes damit. Hier ist ein vereinfachtes Codebeispiel:
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()
Erfahren Sie mehr über Instanzsegmentierung im Ultralytics YOLO11-Leitfaden.
Was ist der Unterschied zwischen Instanzsegmentierung und Objektverfolgung in Ultralytics YOLO11?
Die Instanzsegmentierung identifiziert und umreißt einzelne Objekte innerhalb eines Bildes und gibt jedem Objekt eine eindeutige Bezeichnung und Maske. Die Objektverfolgung erweitert dies, indem sie Objekten über Videobilder hinweg konsistente IDs zuweist, was die kontinuierliche Verfolgung derselben Objekte im Zeitverlauf erleichtert. In Kombination, wie in der Implementierung von YOLO11, erhalten Sie leistungsstarke Funktionen zur Analyse von Objektbewegungen und -verhalten in Videos unter Beibehaltung präziser Grenzinformationen.
Warum sollte ich Ultralytics YOLO11 für Instanzsegmentierung und -verfolgung gegenüber anderen Modellen wie Mask R-CNN oder Faster R-CNN verwenden?
Ultralytics YOLO11 bietet im Vergleich zu anderen Modellen wie Mask R-CNN oder Faster R-CNN Echtzeit-Performance, überlegene Genauigkeit und Benutzerfreundlichkeit. YOLO11 verarbeitet Bilder in einem einzigen Durchgang (One-Stage-Detection), wodurch es deutlich schneller ist und gleichzeitig eine hohe Präzision beibehält. Es bietet auch eine nahtlose Integration mit Ultralytics HUB, sodass 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 von Ultralytics bereitgestellte Datensätze, die sich für das Training von YOLO11-Modellen für Instanzsegmentierung und -verfolgung eignen?
Ja, Ultralytics bietet mehrere Datensätze an, die sich für das Training von YOLO11-Modellen für die Instanzsegmentierung eignen, darunter COCO-Seg, COCO8-Seg (eine kleinere Teilmenge für schnelle Tests), Package-Seg und Crack-Seg. Diese Datensätze enthalten Annotationen auf Pixelebene, die für Instanzsegmentierungsaufgaben benötigt werden. Für speziellere Anwendungen können Sie auch benutzerdefinierte Datensätze im Ultralytics-Format erstellen. Vollständige Datensatzinformationen und Gebrauchsanweisungen finden Sie in der Ultralytics Datasets Dokumentation.