TrackZone con Ultralytics YOLO26#
Che cos’è TrackZone?#
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#
| Agricoltura | Trasporti |
|---|---|
![]() | ![]() |
| Tracciamento delle piante in un campo con Ultralytics YOLO26 | Tracciamento dei veicoli su strada con Ultralytics YOLO26 |
# 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.
- 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=Truedurante la configurazione, così puoi verificare che la sovrapposizione corrisponda al tuo flusso. TrackZoneriduce 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:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso a un file modello Ultralytics YOLO. |
region | list o dict | None | Punti 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_width | int | 2 | Spessore delle linee dei riquadri, dei punti chiave e dei conteggi disegnati dalla soluzione. |
verbose | bool | True | Abilita 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:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Specifica l'algoritmo di tracciamento da usare. 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 destinazione per l'inferenza: un intero per un'immagine quadrata o una coppia (height, width). Le forme vengono adattate allo stride del modello. |
max_det | int | 300 | Numero massimo di rilevazioni da mantenere per fotogramma prima del tracciamento, che limita gli oggetti elaborati da una soluzione nelle scene dense. |
quantize | int or str | None | Precisione 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:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
show | bool | False | Se 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_conf | bool | True | Mostra il punteggio di confidenza di ogni rilevamento accanto all'etichetta. Fornisce indicazioni sul grado di certezza del modello per ciascun rilevamento. |
show_labels | bool | True | Mostra 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=TrueBastano 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
TrackZoneriduce 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:
Soluzione Usala per Output tipico TrackZone Tracciare gli oggetti e monitorare l’occupazione in tempo reale all’interno di un’unica zona convessa ID degli oggetti tracciati e total_tracksper la zonaObjectCounter Contare gli oggetti che attraversano una linea o entrano ed escono da una regione Conteggi cumulativi di ingressi e uscite RegionCounter Contare gli oggetti all’interno di una o più regioni arbitrarie, anche non convesse Conteggi 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.

