Conteggio di oggetti in regioni con Ultralytics YOLO26#
La RegionCounter solution in Ultralytics YOLO26 traccia gli oggetti tra i fotogrammi video e, a ogni fotogramma, conta gli oggetti il cui centro del bounding-box cade all'interno di ciascuna regione definita. Ogni regione viene disegnata sul fotogramma con il proprio conteggio in tempo reale, consentendoti di monitorare diverse zone, come i corsie di un negozio, le corsie stradali o le aree di produzione, con una singola chiamata Python o comando CLI.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Perché usare il conteggio per regioni?#
- Zone multiple in un solo passaggio: Passa un dizionario di poligoni denominati e ogni zona ottiene un conteggio indipendente disegnato sul fotogramma, così un singolo flusso video copre ogni area che ti interessa.
- Tracciamento integrato: La soluzione esegue internamente il rilevamento YOLO26 e il object tracking, quindi non c'è una pipeline di tracciamento separata da configurare.
- Conteggi leggibili programmaticamente: Ogni fotogramma elaborato restituisce un oggetto risultati con un dizionario dei conteggi per regione, pronto per dashboard, avvisi o logging.
Applicazioni nel mondo reale#
| Vendita al dettaglio | Strade commerciali |
|---|---|
![]() | ![]() |
| Conteggio persone in regioni con Ultralytics YOLO | Conteggio folla in regioni con Ultralytics YOLO |
Come contare oggetti in regioni con Ultralytics YOLO#
Esegui la soluzione RegionCounter su una sorgente video da CLI o Python. Una regione può essere una lista di punti (una singola zona) o un dizionario che mappa nomi di zone a liste di punti. L'esempio Python qui sotto conta gli oggetti in due regioni nominate e scrive i fotogrammi elaborati su un file video di output:
# 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:
| 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 RegionCounter consente l'uso dei parametri di tracciamento degli oggetti:
| 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 supportate le seguenti impostazioni 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. |
Come funziona il conteggio per regioni#
La RegionCounter solution trasforma ogni regione passata in un poligono, con almeno tre punti per regione. Un elenco semplice di punti diventa un'unica zona denominata Region#01, mentre un dizionario conserva i tuoi nomi di zona personalizzati; ogni zona viene disegnata con il proprio colore dalla tavolozza di Ultralytics. Ciascun fotogramma viene quindi elaborato in tre fasi:
- Il tracciamento YOLO26 rileva e segue ogni oggetto nel fotogramma
- Per ogni oggetto tracciato, la soluzione calcola il centro del bounding-box e controlla quali poligoni di regione lo contengono
- Il conteggio di ogni regione viene disegnato al suo centro e i conteggi si azzerano prima del fotogramma successivo
Poiché i conteggi si azzerano a ogni fotogramma, il numero mostrato su una regione rappresenta la sua occupazione attuale, ovvero quanti oggetti si trovano al suo interno in questo momento, e non un totale cumulativo. Per contare cumulativamente gli oggetti che attraversano un confine, utilizza invece la ObjectCounter solution.
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, permettendoti di inviare i numeri alla logica della tua applicazione.
Conclusione#
La soluzione Ultralytics YOLO26 RegionCounter monitora i conteggi degli oggetti in tempo reale in tutte le zone denominate di cui hai bisogno con poche righe di codice. Per approfondire, conta gli attraversamenti di confine con il object counting, segui gli oggetti all'interno di una singola zona con TrackZone oppure esplora le altre Ultralytics Solutions.
FAQ#
Ultralytics YOLO26 conta gli oggetti nelle regioni tracciando ogni oggetto nel fotogramma e verificando se il centro del suo bounding-box si trova all'interno di ciascun poligono definito dall'utente. Il conteggio mostrato su una regione è la sua occupazione corrente per quel fotogramma, non un totale cumulativo. Le opzioni di configurazione sono elencate nella sezione
RegionCounter()Arguments.Passa l'argomento
regioncome un dizionario che associa i nomi delle zone agli elenchi di punti, come nel main example: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 nominata viene disegnata con il proprio colore con un conteggio indipendente.
L'oggetto restituito da ogni chiamata
regioncounter(im0)include un dizionarioregion_countsche associa i nomi delle regioni ai rispettivi conteggi, insieme aplot_im(il fotogramma annotato) etotal_tracks(il numero di oggetti tracciati). Stampa l'oggetto dei risultati per ispezionare tutti i campi disponibili.Sì. Passa l'argomento
classescon gli indici di classe da mantenere, ad esempioclasses=[0]per contare solo le persone con un modello preaddestrato su COCO. L'elenco completo degli argomenti relativi al tracciamento si trova nella sezioneRegionCounter()Arguments.RegionCountermostra quanti oggetti si trovano all'interno di ciascuna zona poligonale nel fotogramma corrente, mentre ObjectCounter conta gli oggetti in modo cumulativo man mano che superano una linea o il confine di una regione, tracciando i totali in entrata e in uscita. UsaRegionCounterper l'occupazione in tempo reale di una o più zone eObjectCounterper il conteggio degli ingressi e delle uscite; le regioni a forma di linea sono supportate esclusivamente daObjectCounter.

