Ultralytics YOLO27:

Heatmap per il tracking degli oggetti con Ultralytics YOLO26#

Open Heatmaps In Colab

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 region per 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#

TrasportiVendita al dettaglio
Overlay heatmap di Ultralytics YOLO che mostra la densità del traffico veicolareOverlay heatmap di Ultralytics YOLO che mostra il movimento dei clienti in un punto vendita
Heatmap dei trasporti di Ultralytics YOLOHeatmap 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:

Heatmap con 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)]"

Argomenti Heatmap()#

Ecco una tabella con gli argomenti Heatmap:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso al file del modello Ultralytics YOLO.
colormapintcv2.COLORMAP_DEEPGREENMappa dei colori da utilizzare per la mappa di calore.
show_inboolTrueFlag che controlla se visualizzare i conteggi degli ingressi nel flusso video.
show_outboolTrueFlag che controlla se visualizzare i conteggi delle uscite nel flusso video.
regionlist o dictNonePunti 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_widthint2Spessore delle linee per i riquadri, i punti chiave e i conteggi disegnati dalla soluzione.
verboseboolTrueAbilita 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.

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Imposta la soglia di confidenza per le rilevazioni; valori più bassi consentono di tracciare più oggetti, ma possono includere falsi positivi.
ioufloat0.7Imposta la soglia di Intersezione sull'unione (IoU) per filtrare le rilevazioni sovrapposte.
classeslistNoneFiltra i risultati in base all'indice della classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate.
devicestrNoneSpecifica 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.
imgszint or tuple640Dimensione 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_detint300Numero massimo di rilevamenti conservati per fotogramma prima del tracciamento, limitando gli oggetti elaborati da una soluzione in scene dense.
quantizeint or strNonePrecisione 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:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe 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_confboolTrueVisualizza il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Fornisce informazioni sul grado di certezza del modello per ogni rilevazione.
show_labelsboolTrueVisualizza 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 coloriDescrizione
cv2.COLORMAP_AUTUMNMappa di colori Autumn
cv2.COLORMAP_BONEMappa di colori Bone
cv2.COLORMAP_JETMappa di colori Jet
cv2.COLORMAP_WINTERMappa di colori Winter
cv2.COLORMAP_RAINBOWMappa di colori Rainbow
cv2.COLORMAP_OCEANMappa di colori Ocean
cv2.COLORMAP_SUMMERMappa di colori Summer
cv2.COLORMAP_SPRINGMappa di colori Spring
cv2.COLORMAP_COOLMappa di colori Cool
cv2.COLORMAP_HSVMappa di colori HSV (Tonalità, Saturazione, Valore)
cv2.COLORMAP_PINKMappa di colori Pink
cv2.COLORMAP_HOTMappa di colori Hot
cv2.COLORMAP_PARULAMappa di colori Parula
cv2.COLORMAP_MAGMAMappa di colori Magma
cv2.COLORMAP_INFERNOMappa di colori Inferno
cv2.COLORMAP_PLASMAMappa di colori Plasma
cv2.COLORMAP_VIRIDISMappa di colori Viridis
cv2.COLORMAP_CIVIDISMappa di colori Cividis
cv2.COLORMAP_TWILIGHTMappa di colori Twilight
cv2.COLORMAP_TWILIGHT_SHIFTEDMappa di colori Twilight spostata
cv2.COLORMAP_TURBOMappa di colori Turbo
cv2.COLORMAP_DEEPGREENMappa 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:

  1. Il tracking di YOLO26 rileva e segue ogni oggetto nel fotogramma
  2. 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.VideoWriter di OpenCV e scrivi results.plot_im per ogni fotogramma elaborato, come mostrato nell'esempio principale. L'attributo plot_im contiene il fotogramma con l'overlay della heatmap già applicato.

  • Sì. Passa un argomento region a Heatmap() 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 includono in_count, out_count e i conteggi per classe. Consulta la guida al conteggio degli oggetti per i dettagli sulla configurazione della regione.

  • Passa l'argomento classes a Heatmap() 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.

Commenti