Conteggio oggetti con Ultralytics YOLO26#
Che cos'è il conteggio degli oggetti?#
Il conteggio degli oggetti con Ultralytics YOLO26 implica l'identificazione e il conteggio accurati di specifici oggetti in video e flussi di telecamere. YOLO26 eccelle nelle applicazioni in tempo reale, fornendo un conteggio degli oggetti efficiente e preciso per vari scenari come l'analisi della folla e la sorveglianza, grazie ai suoi algoritmi all'avanguardia e alle capacità di deep learning.
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
Vantaggi del conteggio degli oggetti#
- Ottimizzazione delle risorse: Il conteggio degli oggetti facilita una gestione efficiente delle risorse fornendo conteggi accurati, ottimizzando l'allocazione delle risorse in applicazioni come la gestione dell'inventario.
- Sicurezza avanzata: Il conteggio degli oggetti migliora la sicurezza e la sorveglianza tracciando e conteggiando accuratamente le entità, aiutando nella rilevazione delle minacce in modo proattivo.
- Processo decisionale informato: Il conteggio degli oggetti offre preziosi spunti per il processo decisionale, ottimizzando i processi nel commercio al dettaglio, nella gestione del traffico e in vari altri settori.
Applicazioni nel mondo reale#
| Logistica | Acquacoltura |
|---|---|
![]() | ![]() |
| Conteggio pacchetti su nastro trasportatore con Ultralytics YOLO26 | Conteggio pesci in mare con Ultralytics YOLO26 |
Conta gli oggetti con YOLO26#
Definisci un conteggio region — due punti per una linea o tre o più per un poligono — e passalo alla soluzione ObjectCounter. Il contatore traccia ciascun oggetto tra i fotogrammi e calcola i conteggi IN/OUT quando gli oggetti tracciati attraversano la linea o passano attraverso la regione, restituendo un fotogramma annotato che puoi scrivere in un video di output.
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"L'argomento region accetta due punti (per una linea) o un poligono con tre o più punti. Definisci le coordinate nell'ordine in cui devono essere collegate in modo che il contatore sappia esattamente dove si verificano le entrate e le uscite.
Argomenti di ObjectCounter#
Ecco una tabella con gli argomenti di ObjectCounter:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso verso un file del modello Ultralytics YOLO. |
show_in | bool | True | Flag per controllare se visualizzare i conteggi in ingresso sul flusso video. |
show_out | bool | True | Flag per controllare se visualizzare i conteggi in uscita sul flusso video. |
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. |
La soluzione ObjectCounter consente l'uso di diversi argomenti track:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'tracktrack.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.1 | 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. |
verbose | bool | True | Controlla la visualizzazione dei risultati di tracciamento, fornendo un output visivo degli oggetti tracciati. |
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 supportati gli argomenti di visualizzazione elencati di seguito:
| 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. |
line_width | int or None | None | Specifica lo spessore della linea dei bounding box. Se None, lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine. Offre una personalizzazione visiva per una maggiore chiarezza. |
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. |
FAQ#
Per contare gli oggetti in un video usando Ultralytics YOLO26, puoi seguire questi passaggi:
- Importa le librerie necessarie (
cv2,ultralytics). - Definisci la regione di conteggio (ad esempio, un poligono, una linea, ecc.).
- Configura l'acquisizione video e inizializza il contatore di oggetti.
- Elabora ogni frame per tracciare gli oggetti e contarli all'interno della regione definita.
Ecco un semplice esempio per il conteggio in una regione:
import cv2 from ultralytics import solutions def count_objects_in_region(video_path, output_video_path, model_path): """Count objects in a specific region within a video.""" cap = cv2.VideoCapture(video_path) 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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")Per configurazioni e opzioni più avanzate, dai un'occhiata alla soluzione RegionCounter per il conteggio di oggetti in più regioni contemporaneamente.
- Importa le librerie necessarie (
Utilizzare Ultralytics YOLO26 per il conteggio degli oggetti offre diversi vantaggi:
- Ottimizzazione delle risorse: Facilita una gestione efficiente delle risorse fornendo conteggi accurati, aiutando a ottimizzare l'allocazione delle risorse in settori come la gestione dell'inventario.
- Sicurezza avanzata: Migliora la sicurezza e la sorveglianza tracciando e conteggiando accuratamente le entità, aiutando nella rilevazione proattiva delle minacce e nei sistemi di sicurezza.
- Processo decisionale informato: Offre informazioni preziose per il processo decisionale, ottimizzando i processi in ambiti come il commercio al dettaglio, la gestione del traffico e altro ancora.
- Elaborazione in tempo reale: L'architettura di YOLO26 consente l'inferenza in tempo reale, rendendolo adatto a flussi video dal vivo e applicazioni sensibili al tempo.
Per esempi di implementazione e applicazioni pratiche, esplora la soluzione TrackZone per il tracciamento di oggetti in zone specifiche.
Per contare classi specifiche di oggetti usando Ultralytics YOLO26, devi specificare le classi a cui sei interessato durante la fase di tracciamento. Di seguito è riportato un esempio in Python:
import cv2 from ultralytics import solutions def count_specific_classes(video_path, output_video_path, model_path, classes_to_count): """Count specific classes of objects in a video.""" cap = cv2.VideoCapture(video_path) 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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) line_points = [(20, 400), (1080, 400)] counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = counter(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows() count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])In questo esempio,
classes_to_count=[0, 2]significa che conta oggetti della classe0e2(ad esempio, persona e auto nel dataset COCO). Puoi trovare maggiori informazioni sugli indici di classe nella documentazione del dataset COCO.Ultralytics YOLO26 offre diversi vantaggi rispetto ad altri modelli di rilevamento oggetti come Faster R-CNN, SSD e le versioni precedenti di YOLO:
- Velocità ed efficienza: YOLO26 offre capacità di elaborazione in tempo reale, rendendolo ideale per applicazioni che richiedono inferenza ad alta velocità, come la sorveglianza e la guida autonoma.
- Accuratezza: Fornisce un'accuratezza all'avanguardia per attività di rilevamento e tracciamento degli oggetti, riducendo il numero di falsi positivi e migliorando l'affidabilità complessiva del sistema.
- Facilità di integrazione: YOLO26 offre un'integrazione perfetta con varie piattaforme e dispositivi, inclusi dispositivi mobili e dispositivi edge, il che è fondamentale per le moderne applicazioni di intelligenza artificiale.
- Flessibilità: Supporta varie attività come il rilevamento di oggetti, la segmentazione e il tracciamento con modelli configurabili per soddisfare specifici requisiti del caso d'uso.
Dai un'occhiata alla documentazione di YOLO26 di Ultralytics per un'analisi approfondita delle sue funzionalità e dei confronti delle prestazioni.
Sì, Ultralytics YOLO26 è perfettamente adatto per applicazioni avanzate come l'analisi della folla e la gestione del traffico grazie alle sue capacità di rilevamento in tempo reale, alla scalabilità e alla flessibilità di integrazione. Le sue funzionalità avanzate consentono il tracciamento, il conteggio e la classificazione accurata degli oggetti in ambienti dinamici. Esempi di casi d'uso includono:
- Analisi della folla: Monitora e gestisci grandi assembramenti, garantendo la sicurezza e ottimizzando il flusso della folla con il conteggio basato su regioni.
- Gestione del traffico: Traccia e conta i veicoli, analizza i modelli di traffico e gestisci la congestione in tempo reale con le capacità di stima della velocità.
- Analisi retail: Analizza i modelli di movimento dei clienti e le interazioni con i prodotti per ottimizzare il layout dei negozi e migliorare l'esperienza del cliente.
- Automazione industriale: Conta i prodotti sui nastri trasportatori e monitora le linee di produzione per il controllo qualità e i miglioramenti dell'efficienza.
Per applicazioni più specializzate, esplora le Soluzioni Ultralytics per un set completo di strumenti progettati per le sfide di visione artificiale del mondo reale.

