Heatmaps zur Objektverfolgung mit Ultralytics YOLO26#
Die Heatmap-Lösung in Ultralytics YOLO26 verfolgt Objekte über Videobilder hinweg und legt deren kumulierte Bewegungsintensität über jedes Bild. Dadurch leuchten stark frequentierte Bereiche in warmen Farben auf, während ruhige Bereiche kühl bleiben. Die auf der Objektverfolgung von YOLO26 basierende Lösung verwandelt jedes Video mit einem einzigen Python-Aufruf oder CLI-Befehl in eine räumliche Aktivitätskarte, die Verkehrsfluss, Gruppenbewegungen und Aufenthaltsbereiche sichtbar macht.
Watch: How to Create Heatmaps with Ultralytics YOLO26 | Visualize Object Activity | VisionAI in Retail 🚀
Warum Heatmaps für Videoanalysen verwenden?#
- Aktivitätsmuster auf einen Blick erkennen: Die Intensität steigt überall dort an, wo sich verfolgte Objekte aufhalten. Dadurch werden stark frequentierte Fahrspuren, beliebte Regale oder Engpässe in Menschenmengen sichtbar, ohne dass du die Bilder einzeln prüfen musst.
- Verfolgung integriert: Die Lösung führt die Erkennung und Verfolgung mit YOLO26 intern aus, sodass du keine separate Pipeline für die Verfolgung einrichten musst.
- Zählen im selben Durchlauf: Übergebe ein
region, um Objekte zu zählen, die eine Zone betreten oder verlassen, während die Heatmap erstellt wird, und kombiniere so zwei Analyseaufgaben in einem Durchlauf.
Anwendungen in der Praxis#
| Verkehr | 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 für eine Videoquelle aus. Das Python-Beispiel schreibt die verarbeiteten Bilder in eine Ausgabedatei:
# 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 von Heatmap()#
Hier ist eine Tabelle mit den Argumenten von Heatmap:
| Argument | Typ | Standardwert | Beschreibung |
|---|---|---|---|
model | str | None | Pfad zu einer YOLO-Modell-Datei von Ultralytics. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Für die Heatmap zu verwendende Farbkarte. |
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 zur Definition des Interessenbereichs: entweder eine Liste von (x, y)-Tupeln oder ein Wörterbuch, das Bereichsnamen Punktelisten für mehrere Bereiche zuordnet (nur RegionCounter). Wenn None, greifen Lösungen, die einen Bereich benötigen, auf einen vordefinierten Standardwert zurück. |
line_width | int | 2 | Linienstärke für die von der Lösung gezeichneten Boxen, Keypoints und Zählwerte. |
verbose | bool | True | Aktiviert das Protokoll der Lösung pro Frame mit Eingabeform, Klassenanzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst bleibt immer ohne Ausgabe. |
Du kannst in der Lösung Heatmap auch andere Argumente für track verwenden.
| Argument | Typ | Standardwert | Beschreibung |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Gibt den zu verwendenden Tracking-Algorithmus an. 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 das Verfolgen weiterer Objekte, können aber Fehlalarme einschließen. |
iou | float | 0.7 | Legt den Schwellenwert für Intersection over Union (IoU) zum Filtern überlappender Erkennungen fest. |
classes | list | None | Filtert Ergebnisse nach Klassenindex. Beispielsweise verfolgt classes=[0, 2, 3] nur die angegebenen Klassen. |
device | str | None | Gibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht die Auswahl zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung. |
imgsz | int or tuple | 640 | Ziel-Inferenzbildgröße: eine Ganzzahl für ein quadratisches Bild oder ein (height, width)-Paar. Die Formen werden an den Modell-Stride angepasst. |
max_det | int | 300 | Maximale Anzahl der pro Frame beibehaltenen Detektionen vor dem Tracking, wodurch die Anzahl der Objekte begrenzt wird, die eine Lösung in dichten Szenen verarbeitet. |
quantize | int or str | None | Inferenzpräzision: 16 (FP16) oder 32/nicht gesetzt (FP32) für PyTorch- und TorchScript-Modelle; andere Formate berechnen mit der Präzision, die ihr Artefakt und ihre Laufzeit auswählen. Ersetzt das veraltete half-Flag. |
Zusätzlich sind die unterstützten Argumente für die Visualisierung unten aufgeführt:
| Argument | Typ | Standardwert | Beschreibung |
|---|---|---|---|
show | bool | False | Wenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Dies ist nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens. |
show_conf | bool | True | Zeigt neben dem Label den Konfidenzwert für jede Erkennung an. Dadurch erhältst du Einblick in die Sicherheit des Modells bei jeder Erkennung. |
show_labels | bool | True | Zeigt Labels für jede Erkennung in der visuellen Ausgabe an. Dies ermöglicht ein unmittelbares Verständnis der erkannten Objekte. |
Heatmap-Farbkarten#
Das Argument colormap akzeptiert jede OpenCV-Farbkarte. Übergebe die Konstante aus dem Modul cv2, zum Beispiel colormap=cv2.COLORMAP_INFERNO:
| Name der Farbkarte | Beschreibung |
|---|---|
cv2.COLORMAP_AUTUMN | Farbkarte Herbst |
cv2.COLORMAP_BONE | Farbkarte Knochen |
cv2.COLORMAP_JET | Farbkarte Jet |
cv2.COLORMAP_WINTER | Farbkarte Winter |
cv2.COLORMAP_RAINBOW | Farbkarte Regenbogen |
cv2.COLORMAP_OCEAN | Farbkarte Ozean |
cv2.COLORMAP_SUMMER | Farbkarte Sommer |
cv2.COLORMAP_SPRING | Farbkarte Frühling |
cv2.COLORMAP_COOL | Farbkarte Kühl |
cv2.COLORMAP_HSV | Farbkarte HSV (Farbton, Sättigung, Wert) |
cv2.COLORMAP_PINK | Farbkarte Rosa |
cv2.COLORMAP_HOT | Farbkarte Heiß |
cv2.COLORMAP_PARULA | Farbkarte Parula |
cv2.COLORMAP_MAGMA | Farbkarte Magma |
cv2.COLORMAP_INFERNO | Farbkarte Inferno |
cv2.COLORMAP_PLASMA | Farbkarte Plasma |
cv2.COLORMAP_VIRIDIS | Farbkarte Viridis |
cv2.COLORMAP_CIVIDIS | Farbkarte Cividis |
cv2.COLORMAP_TWILIGHT | Farbkarte Twilight |
cv2.COLORMAP_TWILIGHT_SHIFTED | Farbkarte Verschobenes Twilight |
cv2.COLORMAP_TURBO | Farbkarte Turbo |
cv2.COLORMAP_DEEPGREEN | Farbkarte Dunkelgrün |
Funktionsweise von Heatmaps#
Die Heatmap-Lösung erweitert die Klasse ObjectCounter. Im ersten verarbeiteten Bild erstellt sie eine leere Intensitätsebene, die der Bildgröße entspricht. Anschließend wird jedes Bild in zwei Schritten verarbeitet:
- Die YOLO26-Verfolgung erkennt jedes Objekt im Bild und folgt ihm.
- Für jedes verfolgte Objekt wird die Intensität der Heatmap innerhalb eines kreisförmigen Bereichs erhöht, dessen Mittelpunkt in seiner Begrenzungsbox liegt.
Einmal pro Bild wird die kumulierte Intensitätsebene normalisiert, mit der ausgewählten Farbkarte eingefärbt und mit dem Originalbild überblendet. Das Overlay wird angezeigt, sobald mindestens ein Objekt verfolgt wird. Bilder ohne verfolgte Objekte werden ohne Heatmap-Overlay angezeigt.
Das Ergebnis ist eine dynamische Visualisierung, die sich im Laufe der Zeit aufbaut und Verkehrsmuster, Bewegungen von Menschenmengen oder andere räumliche Verhaltensweisen in deinen Videodaten sichtbar macht. Wenn ein region festgelegt ist, zählt die Lösung außerdem Objekte, die diesen Bereich betreten oder verlassen, während die Heatmap erstellt wird.
Fazit#
Die Heatmap-Lösung von Ultralytics YOLO26 verwandelt Ergebnisse der Objektverfolgung mit wenigen Codezeilen in ein intuitives Aktivitäts-Overlay. Für weiterführende Analysen kannst du sie mit der Objektzählung kombinieren, die anderen Ultralytics Solutions erkunden oder mehr über den zugrunde liegenden Verfolgungsmodus lesen.
FAQ#
Ultralytics YOLO26 erzeugt Heatmaps, indem Objekte über Videobilder hinweg verfolgt und Intensitätswerte an den Positionen der verfolgten Objekte kumuliert werden. Anschließend wird das Ergebnis eingefärbt und mit dem Originalbild überblendet. Bereiche, in denen Objekte häufig erscheinen oder verweilen, bauen eine höhere Intensität auf und werden in wärmeren Farben dargestellt. Konfigurationsoptionen findest du im Abschnitt Argumente für
Heatmap().Verwende
cv2.VideoWritervon OpenCV und schreibe für jedes verarbeitete Bildresults.plot_im, wie im Hauptbeispiel gezeigt. Das Attributplot_imenthält das Bild bereits mit angewendetem Heatmap-Overlay.Ja. Übergebe ein Argument
regionanHeatmap()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 die Heatmap erstellt wird. Die zurückgegebenen Ergebnisse enthaltenin_count,out_countund Zählungen pro Klasse. Einzelheiten zur Konfiguration von Bereichen findest du im Leitfaden zur Objektzählung.Übergebe das Argument
classesanHeatmap()mit den Klassenindizes, die du beibehalten möchtest. Beispielsweise erstelltclasses=[0, 2]die Heatmap nur aus Personen und Autos (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()Die Heatmaps von Ultralytics YOLO26 verbinden Objekterkennung, Verfolgung, Intensitätskumulierung und die Darstellung des Overlays in einem einzigen Aufruf. Bei allgemeinen Werkzeugen wie OpenCV oder Matplotlib musst du diese Pipeline dagegen selbst erstellen. Die Lösung verarbeitet Videostreams in Echtzeit und unterstützt standardmäßig persistente Verfolgung sowie anpassbare Farbkarten. Einzelheiten zum zugrunde liegenden Modell findest du auf der YOLO26-Modellseite.

