Ultralytics YOLO27:

TrackZone con Ultralytics YOLO26#

Che cos'è TrackZone?#

Open TrackZone In Colab

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#

AgricolturaTrasporti
Tracking delle piante in campo con Ultralytics YOLO26Tracking dei veicoli sulla strada con Ultralytics YOLO26
Tracking delle piante in campo con Ultralytics YOLO26Tracking dei veicoli sulla 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 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.

Definizione della zona di tracking
  • 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=True durante la configurazione, così puoi confermare che la sovrapposizione corrisponda al tuo flusso.
  • TrackZone riduce 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:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso al file del modello Ultralytics YOLO.
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.

La soluzione TrackZone supporta i parametri track:

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 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_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 vengono calcolati alla precisione selezionata dal loro artefatto e runtime. Sostituisce il flag deprecato half.

Inoltre, sono disponibili le seguenti opzioni di visualizzazione:

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.

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=True
  • Con 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 TrackZone riduce 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:

    SoluzioneUsala perOutput tipico
    TrackZoneEseguire il tracking degli oggetti e monitorare l'occupazione in tempo reale all'interno di un'unica zona convessaID sottoposti a tracking e total_tracks per la zona
    ObjectCounterContare gli oggetti che attraversano una linea o entrano ed escono da una regioneConteggi cumulativi degli ingressi e delle uscite
    RegionCounterContare gli oggetti all'interno di una o più regioni arbitrarie, incluse quelle non convesseConteggi 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.

Commenti