Ultralytics YOLO27:
Get Started

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#

EinzelhandelMarktstraßen
Ultralytics YOLO zählt Personen in eingezeichneten Polygonbereichen eines LadensUltralytics YOLO zeigt Bereichszählungen über einer belebten Marktstraße an
Personenzählung in Bereichen mit Ultralytics YOLOZä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:

Bereichszählung mit Ultralytics YOLO
# 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:

ArgumentTypStandardBeschreibung
modelstrNonePfad zu einer Ultralytics-YOLO-Modelldatei.
regionlist oder dictNonePunkte, 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_widthint2Linienstärke für die Boxen, Keypoints und Zählwerte, die von der Lösung eingezeichnet werden.
verboseboolTrueAktiviert 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:

ArgumentTypStandardBeschreibung
trackerstr'tracktrack.yaml'Legt den zu verwendenden Verfolgungsalgorithmus fest. Integrierte Optionen: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Legt den Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte ermöglichen die Verfolgung weiterer Objekte, können aber auch falsch positive Ergebnisse einschließen.
ioufloat0.7Legt den Schwellenwert für die Schnittmenge über Vereinigung (IoU) fest, um überlappende Erkennungen herauszufiltern.
classeslistNoneFiltert die Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen.
devicestrNoneLegt 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.
imgszint or tuple640Zielbildgröß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_detint300Maximale 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.
quantizeint or strNoneInferenzgenauigkeit: 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:

ArgumentTypStandardBeschreibung
showboolFalseWenn 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_confboolTrueZeigt neben der Bezeichnung den Konfidenzwert jeder Erkennung an. Gibt Aufschluss darüber, wie sicher sich das Modell bei der jeweiligen Erkennung ist.
show_labelsboolTrueZeigt 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:

  1. YOLO26 Tracking erkennt jedes Objekt im Frame und verfolgt es.
  2. Für jedes verfolgte Objekt berechnet die Lösung den Mittelpunkt des Begrenzungsrahmens und prüft, in welchen Bereichspolygonen er liegt.
  3. 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 region als 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örterbuch region_counts, das Bereichsnamen ihren Zählungen zuordnet, sowie plot_im (den annotierten Frame) und total_tracks (die Anzahl der verfolgten Objekte). Gib das Ergebnisobjekt aus, um alle verfügbaren Felder zu überprüfen.

  • Ja. Übergib das Argument classes mit den Klassenindizes, die beibehalten werden sollen, zum Beispiel classes=[0], um mit einem COCO-vortrainierten Modell nur Personen zu zählen. Die vollständige Liste der Tracking-Argumente findest du im Abschnitt RegionCounter() Arguments.

  • RegionCounter zeigt 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. Verwende RegionCounter für die aktuelle Belegung eines oder mehrerer Bereiche und ObjectCounter zum Zählen von Ein- und Austritten; linienförmige Bereiche werden nur von ObjectCounter unterstützt.

Kommentare