Heatmaps zur Objektverfolgung mit Ultralytics YOLO26#
Die Heatmap-Lösung in Ultralytics YOLO26 verfolgt Objekte über Videobilder hinweg und legt deren aufsummierte Bewegungsintensität über jedes Bild. Stark frequentierte Bereiche leuchten dadurch in warmen Farben, während wenig frequentierte Bereiche kühl bleiben. Auf Grundlage der YOLO26-Objektverfolgung verwandelt sie jedes Video mit einem einzigen Python-Aufruf oder CLI-Befehl in eine räumliche Aktivitätskarte, die Verkehrsströme, Menschenmengen und Aufenthaltsbereiche sichtbar macht.
Ansehen: So erstellst du Heatmaps mit Ultralytics YOLO26 | Objektaktivitäten visualisieren | VisionAI im Einzelhandel 🚀
Warum Heatmaps für die Videoanalyse verwenden?#
- Aktivitätsmuster auf einen Blick erkennen: Die Intensität nimmt überall dort zu, wo sich verfolgte Objekte aufhalten. So sind stark frequentierte Gänge, beliebte Regale oder Engpässe in Menschenmengen sichtbar, ohne dass jedes Bild manuell überprüft werden muss.
- Verfolgung integriert: Die Lösung führt YOLO26-Erkennung und -Verfolgung intern aus, sodass keine separate Verfolgungspipeline eingerichtet werden muss.
- Zählen in einem Durchgang: Übergib eine
region, um Objekte zu zählen, die einen Bereich betreten oder verlassen, während die Heatmap erstellt wird. So lassen sich zwei Analyseaufgaben in einem Durchlauf kombinieren.
Anwendungen in der Praxis#
| Transport | Einzelhandel |
|---|---|
![]() | ![]() |
| Ultralytics YOLO: Heatmap für den Verkehr | Ultralytics YOLO: Heatmap für den Einzelhandel |
Heatmaps mit Ultralytics YOLO erstellen#
Führe die Heatmap-Lösung über die CLI oder Python mit einer Videoquelle aus. Das Python-Beispiel schreibt die verarbeiteten Bilder in eine Ausgabevideodatei:
# Run a heatmap example
yolo solutions heatmap show=True
# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"
# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO
# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Argumente für Heatmap()#
Hier ist eine Tabelle mit den Argumenten für Heatmap:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
model | str | None | Pfad zu einer Ultralytics-YOLO-Modelldatei. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Für die Heatmap zu verwendende Farbpalette. |
show_in | bool | True | Steuert, ob die Eingangsanzahl im Videostream angezeigt wird. |
show_out | bool | True | Steuert, ob die Ausgangsanzahl im Videostream angezeigt wird. |
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. |
In der Lösung Heatmap kannst du außerdem verschiedene Argumente für track verwenden.
| 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 sind die folgenden Visualisierungsargumente verfügbar:
| 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. |
Heatmap-Farbkarten#
Das Argument colormap akzeptiert jede OpenCV-Farbkarte. Übergib dazu die Konstante aus dem Modul cv2, zum Beispiel colormap=cv2.COLORMAP_INFERNO:
| Name der Farbkarte | Beschreibung |
|---|---|
cv2.COLORMAP_AUTUMN | Herbst-Farbkarte |
cv2.COLORMAP_BONE | Knochen-Farbkarte |
cv2.COLORMAP_JET | Jet-Farbskala |
cv2.COLORMAP_WINTER | Winter-Farbskala |
cv2.COLORMAP_RAINBOW | Regenbogen-Farbskala |
cv2.COLORMAP_OCEAN | Ozean-Farbskala |
cv2.COLORMAP_SUMMER | Sommer-Farbskala |
cv2.COLORMAP_SPRING | Frühlings-Farbskala |
cv2.COLORMAP_COOL | Kühle Farbskala |
cv2.COLORMAP_HSV | HSV-Farbskala (Farbton, Sättigung, Helligkeit) |
cv2.COLORMAP_PINK | Rosa-Farbskala |
cv2.COLORMAP_HOT | Heiße Farbskala |
cv2.COLORMAP_PARULA | Parula-Farbskala |
cv2.COLORMAP_MAGMA | Magma-Farbskala |
cv2.COLORMAP_INFERNO | Inferno-Farbskala |
cv2.COLORMAP_PLASMA | Plasma-Farbskala |
cv2.COLORMAP_VIRIDIS | Viridis-Farbskala |
cv2.COLORMAP_CIVIDIS | Cividis-Farbskala |
cv2.COLORMAP_TWILIGHT | Twilight-Farbskala |
cv2.COLORMAP_TWILIGHT_SHIFTED | Verschobene Twilight-Farbskala |
cv2.COLORMAP_TURBO | Turbo-Farbskala |
cv2.COLORMAP_DEEPGREEN | Dunkelgrüne Farbskala |
So funktionieren Heatmaps#
Die Heatmap-Lösung erweitert die Klasse ObjectCounter. Im ersten verarbeiteten Frame erstellt sie eine leere Intensitätsebene, die der Framegröße entspricht. Anschließend wird jeder Frame in zwei Schritten verarbeitet:
- YOLO26 Tracking erkennt jedes Objekt im Frame und verfolgt es.
- Für jedes verfolgte Objekt wird die Heatmap-Intensität innerhalb eines kreisförmigen Bereichs erhöht, dessen Mittelpunkt in der Bounding Box des Objekts liegt.
Einmal pro Frame wird die kumulierte Intensitätsebene normalisiert, mit der ausgewählten Farbskala eingefärbt und mit dem Originalframe überblendet. Die Überlagerung wird angezeigt, sobald mindestens ein Objekt verfolgt wurde; bis dahin werden die Frames ohne Heatmap-Überlagerung dargestellt.
Das Ergebnis ist eine dynamische Visualisierung, die sich im Laufe der Zeit aufbaut und Verkehrsmuster, Menschenmengenbewegungen oder andere räumliche Verhaltensweisen in deinen Videodaten sichtbar macht. Wenn ein region festgelegt ist, zählt die Lösung auch Objekte, die diesen Bereich betreten oder verlassen, während sich die Heatmap aufbaut.
Fazit#
Die Ultralytics YOLO26 Heatmap-Lösung wandelt Objektverfolgungsergebnisse mit wenigen Codezeilen in eine intuitive Aktivitätsüberlagerung um. Für weitere Möglichkeiten kannst du sie mit der Objektzählung kombinieren, andere Ultralytics Solutions erkunden oder mehr über den zugrunde liegenden Tracking-Modus erfahren.
Häufig gestellte Fragen#
Ultralytics YOLO26 erzeugt Heatmaps, indem Objekte über Videoframes hinweg verfolgt und an jedem Aufenthaltsort eines verfolgten Objekts Intensitätswerte aufsummiert werden. Anschließend wird das Ergebnis eingefärbt und mit dem Originalframe überblendet. Bereiche, in denen Objekte häufig vorkommen oder länger verweilen, sammeln höhere Intensitätswerte an und werden in wärmeren Farben dargestellt. Konfigurationsoptionen findest du im Abschnitt
Heatmap()-Argumente.Verwende
cv2.VideoWritervon OpenCV und schreibe für jeden verarbeiteten Frameresults.plot_im, wie im Hauptbeispiel gezeigt. Das Attributplot_imenthält den Frame, auf den die Heatmap-Überlagerung bereits angewendet wurde.Ja. Übergib
regionals Argument anHeatmap(), zusammen mit Punkten für eine Linie, ein Rechteck oder ein Polygon. Die Lösung zählt dann Objekte, die diesen Bereich betreten oder verlassen, während sich die Heatmap aufbaut. Die zurückgegebenen Ergebnisse umfassenin_count,out_countund Zählwerte pro Klasse. Weitere Informationen zur Konfiguration von Bereichen findest du in der Anleitung zur Objektzählung.Übergib das Argument
classesmit den Klassenindizes, die du beibehalten möchtest, anHeatmap(). Mitclasses=[0, 2]wird die Heatmap beispielsweise nur aus Personen und Autos erstellt (COCO-Klassenindizes 0 und 2):import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2]) while cap.isOpened(): success, im0 = cap.read() if not success: break results = heatmap(im0) cap.release() cv2.destroyAllWindows()Heatmaps von Ultralytics YOLO26 vereinen Objekterkennung, Tracking, Intensitätsakkumulation und das Rendern der Überlagerung in einem einzigen Aufruf. Bei allgemeinen Tools wie OpenCV oder Matplotlib musst du diese Pipeline selbst aufbauen. Die Lösung verarbeitet Videostreams in Echtzeit und unterstützt standardmäßig persistentes Tracking sowie anpassbare Farbskalen. Einzelheiten zum zugrunde liegenden Modell findest du auf der YOLO26-Modellseite.

