Ultralytics YOLO27:
Get Started

Heatmaps zur Objektverfolgung mit Ultralytics YOLO26#

Open Heatmaps In Colab

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#

TransportEinzelhandel
Heatmap-Überlagerung von Ultralytics YOLO mit der Verkehrsdichte von FahrzeugenHeatmap-Überlagerung von Ultralytics YOLO mit den Bewegungen von Kunden im Einzelhandel
Ultralytics YOLO: Heatmap für den VerkehrUltralytics 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:

Heatmaps mit Ultralytics YOLO
# 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:

ArgumentTypStandardBeschreibung
modelstrNonePfad zu einer Ultralytics-YOLO-Modelldatei.
colormapintcv2.COLORMAP_DEEPGREENFür die Heatmap zu verwendende Farbpalette.
show_inboolTrueSteuert, ob die Eingangsanzahl im Videostream angezeigt wird.
show_outboolTrueSteuert, ob die Ausgangsanzahl im Videostream angezeigt wird.
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.

In der Lösung Heatmap kannst du außerdem verschiedene Argumente für track verwenden.

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 sind die folgenden Visualisierungsargumente verfügbar:

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.

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 FarbkarteBeschreibung
cv2.COLORMAP_AUTUMNHerbst-Farbkarte
cv2.COLORMAP_BONEKnochen-Farbkarte
cv2.COLORMAP_JETJet-Farbskala
cv2.COLORMAP_WINTERWinter-Farbskala
cv2.COLORMAP_RAINBOWRegenbogen-Farbskala
cv2.COLORMAP_OCEANOzean-Farbskala
cv2.COLORMAP_SUMMERSommer-Farbskala
cv2.COLORMAP_SPRINGFrühlings-Farbskala
cv2.COLORMAP_COOLKühle Farbskala
cv2.COLORMAP_HSVHSV-Farbskala (Farbton, Sättigung, Helligkeit)
cv2.COLORMAP_PINKRosa-Farbskala
cv2.COLORMAP_HOTHeiße Farbskala
cv2.COLORMAP_PARULAParula-Farbskala
cv2.COLORMAP_MAGMAMagma-Farbskala
cv2.COLORMAP_INFERNOInferno-Farbskala
cv2.COLORMAP_PLASMAPlasma-Farbskala
cv2.COLORMAP_VIRIDISViridis-Farbskala
cv2.COLORMAP_CIVIDISCividis-Farbskala
cv2.COLORMAP_TWILIGHTTwilight-Farbskala
cv2.COLORMAP_TWILIGHT_SHIFTEDVerschobene Twilight-Farbskala
cv2.COLORMAP_TURBOTurbo-Farbskala
cv2.COLORMAP_DEEPGREENDunkelgrü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:

  1. YOLO26 Tracking erkennt jedes Objekt im Frame und verfolgt es.
  2. 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.VideoWriter von OpenCV und schreibe für jeden verarbeiteten Frame results.plot_im, wie im Hauptbeispiel gezeigt. Das Attribut plot_im enthält den Frame, auf den die Heatmap-Überlagerung bereits angewendet wurde.

  • Ja. Übergib region als Argument an Heatmap(), 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 umfassen in_count, out_count und Zählwerte pro Klasse. Weitere Informationen zur Konfiguration von Bereichen findest du in der Anleitung zur Objektzählung.

  • Übergib das Argument classes mit den Klassenindizes, die du beibehalten möchtest, an Heatmap(). Mit classes=[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.

Kommentare