Objektzählung mit Ultralytics YOLO11
Was ist Objekterkennung?
Die Objektzählung mit Ultralytics YOLO11 umfasst die genaue Identifizierung und Zählung bestimmter Objekte in Videos und Kamerastreams. YOLO11 zeichnet sich durch Echtzeitanwendungen aus und bietet eine effiziente und präzise Objektzählung für verschiedene Szenarien wie Crowd-Analyse und Überwachung, dank seiner hochmodernen Algorithmen und Deep-Learning-Funktionen.
Ansehen: Wie man Objekterkennung in Echtzeit mit Ultralytics YOLO11 durchführt 🍏
Vorteile der Objekterkennung
- Ressourcenoptimierung: Die Objektzählung ermöglicht ein effizientes Ressourcenmanagement durch die Bereitstellung genauer Zählungen und optimiert die Ressourcenzuweisung in Anwendungen wie dem Bestandsmanagement.
- Erhöhte Sicherheit: Die Objektzählung verbessert die Sicherheit und Überwachung durch die genaue Verfolgung und Zählung von Entitäten und unterstützt so die proaktive Bedrohungserkennung.
- Fundierte Entscheidungsfindung: Die Objektzählung bietet wertvolle Einblicke für die Entscheidungsfindung und optimiert Prozesse im Einzelhandel, im Verkehrsmanagement und in verschiedenen anderen Bereichen.
Anwendungen in der realen Welt
Logistik | Aquakultur |
---|---|
![]() |
![]() |
Zählen von Paketen auf einem Förderband mit Ultralytics YOLO11 | Fischzählung im Meer mit Ultralytics YOLO11 |
Objektzählung mit Ultralytics YOLO
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
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 Modelldatei. |
show_in |
bool |
True |
Flag zur Steuerung, ob die In-Zählungen im Videostream angezeigt werden sollen. |
show_out |
bool |
True |
Flag zur Steuerung, ob die Out-Zählungen im Videostream angezeigt werden sollen. |
region |
list |
'[(20, 400), (1260, 400)]' |
Liste der Punkte, die den Zählbereich definieren. |
Die ObjectCounter
Lösung ermöglicht die Verwendung von mehreren track
Argumente:
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. |
Zusätzlich werden die unten aufgeführten Visualisierungsargumente unterstützt:
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. |
FAQ
Wie zähle ich Objekte in einem Video mit Ultralytics YOLO11?
Um Objekte in einem Video mit Ultralytics YOLO11 zu zählen, können Sie folgende Schritte ausführen:
- Importieren Sie die notwendigen Bibliotheken (
cv2
,ultralytics
), oder Auto-Modus mit angegebener Auslastungsfraktion ( - Definieren Sie den Zählbereich (z. B. ein Polygon, eine Linie usw.).
- Richten Sie die Videoerfassung ein und initialisieren Sie den Objektzähler.
- Verarbeiten Sie jeden Frame, um Objekte zu verfolgen und sie innerhalb der definierten Region zu zählen.
Hier ist ein einfaches Beispiel zum Zählen 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 erweiterte Konfigurationen und Optionen sehen Sie sich die RegionCounter-Lösung an, um Objekte in mehreren Regionen gleichzeitig zu zählen.
Welche Vorteile bietet die Verwendung von Ultralytics YOLO11 für die Objektzählung?
Die Verwendung von Ultralytics YOLO11 zur Objektzählung bietet mehrere Vorteile:
- Ressourcenoptimierung: Sie ermöglicht ein effizientes Ressourcenmanagement durch die Bereitstellung genauer Zählungen und hilft so, die Ressourcenzuweisung in Branchen wie dem Bestandsmanagement zu optimieren.
- Erhöhte Sicherheit: Sie verbessert die Sicherheit und Überwachung durch die genaue Verfolgung und Zählung von Entitäten und unterstützt so die proaktive Erkennung von Bedrohungen und Sicherheitssysteme.
- Fundierte Entscheidungsfindung: Es bietet wertvolle Einblicke für die Entscheidungsfindung und optimiert Prozesse in Bereichen wie Einzelhandel, Verkehrsmanagement und mehr.
- Echtzeitverarbeitung: Die Architektur von YOLO11 ermöglicht Echtzeit-Inferenz und eignet sich daher für Live-Videostreams und zeitkritische Anwendungen.
Für Implementierungsbeispiele und praktische Anwendungen erkunden Sie die TrackZone-Lösung zur Verfolgung von Objekten in bestimmten Zonen.
Wie kann ich bestimmte Objektklassen mit Ultralytics YOLO11 zählen?
Um bestimmte Objektklassen mit Ultralytics YOLO11 zu zählen, müssen Sie die Klassen, an denen Sie interessiert sind, während der Tracking-Phase 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 zählt 0
und 2
(z. B. Person und Auto im COCO-Datensatz). Weitere Informationen zu Klassenindizes finden Sie im COCO-Datensatzdokumentation.
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-Versionen:
- Geschwindigkeit und Effizienz: YOLO11 bietet Echtzeit-Verarbeitungsfunktionen und ist somit ideal für Anwendungen, die eine Hochgeschwindigkeitsinferenz erfordern, wie z. B. Überwachung und autonomes Fahren.
- Genauigkeit: Es bietet modernste Genauigkeit für Objekterkennungs- und Tracking-Aufgaben, wodurch die Anzahl falscher Positiver reduziert und die Gesamtzuverlässigkeit des Systems verbessert wird.
- Einfache Integration: YOLO11 bietet eine nahtlose Integration mit verschiedenen Plattformen und Geräten, einschließlich mobiler Geräte und Edge-Geräte, was für moderne KI-Anwendungen entscheidend ist.
- Flexibilität: Unterstützt verschiedene Aufgaben wie Objekterkennung, Segmentierung und Tracking mit konfigurierbaren Modellen, um spezifische Anwendungsfallanforderungen zu erfüllen.
Weitere Informationen zu den Funktionen und Leistungsvergleichen finden Sie in der Ultralytics YOLO11-Dokumentation.
Kann ich YOLO11 für fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement verwenden?
Ja, Ultralytics YOLO11 eignet sich aufgrund seiner Echtzeit-Erkennungsfähigkeiten, Skalierbarkeit und Integrationsflexibilität hervorragend für fortgeschrittene Anwendungen wie Crowd-Analyse und Verkehrsmanagement. Seine fortschrittlichen Funktionen ermöglichen eine hochgenaue Objektverfolgung, -zählung und -klassifizierung in dynamischen Umgebungen. Anwendungsbeispiele sind:
- Crowd-Analyse: Überwachen und verwalten Sie große Versammlungen, um die Sicherheit zu gewährleisten und den Crowd-Flow mit regionsbasierter Zählung zu optimieren.
- Verkehrsmanagement: Verfolgen und Zählen von Fahrzeugen, Analysieren von Verkehrsmustern und Verwalten von Staus in Echtzeit mit Geschwindigkeitserkennung.
- Einzelhandelsanalytik: Analysieren Sie die Bewegungsmuster der Kunden und die Produktinteraktionen, um die Ladengestaltung zu optimieren und das Kundenerlebnis zu verbessern.
- Industrielle Automatisierung: Produkte auf Förderbändern zählen und Produktionslinien auf Qualitätskontrolle und Effizienzverbesserungen überwachen.
Für speziellere Anwendungen erkunden Sie die Ultralytics Lösungen, eine umfassende Sammlung von Tools, die für reale Computer-Vision-Herausforderungen entwickelt wurden.