Heatmap per il tracking degli oggetti con Ultralytics YOLO26#
La soluzione Heatmap di Ultralytics YOLO26 esegue il tracking degli oggetti tra i fotogrammi del video e sovrappone a ogni fotogramma l'intensità del movimento accumulato, così le aree più trafficate si illuminano con colori caldi mentre quelle più tranquille rimangono fredde. Basata sul tracking degli oggetti di YOLO26, trasforma qualsiasi video in una mappa spaziale dell'attività che rivela il flusso del traffico, i movimenti della folla e le zone di permanenza con una singola chiamata Python o un comando CLI.
Watch: How to Create Heatmaps with Ultralytics YOLO26 | Visualize Object Activity | VisionAI in Retail 🚀
Perché usare le heatmap per l'analisi video?#
- Individua a colpo d'occhio i modelli di attività: L'intensità si accumula nei punti in cui gli oggetti sottoposti a tracking trascorrono del tempo, così le corsie ad alto traffico, gli scaffali più frequentati o i colli di bottiglia della folla risaltano senza dover esaminare manualmente ogni fotogramma.
- Tracking integrato: La soluzione esegue internamente il rilevamento e il tracking con YOLO26, quindi non è necessario configurare una pipeline di tracking separata.
- Conteggio nella stessa elaborazione: Passa un
regionper contare gli oggetti che entrano ed escono da una zona mentre la heatmap viene generata, combinando due attività di analisi in un'unica esecuzione.
Applicazioni nel mondo reale#
| Trasporti | Vendita al dettaglio |
|---|---|
![]() | ![]() |
| Heatmap dei trasporti di Ultralytics YOLO | Heatmap della vendita al dettaglio di Ultralytics YOLO |
Come generare heatmap con Ultralytics YOLO#
Esegui la soluzione Heatmap su una sorgente video dalla CLI o da Python. L'esempio Python scrive i fotogrammi elaborati in un file video di output:
# 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)]"Argomenti Heatmap()#
Ecco una tabella con gli argomenti Heatmap:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso al file del modello Ultralytics YOLO. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Mappa dei colori da utilizzare per la mappa di calore. |
show_in | bool | True | Flag che controlla se visualizzare i conteggi degli ingressi nel flusso video. |
show_out | bool | True | Flag che controlla se visualizzare i conteggi delle uscite nel flusso video. |
region | list o dict | None | Punti che definiscono la regione di interesse, costituiti da un elenco di tuple (x, y) o da un dizionario che associa i nomi delle regioni agli elenchi di punti per più regioni (solo RegionCounter). Quando None, le soluzioni che richiedono una regione utilizzano una regione predefinita. |
line_width | int | 2 | Spessore delle linee per i riquadri, i punti chiave e i conteggi disegnati dalla soluzione. |
verbose | bool | True | Abilita il registro per fotogramma della soluzione, con forma dell'input, conteggi delle classi e velocità di elaborazione. La chiamata di tracciamento è sempre silenziosa. |
Puoi anche applicare diversi argomenti track nella soluzione Heatmap.
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Imposta la soglia di confidenza per le rilevazioni; valori più bassi consentono di tracciare più oggetti, ma possono includere falsi positivi. |
iou | float | 0.7 | Imposta la soglia di Intersezione sull'unione (IoU) per filtrare le rilevazioni sovrapposte. |
classes | list | None | Filtra i risultati in base all'indice della classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
device | str | None | Specifica il dispositivo per l'inferenza (ad es. cpu, cuda:0 o 0). Consente di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello. |
imgsz | int or tuple | 640 | Dimensione dell'immagine di inferenza target: un intero per una coppia quadrata o (height, width). Le forme vengono regolate in base allo stride del modello. |
max_det | int | 300 | Numero massimo di rilevamenti conservati per fotogramma prima del tracciamento, limitando gli oggetti elaborati da una soluzione in scene dense. |
quantize | int or str | None | Precisione dell'inferenza: 16 (FP16) o 32/non impostato (FP32) per i modelli PyTorch e TorchScript; altri formati eseguono il calcolo alla precisione selezionata dal loro artefatto e runtime. Sostituisce il flag deprecato half. |
Inoltre, gli argomenti di visualizzazione supportati sono elencati di seguito:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
show | bool | False | Se True, visualizza le immagini o i video annotati in una finestra. È utile per ottenere un feedback visivo immediato durante lo sviluppo o i test. |
show_conf | bool | True | Visualizza il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Fornisce informazioni sul grado di certezza del modello per ogni rilevazione. |
show_labels | bool | True | Visualizza le etichette per ogni rilevazione nell'output visivo. Consente di comprendere immediatamente gli oggetti rilevati. |
Mappe di colori delle heatmap#
L'argomento colormap accetta qualsiasi mappa di colori di OpenCV. Passa la costante dal modulo cv2, ad esempio colormap=cv2.COLORMAP_INFERNO:
| Nome della mappa di colori | Descrizione |
|---|---|
cv2.COLORMAP_AUTUMN | Mappa di colori Autumn |
cv2.COLORMAP_BONE | Mappa di colori Bone |
cv2.COLORMAP_JET | Mappa di colori Jet |
cv2.COLORMAP_WINTER | Mappa di colori Winter |
cv2.COLORMAP_RAINBOW | Mappa di colori Rainbow |
cv2.COLORMAP_OCEAN | Mappa di colori Ocean |
cv2.COLORMAP_SUMMER | Mappa di colori Summer |
cv2.COLORMAP_SPRING | Mappa di colori Spring |
cv2.COLORMAP_COOL | Mappa di colori Cool |
cv2.COLORMAP_HSV | Mappa di colori HSV (Tonalità, Saturazione, Valore) |
cv2.COLORMAP_PINK | Mappa di colori Pink |
cv2.COLORMAP_HOT | Mappa di colori Hot |
cv2.COLORMAP_PARULA | Mappa di colori Parula |
cv2.COLORMAP_MAGMA | Mappa di colori Magma |
cv2.COLORMAP_INFERNO | Mappa di colori Inferno |
cv2.COLORMAP_PLASMA | Mappa di colori Plasma |
cv2.COLORMAP_VIRIDIS | Mappa di colori Viridis |
cv2.COLORMAP_CIVIDIS | Mappa di colori Cividis |
cv2.COLORMAP_TWILIGHT | Mappa di colori Twilight |
cv2.COLORMAP_TWILIGHT_SHIFTED | Mappa di colori Twilight spostata |
cv2.COLORMAP_TURBO | Mappa di colori Turbo |
cv2.COLORMAP_DEEPGREEN | Mappa di colori Deep Green |
Come funzionano le heatmap#
La soluzione Heatmap estende la classe ObjectCounter. Sul primo fotogramma elaborato crea un livello di intensità vuoto delle stesse dimensioni del fotogramma. Ogni fotogramma viene quindi elaborato in due passaggi:
- Il tracking di YOLO26 rileva e segue ogni oggetto nel fotogramma
- Per ogni oggetto sottoposto a tracking, l'intensità della heatmap aumenta all'interno di una regione circolare centrata sul suo riquadro di delimitazione
Una volta per fotogramma, il livello di intensità accumulato viene normalizzato, colorato con la mappa di colori selezionata e combinato con il fotogramma originale. L'overlay appare non appena viene sottoposto a tracking almeno un oggetto; i fotogrammi senza oggetti sottoposti a tracking vengono mostrati senza l'overlay della heatmap.
Il risultato è una visualizzazione dinamica che si costruisce nel tempo, rivelando i modelli del traffico, i movimenti della folla o altri comportamenti spaziali nei dati video. Quando viene impostato un region, la soluzione conta anche gli oggetti che entrano ed escono da quella regione mentre la heatmap viene generata.
Conclusioni#
La soluzione Heatmap di Ultralytics YOLO26 trasforma i risultati del tracking degli oggetti in un overlay intuitivo dell'attività con poche righe di codice. Per approfondire, combinala con il conteggio degli oggetti, esplora le altre soluzioni Ultralytics oppure leggi la documentazione sulla modalità di tracking sottostante.
FAQ#
Ultralytics YOLO26 genera heatmap eseguendo il tracking degli oggetti tra i fotogrammi del video e accumulando un valore di intensità nella posizione di ogni oggetto sottoposto a tracking, quindi colorando il risultato e combinandolo con il fotogramma originale. Le aree in cui gli oggetti compaiono frequentemente o sostano più a lungo accumulano un'intensità maggiore e vengono visualizzate con colori più caldi. Per le opzioni di configurazione, consulta la sezione Argomenti
Heatmap().Usa
cv2.VideoWriterdi OpenCV e scriviresults.plot_imper ogni fotogramma elaborato, come mostrato nell'esempio principale. L'attributoplot_imcontiene il fotogramma con l'overlay della heatmap già applicato.Sì. Passa un argomento
regionaHeatmap()con i punti di una linea, di un rettangolo o di un poligono, e la soluzione conta gli oggetti che entrano ed escono da quella regione mentre la heatmap viene generata. I risultati restituiti includonoin_count,out_counte i conteggi per classe. Consulta la guida al conteggio degli oggetti per i dettagli sulla configurazione della regione.Passa l'argomento
classesaHeatmap()con gli indici delle classi che vuoi mantenere. Ad esempio,classes=[0, 2]genera la heatmap solo per persone e automobili (indici di classe COCO 0 e 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()Le heatmap di Ultralytics YOLO26 integrano rilevamento degli oggetti, tracking, accumulo dell'intensità e rendering dell'overlay in un'unica chiamata, mentre gli strumenti generici come OpenCV o Matplotlib richiedono di creare autonomamente questa pipeline. La soluzione elabora i flussi video in tempo reale e supporta il tracking persistente e mappe di colori personalizzabili fin da subito. Per i dettagli sul modello sottostante, consulta la pagina del modello YOLO26.

