Ultralytics YOLO27:
Get Started

TrackZone con Ultralytics YOLO26#

Che cos’è TrackZone?#

Open TrackZone In Colab

TrackZone è specializzato nel monitoraggio degli oggetti all’interno di aree specifiche di un fotogramma, anziché nell’intero fotogramma. Basato su Ultralytics YOLO26, integra il rilevamento e il tracciamento degli oggetti specificamente all’interno di zone, sia nei video sia nei flussi delle telecamere in diretta. Gli algoritmi avanzati di YOLO26 e le tecnologie di deep learning lo rendono ideale per applicazioni in tempo reale, offrendo un tracciamento preciso ed efficiente degli oggetti in scenari come il monitoraggio della folla e la videosorveglianza.



Guarda: Come tracciare gli oggetti in una regione con Ultralytics YOLO26 | TrackZone 🚀

Vantaggi del tracciamento degli oggetti nelle zone (TrackZone)#

  • Analisi mirata: tracciare gli oggetti all’interno di zone specifiche consente di ottenere informazioni più mirate e di monitorare e analizzare con precisione le aree di interesse, come i punti di ingresso o le zone riservate.
  • Riduzione del carico di lavoro a valle: ignorando gli oggetti fuori dalla zona, TrackZone elimina i rilevamenti irrilevanti, riducendo il numero di oggetti da contare, registrare o segnalare nella logica che sviluppi in aggiunta. Il rilevamento viene comunque eseguito su un fotogramma mascherato a grandezza naturale, non su un ritaglio ristretto della zona: il vantaggio è quindi un output più pulito e mirato, non un’inferenza del modello più rapida.
  • Maggiore sicurezza: il tracciamento per zone migliora la videosorveglianza monitorando le aree critiche e agevolando il rilevamento tempestivo di attività insolite o violazioni della sicurezza.
  • Soluzioni scalabili: la possibilità di concentrarsi su zone specifiche rende TrackZone adattabile a diversi scenari, dagli spazi commerciali agli ambienti industriali, garantendo un’integrazione fluida e scalabilità.

Applicazioni nel mondo reale#

AgricolturaTrasporti
Tracciamento delle piante in un campo con Ultralytics YOLO26Tracciamento dei veicoli su strada con Ultralytics YOLO26
Tracciamento delle piante in un campo con Ultralytics YOLO26Tracciamento dei veicoli su strada con Ultralytics YOLO26
TrackZone con Ultralytics YOLO
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

TrackZone usa l’elenco region per determinare quale parte del fotogramma monitorare. Definisci il poligono in modo che corrisponda alla zona fisica che ti interessa (porte, cancelli e così via) e lascia abilitato show=True durante la configurazione, così puoi verificare che la sovrapposizione sia allineata al flusso video.

Definizione della zona di tracciamento
  • Ogni voce in region è una coordinata in pixel (x, y) nel fotogramma del video. Elenca i punti nell’ordine in cui devono essere collegati lungo il perimetro dell’area che vuoi monitorare.
  • Le coordinate dipendono dalla risoluzione del fotogramma: una regione impostata per un flusso a 1280×720 non sarà allineata con uno a 640×480. Lascia attivo show=True durante la configurazione, così puoi verificare che la sovrapposizione corrisponda al tuo flusso.
  • TrackZone riduce i punti al loro inviluppo convesso, semplificando una forma concava nel poligono convesso più piccolo che contiene tutti i punti. Per le forme non convesse o più aree separate, usa invece la soluzione RegionCounter.
  • Se ometti completamente region, viene usata una zona predefinita di [(75, 75), (565, 75), (565, 285), (75, 285)].

Argomenti di TrackZone#

Ecco una tabella con gli argomenti di TrackZone:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso a un file modello Ultralytics YOLO.
regionlist o dictNonePunti che definiscono la regione di interesse: un elenco di tuple (x, y) oppure 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 usano un valore predefinito predefinito.
line_widthint2Spessore delle linee dei riquadri, dei punti chiave e dei conteggi disegnati dalla soluzione.
verboseboolTrueAbilita il log per frame della soluzione, con forma dell'input, conteggi per classe e velocità di elaborazione. La chiamata di tracking è sempre silenziosa.

