Ultralytics YOLO27:
Get Started

Conteggio degli oggetti nelle regioni con Ultralytics YOLO26#

La soluzione RegionCounter di Ultralytics YOLO26 traccia gli oggetti tra i fotogrammi del video e, a ogni fotogramma, conta quelli il cui centro del riquadro di delimitazione si trova all'interno di ciascuna regione definita. Ogni regione viene disegnata sul fotogramma con il proprio conteggio aggiornato, così puoi monitorare più zone, come corsie di negozi, corsie stradali o aree di produzione, con una sola chiamata Python o un comando CLI.



Guarda: Conteggio degli oggetti in regioni diverse con Ultralytics YOLO | Soluzioni Ultralytics

Perché usare il conteggio nelle regioni?#

  • Più zone in un'unica elaborazione: Passa un dizionario di poligoni con nome e ogni zona avrà un conteggio indipendente visualizzato sul fotogramma, così un unico flusso video copre tutte le aree che ti interessano.
  • Tracciamento integrato: La soluzione esegue internamente il rilevamento YOLO26 e il tracciamento degli oggetti, senza bisogno di configurare una pipeline di tracciamento separata.
  • Conteggi accessibili via codice: Ogni fotogramma elaborato restituisce un oggetto dei risultati con un dizionario dei conteggi per regione, pronto per dashboard, avvisi o registrazione.

Applicazioni nel mondo reale#

Commercio al dettaglioStrade del mercato
Ultralytics YOLO conta le persone all'interno di regioni poligonali disegnate in un negozioConteggi delle regioni di Ultralytics YOLO sovrapposti a una strada di mercato affollata
Conteggio delle persone nelle regioni con Ultralytics YOLOConteggio della folla nelle regioni con Ultralytics YOLO

Come contare gli oggetti nelle regioni con Ultralytics YOLO#

Esegui la soluzione RegionCounter su una sorgente video dalla CLI o da Python. Una regione può essere un elenco di punti (una singola zona) oppure un dizionario che associa i nomi delle zone agli elenchi di punti. L'esempio Python seguente conta gli oggetti in due regioni denominate e scrive i fotogrammi elaborati in un file video di output:

Conteggio degli oggetti nelle regioni con Ultralytics YOLO
# Run a region counting example
yolo solutions region show=True

# Pass a source video
yolo solutions region source="path/to/video.mp4"

# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Argomenti di RegionCounter()#

Ecco una tabella con gli argomenti di RegionCounter:

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 RegionCounter consente di usare i parametri di tracciamento degli oggetti:

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 supportate anche le seguenti impostazioni 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.

Come funziona il conteggio nelle regioni#

La soluzione RegionCounter trasforma ogni regione che passi in un poligono con almeno tre punti. Un semplice elenco di punti diventa un'unica zona denominata Region#01, mentre un dizionario mantiene i nomi delle zone scelti da te; ogni zona viene disegnata con un colore distinto della palette Ultralytics. Ogni fotogramma viene quindi elaborato in tre passaggi:

  1. Il tracking di YOLO26 rileva e segue ogni oggetto nel frame
  2. Per ogni oggetto tracciato, la soluzione calcola il centro del riquadro di delimitazione e verifica in quali poligoni delle regioni ricade
  3. Il conteggio di ogni regione viene visualizzato al centro della regione e azzerato prima del fotogramma successivo

Poiché i conteggi ripartono da zero a ogni fotogramma, il numero mostrato in una regione rappresenta l'occupazione corrente, ovvero quanti oggetti si trovano al suo interno in quel momento, non un totale progressivo. Per contare cumulativamente gli oggetti che attraversano un confine, usa invece la soluzione ObjectCounter.

Ogni chiamata restituisce anche un oggetto dei risultati, il cui attributo plot_im contiene il fotogramma annotato e il cui dizionario region_counts associa i nomi delle regioni ai rispettivi conteggi, così puoi usare i valori nella logica della tua applicazione.

Conclusione#

La soluzione RegionCounter di Ultralytics YOLO26 monitora i conteggi degli oggetti in tempo reale in tutte le zone denominate che ti servono, con poche righe di codice. Per andare oltre, conta gli attraversamenti dei confini con il conteggio degli oggetti, segui gli oggetti all'interno di una singola zona con TrackZone oppure esplora le altre Ultralytics Solutions.

Domande frequenti#

  • Ultralytics YOLO26 conta gli oggetti nelle regioni tracciando ogni oggetto nel fotogramma e verificando se il centro del relativo riquadro di delimitazione si trova all'interno di ciascun poligono definito dall'utente. Il conteggio mostrato in una regione rappresenta l'occupazione corrente di quel fotogramma, non un totale cumulativo. Le opzioni di configurazione sono elencate nella sezione RegionCounter() Arguments.

  • Passa l'argomento region come dizionario che associa i nomi delle zone agli elenchi di punti, come nell'esempio principale:

    from ultralytics import solutions
    
    region_points = {
        "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
        "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
    }
    regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)

    Ogni zona denominata viene disegnata con un colore distinto e un conteggio indipendente.

  • L'oggetto restituito da ogni chiamata regioncounter(im0) contiene un dizionario region_counts che associa i nomi delle regioni ai rispettivi conteggi, oltre a plot_im (il fotogramma annotato) e total_tracks (il numero di oggetti tracciati). Stampa l'oggetto dei risultati per esaminare tutti i campi disponibili.

  • Sì. Passa l'argomento classes con gli indici delle classi da mantenere, ad esempio classes=[0] per contare solo le persone con un modello preaddestrato su COCO. L'elenco completo degli argomenti relativi al tracking si trova nella sezione RegionCounter() Argomenti.

  • RegionCounter mostra quanti oggetti si trovano all'interno di ciascuna zona poligonale nel frame corrente, mentre ObjectCounter conta gli oggetti cumulativamente mentre attraversano una linea o il confine di una regione, monitorando i totali di ingressi e uscite. Usa RegionCounter per l'occupazione in tempo reale di una o più zone e ObjectCounter per contare ingressi e uscite; solo ObjectCounter supporta le regioni a forma di linea.

Commenti