TrackZone con Ultralytics YOLO26#
Che cos'è TrackZone?#
TrackZone è specializzato nel monitoraggio degli oggetti all'interno di aree designate del frame, anziché nell'intero frame. Basato su Ultralytics YOLO26, integra il rilevamento e il tracking degli oggetti specificamente all'interno delle zone per video e flussi video provenienti da telecamere in diretta. Gli algoritmi avanzati e le tecnologie di deep learning di YOLO26 lo rendono una scelta ideale per i casi d'uso in tempo reale, offrendo un tracking degli oggetti preciso ed efficiente in applicazioni come il monitoraggio della folla e la sorveglianza.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Vantaggi del tracking degli oggetti nelle zone (TrackZone)#
- Analisi mirata: il tracking degli oggetti all'interno di zone specifiche consente di ottenere informazioni più focalizzate, permettendo un monitoraggio e un'analisi precisi delle aree di interesse, come punti di ingresso o zone ad accesso limitato.
- Riduzione del carico di lavoro downstream: ignorando gli oggetti al di fuori della zona, TrackZone elimina i rilevamenti irrilevanti, riducendo il numero di oggetti da contare, registrare o per i quali generare avvisi nella logica che costruisci sopra di esso. Il rilevamento viene comunque eseguito su un frame mascherato a dimensione intera, anziché su un ritaglio ristretto della zona; il vantaggio consiste quindi in un output più pulito e focalizzato, non in un'inferenza del modello più veloce.
- Sicurezza potenziata: il tracking per zone migliora la sorveglianza monitorando le aree critiche e favorendo il rilevamento precoce 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 |
|---|---|
![]() | ![]() |
| Tracking delle piante in campo con Ultralytics YOLO26 | Tracking dei veicoli sulla 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 si basa sull'elenco region per sapere quale parte del frame monitorare. Definisci il poligono in modo che corrisponda alla zona fisica di tuo interesse (porte, cancelli, ecc.) e mantieni abilitato show=True durante la configurazione, così puoi verificare che la sovrapposizione sia allineata al flusso video.
- Ogni elemento di
regionè una coordinata di pixel(x, y)nel frame video. Elenca i punti nell'ordine in cui devono essere collegati lungo il perimetro dell'area che vuoi monitorare. - Le coordinate sono legate alla risoluzione del frame, quindi una regione dimensionata per un flusso 1280×720 non sarà allineata a uno 640×480. Mantieni
show=Truedurante la configurazione, così puoi confermare che la sovrapposizione corrisponda al tuo flusso. TrackZoneriduce i punti al loro inviluppo convesso, quindi una forma concava viene semplificata nel poligono convesso più piccolo che contiene tutti i suoi punti. Per forme non convesse o più aree separate, usa invece la soluzione RegionCounter.- Se ometti completamente
region, viene utilizzata una zona predefinita di[(75, 75), (565, 75), (565, 285), (75, 285)].
Argomenti TrackZone#
Ecco una tabella con gli argomenti TrackZone:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso al file del modello Ultralytics YOLO. |
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. |
La soluzione TrackZone supporta i parametri track:
| 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 di destinazione: un numero intero per un'immagine quadrata o una coppia (height, width). Le forme vengono regolate in base al passo 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 vengono calcolati alla precisione selezionata dal loro artefatto e runtime. Sostituisce il flag deprecato half. |
Inoltre, sono disponibili le seguenti opzioni di visualizzazione:
| 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. |
Conteggio degli oggetti all'interno della zona#
Ogni chiamata al tracker restituisce un oggetto SolutionResults, il cui attributo total_tracks contiene il numero di oggetti attualmente sottoposti a tracking all'interno della zona. Leggilo a ogni frame per monitorare l'occupazione in tempo reale, ad esempio per registrare quanto è affollato un punto di ingresso o quanto è frequentata un'area ad accesso limitato:
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()FAQ#
Eseguire il tracking degli oggetti in un'area o zona definita di un frame video è semplice con Ultralytics YOLO26. Ti basta usare il comando riportato di seguito per avviare il tracking. Questo approccio garantisce un'analisi efficiente e risultati accurati, rendendolo ideale per applicazioni come la sorveglianza, la gestione della folla o qualsiasi scenario che richieda il tracking per zone.
yolo solutions trackzone source="path/to/video.mp4" show=TrueCon poche righe di codice puoi configurare il tracking degli oggetti in zone specifiche, rendendone semplice l'integrazione 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()La configurazione dei punti della zona per l'elaborazione video con Ultralytics TrackZone è semplice e personalizzabile. Puoi definire e modificare direttamente le zone tramite uno script Python, ottenendo un controllo preciso sulle aree che vuoi monitorare.
# Define region points region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)] # Initialize trackzone trackzone = solutions.TrackZone( show=True, # display the output region=region_points, # pass region points )Ricorda che
TrackZoneriduce i punti al loro inviluppo convesso, quindi elencali in ordine lungo il perimetro dell'area che vuoi monitorare.Tutte e tre le soluzioni funzionano con le regioni, ma rispondono a domande diverse:
Soluzione Usala per Output tipico TrackZone Eseguire il tracking degli oggetti e monitorare l'occupazione in tempo reale all'interno di un'unica zona convessa ID sottoposti a tracking e total_tracksper la zonaObjectCounter Contare gli oggetti che attraversano una linea o entrano ed escono da una regione Conteggi cumulativi degli ingressi e delle uscite RegionCounter Contare gli oggetti all'interno di una o più regioni arbitrarie, incluse quelle non convesse Conteggi degli oggetti per regione Scegli TrackZone quando vuoi eseguire un tracking continuo all'interno di un'area e RegionCounter quando ti servono più zone o una forma non convessa.

