Objektzählung mit Ultralytics YOLO11
Was ist Objektzählung?
Objektzählung mit Ultralytics YOLO11 beinhaltet die genaue Identifizierung und Zählung spezifischer Objekte in Videos und Kamerastreams. YOLO11 zeichnet sich durch Echtzeitanwendungen aus und bietet dank seiner hochmodernen Algorithmen und Deep-Learning-Fähigkeiten eine effiziente und präzise Objektzählung für verschiedene Szenarien wie die Analyse von Menschenmengen und Überwachung.
Beobachten: Klassenweise Objektzählung mit Ultralytics YOLOv8
Vorteile der Objektzählung
- Optimierung der Ressourcen: Das Zählen von Objekten erleichtert die effiziente Verwaltung von Ressourcen, indem es genaue Zählungen liefert und so die Ressourcenzuweisung in Anwendungen wie der Bestandsverwaltung optimiert.
- Erhöhte Sicherheit: Die Objektzählung verbessert die Sicherheit und Überwachung, indem sie Objekte genau verfolgt und zählt und so zur proaktiven Erkennung von Bedrohungen beiträgt.
- Informierte Entscheidungsfindung: Die Objektzählung bietet wertvolle Erkenntnisse für die Entscheidungsfindung und die Optimierung von Prozessen im Einzelhandel, im Verkehrsmanagement und in verschiedenen anderen Bereichen.
Anwendungen in der realen Welt
Logistik | Aquakultur |
---|---|
![]() |
![]() |
Förderband-Paketzählung mit Ultralytics YOLO11 | Fischzählung im Meer mit Ultralytics YOLO11 |
Objektzählung mit Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# 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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml", # choose trackers i.e "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(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
ObjectCounter
Argumente
Hier ist eine Tabelle mit den ObjectCounter
Argumente:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
model |
str |
None |
Pfad zur Ultralytics YOLO . |
show_in |
bool |
True |
Kennzeichen, mit dem gesteuert wird, ob die Zählungen im Videostrom angezeigt werden sollen. |
show_out |
bool |
True |
Kennzeichen, mit dem gesteuert wird, ob die Anzahl der Ausgänge im Video-Stream angezeigt werden soll. |
region |
list |
[(20, 400), (1260, 400)] |
Liste der Punkte, die den Zählbereich definieren. |
Die ObjectCounter
Lösung ermöglicht die Verwendung mehrerer track
Argumente:
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. |
Zusätzlich werden die unten aufgeführten Visualisierungsargumente unterstützt:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
show |
bool |
False |
Wenn True zeigt 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 None wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet visuelle Anpassung für Klarheit. |
FAQ
Wie zähle ich Objekte in einem Video mit Ultralytics YOLO11 ?
Zum Zählen von Objekten in einem Video mit Ultralytics YOLO11 können Sie die folgenden Schritte ausführen:
- Importieren Sie die erforderlichen Bibliotheken (
cv2
,ultralytics
). - Definieren Sie den Zählbereich (z. B. ein Polygon, eine Linie usw.).
- Richten Sie die Videoaufnahme ein und initialisieren Sie den Objektzähler.
- Verarbeiten Sie jedes Einzelbild, um Objekte zu verfolgen und sie innerhalb des festgelegten Bereichs zu zählen.
Hier ist ein einfaches Beispiel für die Zählung in einer Region:
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")
Für fortgeschrittene Konfigurationen und Optionen bietet sich die RegionCounter-Lösung zum gleichzeitigen Zählen von Objekten in mehreren Regionen an.
Welche Vorteile bietet die Verwendung von Ultralytics YOLO11 für die Objektzählung?
Die Verwendung von Ultralytics YOLO11 für die Objektzählung bietet mehrere Vorteile:
- Ressourcen-Optimierung: Es erleichtert ein effizientes Ressourcenmanagement, indem es genaue Zählungen liefert und so die Ressourcenzuweisung in Branchen wie der Bestandsverwaltung optimiert.
- Erhöhte Sicherheit: Es verbessert die Sicherheit und Überwachung durch die genaue Verfolgung und Zählung von Personen und hilft bei der proaktiven Erkennung von Bedrohungen und Sicherheitssystemen.
- Informierte Entscheidungsfindung: Sie bietet wertvolle Erkenntnisse für die Entscheidungsfindung und optimiert Prozesse in Bereichen wie Einzelhandel, Verkehrsmanagement und mehr.
- Verarbeitung in Echtzeit: Die Architektur von YOLO11 ermöglicht Echtzeit-Inferenz und eignet sich daher für Live-Videostreams und zeitkritische Anwendungen.
Beispiele für die Implementierung und praktische Anwendungen finden Sie in der TrackZone-Lösung zur Verfolgung von Objekten in bestimmten Zonen.
Wie kann ich mit Ultralytics YOLO11 bestimmte Klassen von Objekten zählen?
Um bestimmte Klassen von Objekten mit Ultralytics YOLO11 zu zählen, müssen Sie die Klassen, an denen Sie interessiert sind, während der Verfolgungsphase angeben. Nachfolgend finden Sie ein Python Beispiel:
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])
In diesem Beispiel, classes_to_count=[0, 2]
bedeutet, dass es Objekte der Klasse 0
und 2
(z. B. Person und Auto im COCO-Datensatz). Weitere Informationen über Klassenindizes finden Sie in der Dokumentation des COCO-Datensatzes.
Warum sollte ich YOLO11 gegenüber anderen Objekterkennungsmodellen für Echtzeitanwendungen verwenden?
Ultralytics YOLO11 bietet mehrere Vorteile gegenüber anderen Objekterkennungsmodellen wie Faster R-CNN, SSD und früheren YOLO :
- Geschwindigkeit und Effizienz: YOLO11 bietet Echtzeitverarbeitungsfunktionen und ist damit ideal für Anwendungen, die Hochgeschwindigkeitsinferenzen erfordern, wie z. B. Überwachung und autonomes Fahren.
- Genauigkeit: Es bietet modernste Genauigkeit bei der Objekterkennung und -verfolgung, reduziert die Anzahl der Fehlalarme und verbessert die Zuverlässigkeit des Systems insgesamt.
- Leichte Integration: YOLO11 bietet eine nahtlose Integration mit verschiedenen Plattformen und Geräten, einschließlich Mobil- und Edge-Geräten, was für moderne KI-Anwendungen entscheidend ist.
- Flexibel: Unterstützt verschiedene Aufgaben wie Objekterkennung, -segmentierung und -verfolgung mit konfigurierbaren Modellen zur Erfüllung spezifischer Anwendungsfälle.
Unter Ultralytics YOLO11 finden Sie eine ausführlicheDokumentation über die Funktionen und Leistungsvergleiche.
Kann ich YOLO11 für fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement verwenden?
Ja, Ultralytics YOLO11 eignet sich aufgrund seiner Echtzeit-Erkennungsfunktionen, seiner Skalierbarkeit und seiner Integrationsflexibilität perfekt für fortschrittliche Anwendungen wie die Analyse von Menschenmengen und das Verkehrsmanagement. Seine fortschrittlichen Funktionen ermöglichen eine hochpräzise Objektverfolgung, Zählung und Klassifizierung in dynamischen Umgebungen. Beispiele für Anwendungsfälle sind:
- Analyse von Menschenansammlungen: Überwachen und verwalten Sie große Menschenansammlungen, sorgen Sie für Sicherheit und optimieren Sie den Menschenstrom mit regionaler Zählung.
- Verkehrsmanagement: Verfolgung und Zählung von Fahrzeugen, Analyse von Verkehrsmustern und Staumanagement in Echtzeit mit Geschwindigkeitsschätzungsfunktionen.
- Einzelhandelsanalysen: Analysieren Sie Kundenbewegungsmuster und Produktinteraktionen, um das Ladenlayout zu optimieren und das Kundenerlebnis zu verbessern.
- Industrielle Automatisierung: Zählen von Produkten auf Förderbändern und Überwachen von Produktionslinien zur Qualitätskontrolle und Effizienzsteigerung.
Für speziellere Anwendungen finden Sie bei Ultralytics Solutions eine umfassende Reihe von Tools, die für reale Herausforderungen der Computer Vision entwickelt wurden.