TrackZone con Ultralytics YOLO26#
Cos'è TrackZone?#
TrackZone è specializzato nel monitoraggio di oggetti all'interno di aree designate di un fotogramma anziché dell'intero fotogramma. Basato su Ultralytics YOLO26, integra il rilevamento degli oggetti e il tracciamento specificamente all'interno di zone per video e flussi di telecamere in tempo reale. Gli algoritmi avanzati di YOLO26 e le tecnologie di deep learning lo rendono una scelta perfetta per casi d'uso in tempo reale, offrendo un tracciamento degli oggetti preciso ed efficiente in applicazioni come il monitoraggio di folle e la sorveglianza.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
Vantaggi del tracciamento degli oggetti nelle zone (TrackZone)#
- Analisi mirata: Il tracciamento degli oggetti all'interno di zone specifiche consente approfondimenti più focalizzati, permettendo un monitoraggio e un'analisi precisi delle aree di interesse, come punti di ingresso o zone riservate.
- Riduzione del carico di lavoro a valle: Ignorando gli oggetti al di fuori della zona, TrackZone rimuove i rilevamenti irrilevanti, così avrai meno oggetti da contare, registrare o su cui generare avvisi nella logica che costruisci sopra di esso. Il rilevamento viene comunque eseguito su un frame mascherato a dimensione intera piuttosto che su un ritaglio stretto della zona, quindi il vantaggio è un output più pulito e mirato piuttosto che un'inferenza del modello più veloce.
- Sicurezza migliorata: Il tracciamento zonale migliora la sorveglianza monitorando le aree critiche, aiutando nel rilevamento precoce di attività insolite o violazioni della sicurezza.
- Soluzioni scalabili: La capacità di concentrarsi su zone specifiche rende TrackZone adattabile a vari scenari, dagli spazi commerciali agli ambienti industriali, garantendo un'integrazione fluida e la scalabilità.
Applicazioni nel mondo reale#
| Agricoltura | Trasporti |
|---|---|
![]() | ![]() |
| Tracciamento delle piante nel campo usando Ultralytics YOLO26 | Tracciamento dei veicoli su strada usando 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 affida all'elenco region per sapere quale parte del fotogramma monitorare. Definisci il poligono in modo che corrispondi alla zona fisica di tuo interesse (porte, cancelli, ecc.) e mantieni show=True abilitato durante la configurazione in modo da poter verificare che la sovrapposizione sia allineata con il flusso video.
- Ogni voce in
regionè una coordinata pixel(x, y)nel fotogramma video. Elenca i punti nell'ordine in cui devono essere collegati attorno al perimetro dell'area che desideri monitorare. - Le coordinate sono legate alla risoluzione del fotogramma, quindi una regione dimensionata per un flusso 1280×720 non si allineerà con una 640×480. Mantieni
show=Truedurante la configurazione in modo da poter confermare che la sovrapposizione corrisponda al tuo flusso. TrackZoneriduce i punti al loro involucro convesso, quindi una forma concava viene semplificata nel più piccolo poligono convesso che contiene tutti i suoi punti. Per forme non concave o diverse 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 di TrackZone#
Ecco una tabella con gli argomenti di TrackZone:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso verso un file del modello Ultralytics YOLO. |
region | list o dict | None | Punti che definiscono la regione di interesse, sia una lista di tuple (x, y) o un dizionario che associa i nomi delle regioni a liste di punti per più regioni (solo RegionCounter). Quando None, le soluzioni che richiedono una regione fanno ricorso a un valore predefinito. |
line_width | int | 2 | Spessore della linea per i box, i keypoint e i conteggi disegnati dalla soluzione. |
verbose | bool | True | Abilita il registro per fotogramma della soluzione relativo a forma dell'input, conteggi delle classi e velocità di elaborazione. La chiamata di tracking in sé è sempre silenziosa. |
La soluzione TrackZone include il supporto per 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 i rilevamenti; valori più bassi consentono di tracciare più oggetti ma possono includere falsi positivi. |
iou | float | 0.7 | Imposta la soglia Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti. |
classes | list | None | Filtra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
device | str | None | Specifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0 o 0). Consente agli utenti di scegliere tra CPU, una specifica GPU o altri dispositivi di calcolo per l'esecuzione del modello. |
Inoltre, sono 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 un riscontro visivo immediato durante lo sviluppo o i test. |
show_conf | bool | True | Mostra il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce informazioni sulla certezza del modello per ogni rilevamento. |
show_labels | bool | True | Mostra le etichette per ogni rilevamento nell'output visivo. Offre una comprensione immediata degli 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 su ogni fotogramma per monitorare l'occupazione in tempo reale, ad esempio per registrare quanto sia trafficato un punto di ingresso o un'area ristretta:
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#
Tracciare oggetti in un'area o zona definita di un fotogramma video è semplice con Ultralytics YOLO26. Usa semplicemente il comando fornito di seguito per avviare il tracciamento. 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 tracciamento zonale.
yolo solutions trackzone source="path/to/video.mp4" show=TrueCon poche righe di codice, puoi configurare il tracciamento degli oggetti in zone specifiche, rendendolo facile da integrare 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, consentendo un controllo preciso sulle aree che desideri 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 involucro convesso, quindi elencali in ordine attorno al perimetro dell'area che desideri monitorare.Tutte e tre le soluzioni funzionano con le regioni, ma rispondono a domande diverse:
Soluzione Usalo per Output tipico TrackZone Traccia oggetti e monitora l'occupazione live all'interno di una singola zona convessa ID tracciati e total_tracksper la zonaObjectCounter Conta gli oggetti che attraversano una linea o entrano ed escono da una regione Conteggi cumulativi di entrata e uscita RegionCounter Conta gli oggetti all'interno di una o più regioni arbitrarie (incluse quelle non convesse) Conteggi degli oggetti per regione Scegli TrackZone quando desideri un tracciamento continuo all'interno di un'area e RegionCounter quando hai bisogno di più zone o di una forma non convessa.