La soluzione TrackZone supporta i parametri track:

ArgomentoTipoPredefinitoDescrizione
trackerstr'tracktrack.yaml'Specifica l'algoritmo di tracciamento da usare. 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 destinazione per l'inferenza: un intero per un'immagine quadrata o una coppia (height, width). Le forme vengono adattate allo stride del modello.
max_detint300Numero massimo di rilevazioni da mantenere per fotogramma prima del tracciamento, che limita gli oggetti elaborati da una soluzione nelle scene dense.
quantizeint or strNonePrecisione dell'inferenza: 16 (FP16) oppure 32/non impostata (FP32) per i modelli PyTorch e TorchScript; gli altri formati eseguono i calcoli con la precisione scelta dall'artefatto e dal runtime. Sostituisce il flag deprecato half.

Sono inoltre disponibili le seguenti opzioni di visualizzazione:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, mostra le immagini o i video annotati in una finestra. Utile per ottenere un riscontro visivo immediato durante lo sviluppo o i test.
show_confboolTrueMostra il punteggio di confidenza di ogni rilevamento accanto all'etichetta. Fornisce indicazioni sul grado di certezza del modello per ciascun rilevamento.
show_labelsboolTrueMostra le etichette di ogni rilevamento nell'output visivo. Permette di identificare immediatamente gli oggetti rilevati.

Conta gli oggetti all’interno della zona#

Ogni chiamata al tracker restituisce un oggetto SolutionResults, il cui attributo total_tracks contiene il numero di oggetti attualmente tracciati all’interno della zona. Leggilo a ogni fotogramma per monitorare l’occupazione in tempo reale, ad esempio per registrare il livello di affollamento di un punto di ingresso o di un’area riservata:

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

Domande frequenti#

  • Con Ultralytics YOLO26 è semplice tracciare gli oggetti in un’area o zona definita di un fotogramma video. Ti basta usare il comando riportato qui sotto per avviare il tracciamento. Questo approccio garantisce un’analisi efficiente e risultati accurati, ed è ideale per applicazioni come la videosorveglianza, la gestione della folla o qualsiasi scenario che richieda il tracciamento per zone.

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • Bastano poche righe di codice per configurare il tracciamento degli oggetti in zone specifiche e integrarlo facilmente nei tuoi progetti.

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    assert cap.isOpened(), "Error reading video file"
    w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
    video_writer = cv2.VideoWriter("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • Configurare i punti della zona per l’elaborazione video con Ultralytics TrackZone è semplice e personalizzabile. Puoi definire e regolare direttamente le zone tramite uno script Python, controllando con precisione le aree che vuoi monitorare.

    from ultralytics import solutions
    
    # Definisci i punti della regione
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Inizializza TrackZone
    trackzone = solutions.TrackZone(
        show=True,  # visualizza l'output
        region=region_points,  # passa i punti della regione
    )

    Ricorda che TrackZone riduce i punti al loro inviluppo convesso, semplificando un contorno concavo nel poligono convesso più piccolo che contiene tutti i suoi punti.

  • Tutte e tre le soluzioni funzionano con le regioni, ma rispondono a esigenze diverse:

    SoluzioneUsala perOutput tipico
    TrackZoneTracciare gli oggetti e monitorare l’occupazione in tempo reale all’interno di un’unica zona convessaID degli oggetti tracciati e total_tracks per la zona
    ObjectCounterContare gli oggetti che attraversano una linea o entrano ed escono da una regioneConteggi cumulativi di ingressi e uscite
    RegionCounterContare gli oggetti all’interno di una o più regioni arbitrarie, anche non convesseConteggi degli oggetti per regione

    Scegli TrackZone se vuoi un tracciamento continuo all’interno di un’unica area e RegionCounter se ti servono più zone o una forma non convessa.

Commenti