Objektzählung in Bereichen mit Ultralytics YOLO26#
Die RegionCounter-Lösung in Ultralytics YOLO26 verfolgt Objekte über Videoframes hinweg und zählt in jedem Frame die Objekte, deren Begrenzungsrahmenmittelpunkt innerhalb eines von dir festgelegten Bereichs liegt. Jeder Bereich wird mit seiner eigenen aktuellen Zählung im Frame dargestellt. So kannst du mit einem einzigen Python-Aufruf oder CLI-Befehl mehrere Zonen wie Ladengänge, Fahrspuren oder Produktionsbereiche überwachen.
Ansehen: Objekte in verschiedenen Bereichen mit Ultralytics YOLO zählen | Ultralytics-Lösungen
Warum die Zählung in Bereichen verwenden?#
- Mehrere Zonen in einem Durchlauf: Übergib ein Wörterbuch mit benannten Polygonen. Für jede Zone wird eine eigene Zählung im Frame angezeigt, sodass ein Videostream alle gewünschten Bereiche abdeckt.
- Integrierte Objektverfolgung: Die Lösung führt YOLO26-Erkennung und Objektverfolgung intern aus, sodass keine separate Verfolgungspipeline eingerichtet werden muss.
- Programmgesteuert abrufbare Zählungen: Für jedes verarbeitete Frame wird ein Ergebnisobjekt mit einem Wörterbuch der Bereichszählungen zurückgegeben, das du für Dashboards, Warnmeldungen oder Protokolle verwenden kannst.
Anwendungen in der Praxis#
| Einzelhandel | Marktstraßen |
|---|---|
![]() | ![]() |
| Personenzählung in Bereichen mit Ultralytics YOLO | Zählung von Menschenansammlungen in Bereichen mit Ultralytics YOLO |
So zählst du Objekte in Bereichen mit Ultralytics YOLO#
Führe die RegionCounter-Lösung über die CLI oder Python mit einer Videoquelle aus. Ein Bereich kann als Punkteliste (eine einzelne Zone) oder als Wörterbuch definiert werden, das Zonennamen Punktelisten zuordnet. Das folgende Python-Beispiel zählt Objekte in zwei benannten Bereichen und schreibt die verarbeiteten Frames in eine Ausgabedatei für Videos:
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Argumente für RegionCounter()#
Hier ist eine Tabelle mit den Argumenten für RegionCounter:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
model | str | None | Pfad zu einer Ultralytics-YOLO-Modelldatei. |
region | list oder dict | None | Punkte, die den Interessenbereich festlegen: entweder eine Liste von (x, y)-Tupeln oder ein Wörterbuch, das bei mehreren Bereichen deren Namen den jeweiligen Punktelisten zuordnet (nur RegionCounter). Bei None verwenden Lösungen, die einen Bereich benötigen, einen vordefinierten Standardbereich. |
line_width | int | 2 | Linienstärke für die Boxen, Keypoints und Zählwerte, die von der Lösung eingezeichnet werden. |
verbose | bool | True | Aktiviert das Protokoll der Lösung für jedes Bild, das Eingabeform, Klassenanzahlen und Verarbeitungsgeschwindigkeit enthält. Der Tracking-Aufruf selbst gibt grundsätzlich keine Meldungen aus. |
Die Lösung RegionCounter ermöglicht die Verwendung von Parametern für die Objektverfolgung:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Legt den zu verwendenden Verfolgungsalgorithmus fest. Integrierte Optionen: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Legt den Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte ermöglichen die Verfolgung weiterer Objekte, können aber auch falsch positive Ergebnisse einschließen. |
iou | float | 0.7 | Legt den Schwellenwert für die Schnittmenge über Vereinigung (IoU) fest, um überlappende Erkennungen herauszufiltern. |
classes | list | None | Filtert die Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen. |
device | str | None | Legt das Gerät für die Inferenz fest (z. B. cpu, cuda:0 oder 0). So kannst du für die Modellausführung zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten wählen. |
imgsz | int or tuple | 640 | Zielbildgröße für die Inferenz: eine Ganzzahl für ein quadratisches Bild oder ein (height, width)-Paar. Die Formen werden an den Modellschritt angepasst. |
max_det | int | 300 | Maximale Anzahl der Erkennungen, die pro Bild vor der Verfolgung beibehalten werden. Dadurch wird die Anzahl der Objekte begrenzt, die eine Lösung in dichten Szenen verarbeitet. |
quantize | int or str | None | Inferenzgenauigkeit: 16 (FP16) oder 32/nicht festgelegt (FP32) für PyTorch- und TorchScript-Modelle; andere Formate verwenden die Genauigkeit, die durch ihr Artefakt und ihre Laufzeitumgebung festgelegt wird. Ersetzt das veraltete Flag half. |
Zusätzlich werden die folgenden Visualisierungseinstellungen unterstützt:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
show | bool | False | Wenn True aktiviert ist, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder beim Testen. |
show_conf | bool | True | Zeigt neben der Bezeichnung den Konfidenzwert jeder Erkennung an. Gibt Aufschluss darüber, wie sicher sich das Modell bei der jeweiligen Erkennung ist. |
show_labels | bool | True | Zeigt für jede Erkennung eine Bezeichnung in der visuellen Ausgabe an. So lassen sich erkannte Objekte sofort erkennen. |
Funktionsweise der Bereichszählung#
Die RegionCounter-Lösung wandelt jeden übergebenen Bereich in ein Polygon mit mindestens drei Punkten um. Eine einfache Punkteliste wird zu einer einzelnen Zone mit dem Namen Region#01, während ein Wörterbuch deine eigenen Zonennamen beibehält. Jede Zone wird in einer eigenen Farbe aus der Ultralytics-Farbpalette dargestellt. Anschließend wird jedes Frame in drei Schritten verarbeitet:
- YOLO26 Tracking erkennt jedes Objekt im Frame und verfolgt es.
- Für jedes verfolgte Objekt berechnet die Lösung den Mittelpunkt des Begrenzungsrahmens und prüft, in welchen Bereichspolygonen er liegt.
- Die Zählung jedes Bereichs wird an dessen Mittelpunkt angezeigt und vor dem nächsten Frame zurückgesetzt.
Da die Zählungen in jedem Frame neu beginnen, gibt die Zahl in einem Bereich die aktuelle Belegung an, also wie viele Objekte sich genau jetzt darin befinden, nicht die laufende Gesamtzahl. Um Objekte zu zählen, die eine Grenze insgesamt überqueren, verwende stattdessen die ObjectCounter-Lösung.
Jeder Aufruf gibt außerdem ein Ergebnisobjekt zurück, dessen Attribut plot_im den annotierten Frame enthält und dessen Wörterbuch region_counts die Bereichsnamen ihren Zählungen zuordnet. So kannst du die Zahlen in die Logik deiner eigenen Anwendung einspeisen.
Fazit#
Die RegionCounter-Lösung von Ultralytics YOLO26 überwacht mit wenigen Codezeilen die aktuellen Objektzahlen in beliebig vielen benannten Zonen. Zähle darüber hinaus mit der Objektzählung Grenzübertritte, verfolge Objekte in einer einzelnen Zone mit TrackZone oder entdecke weitere Ultralytics Solutions.
Häufig gestellte Fragen#
Ultralytics YOLO26 zählt Objekte in Bereichen, indem es jedes Objekt im Frame verfolgt und prüft, ob dessen Begrenzungsrahmenmittelpunkt innerhalb der vom Benutzer festgelegten Polygone liegt. Die für einen Bereich angezeigte Zählung gibt dessen aktuelle Belegung für dieses Frame an, nicht die laufende Gesamtzahl. Die Konfigurationsoptionen sind im Abschnitt
RegionCounter()-Argumente aufgeführt.Übergib das Argument
regionals Wörterbuch, das Zonennamen Punktelisten zuordnet, wie im Hauptbeispiel:from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)Jede benannte Zone wird in einer eigenen Farbe mit einer unabhängigen Zählung dargestellt.
Das von jedem Aufruf von
regioncounter(im0)zurückgegebene Objekt enthält ein Wörterbuchregion_counts, das Bereichsnamen ihren Zählungen zuordnet, sowieplot_im(den annotierten Frame) undtotal_tracks(die Anzahl der verfolgten Objekte). Gib das Ergebnisobjekt aus, um alle verfügbaren Felder zu überprüfen.Ja. Übergib das Argument
classesmit den Klassenindizes, die beibehalten werden sollen, zum Beispielclasses=[0], um mit einem COCO-vortrainierten Modell nur Personen zu zählen. Die vollständige Liste der Tracking-Argumente findest du im AbschnittRegionCounter()Arguments.RegionCounterzeigt an, wie viele Objekte sich im aktuellen Frame in jedem polygonalen Bereich befinden, während ObjectCounter Objekte kumulativ zählt, wenn sie eine Linie oder Bereichsgrenze überqueren, und dabei Ein- und Austritte erfasst. VerwendeRegionCounterfür die aktuelle Belegung eines oder mehrerer Bereiche undObjectCounterzum Zählen von Ein- und Austritten; linienförmige Bereiche werden nur vonObjectCounterunterstützt.

