Ultralytics YOLO27:

Conteggio degli oggetti nelle regioni con Ultralytics YOLO26#

La soluzione RegionCounter di Ultralytics YOLO26 rileva gli oggetti nei fotogrammi del video e, a ogni fotogramma, conta gli oggetti 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 in tempo reale, così puoi monitorare diverse zone, come corsie di negozi, carreggiate stradali o aree di produzione, con una singola chiamata Python o un comando CLI.



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

Perché usare il conteggio nelle regioni?#

  • Più zone in un'unica elaborazione: passa un dizionario di poligoni denominati e ogni zona riceverà un conteggio indipendente disegnato sul fotogramma, così un singolo flusso video copre tutte le aree che ti interessano.
  • Tracking integrato: la soluzione esegue internamente il rilevamento YOLO26 e il tracking degli oggetti, quindi non devi configurare una pipeline di tracking separata.
  • Conteggi leggibili a livello programmatico: ogni fotogramma elaborato restituisce un oggetto dei risultati con un dizionario dei conteggi per regione, pronto per dashboard, avvisi o registrazione dei log.

Applicazioni nel mondo reale#

Vendita al dettaglioStrade del mercato
Ultralytics YOLO conta le persone all'interno di regioni poligonali disegnate in un negozio al dettaglioConteggi delle regioni di Ultralytics YOLO sovrapposti a una strada del 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) o 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 RegionCounter()#

Ecco una tabella con gli argomenti RegionCounter:

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

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.

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

Come funziona il conteggio nelle regioni#

La soluzione RegionCounter trasforma ogni regione passata in un poligono, con almeno tre punti per regione. Un semplice elenco di punti diventa una singola zona denominata Region#01, mentre un dizionario conserva i nomi delle zone scelti da te; ogni zona viene disegnata con un colore specifico della palette Ultralytics. Ogni fotogramma viene quindi elaborato in tre passaggi:

  1. Il tracking di YOLO26 rileva e segue ogni oggetto nel fotogramma
  2. Per ogni oggetto sottoposto a tracking, la soluzione calcola il centro del riquadro di delimitazione e verifica quali poligoni delle regioni lo contengono
  3. Il conteggio di ogni regione viene disegnato al suo centro e i conteggi vengono azzerati prima del fotogramma successivo

Poiché i conteggi ripartono da zero a ogni fotogramma, il numero mostrato su una regione rappresenta la sua occupazione attuale, ovvero quanti oggetti si trovano al suo interno in quel momento, non un totale cumulativo. 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 relativi conteggi, così puoi usare i numeri nella logica della tua applicazione.

Conclusioni#

La soluzione RegionCounter di Ultralytics YOLO26 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 dei confini con il conteggio degli oggetti, 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 rilevando 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 su una regione rappresenta la sua occupazione attuale in quel fotogramma, non un totale cumulativo. Le opzioni di configurazione sono elencate nella sezione RegionCounter() Argomenti.

  • Passa l'argomento region come un 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 specifico e un conteggio indipendente.

  • L'oggetto restituito da ogni chiamata regioncounter(im0) contiene un dizionario region_counts che associa i nomi delle regioni ai relativi conteggi, oltre a plot_im (il fotogramma annotato) e total_tracks (il numero di oggetti sottoposti a tracking). 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 è disponibile nella sezione RegionCounter() Argomenti.

  • RegionCounter mostra quanti oggetti si trovano in ogni zona poligonale nel fotogramma corrente, mentre ObjectCounter conta cumulativamente gli oggetti quando attraversano una linea o il confine di una regione, tenendo traccia dei totali in entrata e in uscita. Usa RegionCounter per l'occupazione in tempo reale di una o più zone e ObjectCounter per contare ingressi e uscite; le regioni a forma di linea sono supportate solo da ObjectCounter.

Commenti