Objekt-Tracking-Heatmaps mit Ultralytics YOLO26#
Die Heatmap solution in Ultralytics YOLO26 verfolgt Objekte über Video-Frames hinweg und überlagert jeden Frame mit ihrer akkumulierten Bewegungsintensität, sodass stark frequentierte Bereiche in warmen Farben leuchten, während ruhige Bereiche kühl bleiben. Aufbauend auf dem YOLO26-object tracking verwandelt sie jedes Video in eine räumliche Aktivitätskarte, die Verkehrsflüsse, Menschenmengen und Aufenthaltszonen mit einem einzigen Python-Aufruf oder CLI-Befehl offenbart.
Watch: Heatmaps using Ultralytics YOLO26
Warum Heatmaps für Videoanalysen verwenden?#
- Aktivitätsmuster auf einen Blick erkennen: Intensität akkumuliert sich dort, wo sich verfolgte Objekte aufhalten, sodass stark befahrene Spuren, beliebte Regale oder Engpässe ohne manuelle Überprüfung Bild für Bild sofort erkennbar werden.
- Integrierte Verfolgung: Die Lösung führt die YOLO26-Erkennung und -Verfolgung intern aus, sodass kein separater Tracking-Prozess eingerichtet werden muss.
- Zählen im selben Durchgang: Übergib eine
region, um Objekte zu zählen, die eine Zone betreten und verlassen, während die Heatmap erstellt wird, wodurch zwei Analyseaufgaben in einem Durchlauf kombiniert werden.
Praxisanwendungen#
| Transportwesen | Einzelhandel |
|---|---|
![]() | ![]() |
| Ultralytics YOLO Transport-Heatmap | Ultralytics YOLO Einzelhandels-Heatmap |
So erstellst du Heatmaps mit Ultralytics YOLO#
Führe die Heatmap-Lösung über die CLI oder Python auf 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)]"Heatmap()-Argumente#
Hier ist eine Tabelle mit den Heatmap-Argumenten:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
model | str | None | Pfad zu einer Ultralytics YOLO-Modelldatei. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Zu verwendende Farbkarte für die Heatmap. |
show_in | bool | True | Flag zur Steuerung, ob die 'in'-Zähler im Videostream angezeigt werden sollen. |
show_out | bool | True | Flag zur Steuerung, ob die 'out'-Zähler im Videostream angezeigt werden sollen. |
region | list oder dict | None | Punkte, die die Region von Interesse definieren – entweder eine Liste von (x, y)-Tupeln oder ein Dictionary, das Regionsnamen auf Punktlisten für mehrere Regionen abbildet (nur RegionCounter). Wenn None, greifen Lösungen, die eine Region erfordern, auf einen vordefinierten Standardwert zurück. |
line_width | int | 2 | Linienstärke für die Boxen, Keypoints und Zählungen, die die Lösung zeichnet. |
verbose | bool | True | Aktiviert das pro-Frame-Protokoll der Lösung für Eingabeform, Klassenzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst verläuft immer im Hintergrund. |
Du kannst auch verschiedene track-Argumente in der Heatmap-Lösung anwenden.
| Argument | Typ | Standard | 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 Konfidenz-Schwellenwert für Detektionen fest; niedrigere Werte ermöglichen die Verfolgung von mehr Objekten, können aber zu falsch-positiven Ergebnissen führen. |
iou | float | 0.7 | Legt den Schwellenwert für die Intersection over Union (IoU) zum Filtern überlappender Detektionen fest. |
classes | list | None | Filtert Ergebnisse nach Klassenindex. Zum Beispiel 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 Benutzern die Auswahl zwischen CPU, einer spezifischen GPU oder anderen Rechengeräten für die Modellausführung. |
Zusätzlich sind die unterstützten Visualisierungsargumente unten aufgeführt:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
show | bool | False | Falls True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens. |
show_conf | bool | True | Zeigt den Konfidenzwert für jede Erkennung neben dem Label an. Bietet Einblick in die Gewissheit des Modells für jede Erkennung. |
show_labels | bool | True | Zeigt Labels für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte. |
Heatmap-Farbskalen#
Das colormap-Argument akzeptiert jede OpenCV colormap. Übergib die Konstante aus dem cv2-Modul, zum Beispiel colormap=cv2.COLORMAP_INFERNO:
| Name der Farbtabelle | Beschreibung |
|---|---|
cv2.COLORMAP_AUTUMN | Herbst-Farbtabelle |
cv2.COLORMAP_BONE | Knochen-Farbtabelle |
cv2.COLORMAP_JET | Jet-Farbtabelle |
cv2.COLORMAP_WINTER | Winter-Farbtabelle |
cv2.COLORMAP_RAINBOW | Regenbogen-Farbtabelle |
cv2.COLORMAP_OCEAN | Ozean-Farbtabelle |
cv2.COLORMAP_SUMMER | Sommer-Farbtabelle |
cv2.COLORMAP_SPRING | Frühlings-Farbtabelle |
cv2.COLORMAP_COOL | Kühl-Farbtabelle |
cv2.COLORMAP_HSV | HSV (Farbton, Sättigung, Wert) Farbtabelle |
cv2.COLORMAP_PINK | Pink-Farbtabelle |
cv2.COLORMAP_HOT | Heiß-Farbtabelle |
cv2.COLORMAP_PARULA | Parula-Farbtabelle |
cv2.COLORMAP_MAGMA | Magma-Farbtabelle |
cv2.COLORMAP_INFERNO | Inferno-Farbtabelle |
cv2.COLORMAP_PLASMA | Plasma-Farbtabelle |
cv2.COLORMAP_VIRIDIS | Viridis-Farbtabelle |
cv2.COLORMAP_CIVIDIS | Cividis-Farbtabelle |
cv2.COLORMAP_TWILIGHT | Dämmerungs-Farbtabelle |
cv2.COLORMAP_TWILIGHT_SHIFTED | Verschobene Dämmerungs-Farbtabelle |
cv2.COLORMAP_TURBO | Turbo-Farbtabelle |
cv2.COLORMAP_DEEPGREEN | Dunkelgrün-Farbtabelle |
Wie Heatmaps funktionieren#
Die Heatmap solution erweitert die ObjectCounter-Klasse. Im ersten verarbeiteten Frame erstellt sie eine leere Intensitätsebene, die der Frame-Größe entspricht. Jeder Frame wird dann in zwei Schritten verarbeitet:
- YOLO26-Tracking erkennt und verfolgt jedes Objekt im Bild
- Für jedes verfolgte Objekt nimmt die Heatmap-Intensität innerhalb eines kreisförmigen Bereichs, der in seiner Bounding Box zentriert ist, zu
Einmal pro Frame wird die akkumulierte Intensitätsebene normalisiert, mit der gewählten Farbskala eingefärbt und mit dem Originalbild gemischt. Das Overlay erscheint, sobald mindestens ein Objekt verfolgt wird; Frames ohne verfolgte Objekte werden ohne das Heatmap-Overlay angezeigt.
Das Ergebnis ist eine dynamische Visualisierung, die sich im Laufe der Zeit aufbaut und Verkehrsmuster, Menschenmengen oder andere räumliche Verhaltensweisen in deinen Videodaten sichtbar macht. Wenn ein region festgelegt ist, zählt die Lösung zudem Objekte, die diesen Bereich betreten und verlassen, während die Heatmap erstellt wird.
Fazit#
Die Ultralytics YOLO26 Heatmap-Lösung verwandelt Objektverfolgungsergebnisse mit ein paar Zeilen Code in ein intuitives Aktivitäts-Overlay. Um noch einen Schritt weiter zu gehen, kombiniere sie mit der object counting, erkunde die anderen Ultralytics Solutions oder lies über den zugrundeliegenden tracking mode.
FAQ#
Ultralytics YOLO26 generiert Heatmaps, indem es Objekte über Video-Frames hinweg verfolgt, an der Position jedes verfolgten Objekts einen Intensitätswert akkumuliert, das Ergebnis anschliessend einfärbt und mit dem Original-Frame überblendet. Bereiche, in denen häufig Objekte auftauchen oder verweilen, bauen eine höhere Intensität auf und werden in wärmeren Farben dargestellt. Konfigurationsoptionen findest du im Abschnitt
Heatmap()Arguments.Verwende OpenCs
cv2.VideoWriterund schreiberesults.plot_imfür jeden verarbeiteten Frame, wie im main example gezeigt. Das Attributplot_imenthält den Frame mit bereits angewendetem Heatmap-Overlay.Ja. Übergib ein
region-Argument anHeatmap()mit Linien-, Rechteck- oder Polygonpunkten, und die Lösung zählt Objekte, die diesen Bereich betreten und verlassen, während die Heatmap erstellt wird. Die zurückgegebenen Ergebnisse umfassenin_count,out_countund Zählungen pro Klasse. Details zur Regionskonfiguration findest du im object counting guide.Übergebe das Argument
classesanHeatmap()mit den Klassenindizes, die du behalten möchtest. Zum Beispiel 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()Ultralytics YOLO26-Heatmaps integrieren object detection, Tracking, Intensitätsakkumulation und Overlay-Rendering in einen einzigen Aufruf, während generische Tools wie OpenCV oder Matplotlib erfordern, dass du diese Pipeline selbst aufbaust. Die Lösung verarbeitet Videostreams in Echtzeit und unterstützt permanentes Tracking sowie anpassbare Colormaps direkt nach der Installation. Details zum zugrundeliegenden Modell findest du auf der YOLO26 model page.

