Conteggio degli oggetti con Ultralytics YOLO26
Cos'è il conteggio degli oggetti?
Il conteggio degli oggetti con Ultralytics YOLO26 implica l'identificazione e il conteggio accurati di oggetti specifici 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.
Guarda: Come eseguire il conteggio degli oggetti in tempo reale con Ultralytics YOLO26 🍏
Vantaggi del Conteggio degli Oggetti
- Ottimizzazione delle risorse: Il conteggio degli oggetti facilita la gestione efficiente delle risorse fornendo conteggi accurati, ottimizzando l'allocazione delle risorse in applicazioni come la gestione dell'inventario.
- Maggiore sicurezza: Il conteggio degli oggetti migliora la sicurezza e la sorveglianza tracciando e contando accuratamente le entità, aiutando nel rilevamento proattivo delle minacce.
- Processo decisionale informato: Il conteggio degli oggetti offre preziose informazioni 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 di pacchetti su nastro trasportatore Utilizzando Ultralytics YOLO26 | Conteggio di pesci in mare utilizzando Ultralytics YOLO26 |
Conteggio degli oggetti usando Ultralytics YOLO
# 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)]"
Il region l'argomento 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.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangular region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo26n.pt", # model="yolo26n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes, e.g., person and car with the COCO pretrained model.
# tracker="botsort.yaml", # choose trackers, e.g., "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter Argomenti
Ecco una tabella con i ObjectCounter argomenti:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso di un file modello Ultralytics YOLO. |
show_in | bool | True | Flag per controllare se visualizzare i conteggi in streaming video. |
show_out | bool | True | Flag per controllare se visualizzare i conteggi out streaming video. |
region | list | '[(20, 400), (1260, 400)]' | Elenco dei punti che definiscono la regione di conteggio. |
Il ObjectCounter solution consente l'utilizzo di diversi track argomenti:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml. |
conf | float | 0.1 | Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi. |
iou | float | 0.7 | Imposta la soglia Intersection over Union (IoU) per filtrare i detect sovrapposti. |
classes | list | None | Filtra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
verbose | bool | True | Controlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati. |
device | str | None | Specifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0 oppure 0). Consente agli utenti di scegliere tra CPU, una GPU specifica 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, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
line_width | int or None | None | Specifica lo spessore della linea dei riquadri di delimitazione. Se None, lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine, fornendo una personalizzazione visiva per una maggiore chiarezza. |
show_conf | bool | True | Visualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica sulla certezza del modello per ogni rilevamento. |
show_labels | bool | True | Mostra le etichette per ogni rilevamento nell'output visivo, fornendo una comprensione immediata degli oggetti rilevati. |
FAQ
Come si contano gli oggetti in un video utilizzando Ultralytics YOLO26?
Per contare gli oggetti in un video utilizzando Ultralytics YOLO26, puoi seguire questi passaggi:
- Importa le librerie necessarie (
cv2,ultralytics). - Definire la regione di conteggio (ad esempio, un poligono, una linea, ecc.).
- Imposta l'acquisizione video e inizializza il contatore di oggetti.
- Elabora ogni frame per track gli oggetti e contarli all'interno della regione definita.
Ecco un semplice esempio di 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, consulta la soluzione RegionCounter per il conteggio simultaneo di oggetti in più regioni.
Quali sono i vantaggi di utilizzare Ultralytics YOLO26 per il conteggio degli oggetti?
L'utilizzo di Ultralytics YOLO26 per il conteggio degli oggetti offre numerosi vantaggi:
- Ottimizzazione delle risorse: Facilita la gestione efficiente delle risorse fornendo conteggi accurati, aiutando a ottimizzare l'allocazione delle risorse in settori come la gestione dell'inventario.
- Maggiore sicurezza: Migliora la sicurezza e la sorveglianza tracciando e contando accuratamente le entità, aiutando nel rilevamento proattivo delle minacce e nei sistemi di sicurezza.
- Processi Decisionali Informati: Offre preziose informazioni per il processo decisionale, ottimizzando i processi in settori come la vendita 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 per flussi video in diretta e applicazioni sensibili al tempo.
Per esempi di implementazione e applicazioni pratiche, esplora la soluzione TrackZone per il tracciamento di oggetti in zone specifiche.
Come posso contare classi specifiche di oggetti utilizzando Ultralytics YOLO26?
Per contare classi specifiche di oggetti utilizzando Ultralytics YOLO26, è necessario specificare le classi di interesse durante la fase di tracking. Di seguito è riportato un esempio 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 gli oggetti della classe 0 e 2 (ad esempio, persona e auto nel dataset COCO). Puoi trovare maggiori informazioni sugli indici di classe nel Documentazione del dataset COCO.
Perché dovrei utilizzare YOLO26 rispetto ad altri modelli di rilevamento oggetti per applicazioni in tempo reale?
Ultralytics YOLO26 offre numerosi 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.
- Precisione: Fornisce una precisione 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 edge, il che è cruciale per le moderne applicazioni di IA.
- Flessibilità: Supporta varie attività come il rilevamento di oggetti, la segmentazione e il tracciamento con modelli configurabili per soddisfare requisiti specifici del caso d'uso.
Consulta la documentazione di Ultralytics YOLO26 per un approfondimento sulle sue funzionalità e sui confronti delle prestazioni.
Posso utilizzare YOLO26 per applicazioni avanzate come l'analisi della folla e la gestione del traffico?
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, scalabilità e flessibilità di integrazione. Le sue funzionalità avanzate consentono il tracking, il conteggio e la classificazione degli oggetti con elevata precisione in ambienti dinamici. Esempi di casi d'uso includono:
- Analisi della folla: Monitora e gestisci grandi raduni, garantendo la sicurezza e ottimizzando il flusso della folla con il conteggio basato sulla regione.
- Gestione del traffico: Traccia e conta i veicoli, analizza i modelli di traffico e gestisci la congestione in tempo reale con funzionalità di stima della velocità.
- Retail Analytics: Analizza i modelli di movimento dei clienti e le interazioni con i prodotti per ottimizzare la disposizione del negozio e migliorare l'esperienza del cliente.
- Automazione industriale: Contare i prodotti sui nastri trasportatori e monitorare le linee di produzione per il controllo qualità e i miglioramenti dell'efficienza.
Per applicazioni più specializzate, esplora le Soluzioni Ultralytics per una serie completa di strumenti progettati per le sfide del mondo reale nella computer vision.

