Gestione delle code con Ultralytics YOLOv8 🚀
Che cos'è la gestione delle code?
La gestione delle code Ultralytics YOLOv8 consiste nell'organizzare e controllare le code di persone o veicoli per ridurre i tempi di attesa e migliorare l'efficienza. Si tratta di ottimizzare le code per migliorare la soddisfazione dei clienti e le prestazioni del sistema in vari contesti come la vendita al dettaglio, le banche, gli aeroporti e le strutture sanitarie.
Guarda: Come implementare la gestione delle code con Ultralytics YOLOv8 | Aeroporto e stazione della metropolitana
Vantaggi della gestione delle code?
- Riduzione dei tempi di attesa: I sistemi di gestione delle code organizzano in modo efficiente le code, riducendo al minimo i tempi di attesa dei clienti. Questo porta a migliorare i livelli di soddisfazione dei clienti, che passano meno tempo ad aspettare e più tempo a interagire con i prodotti o i servizi.
- Maggiore efficienza: L'implementazione della gestione delle code consente alle aziende di allocare le risorse in modo più efficace. Analizzando i dati sulle code e ottimizzando l'impiego del personale, le aziende possono snellire le operazioni, ridurre i costi e migliorare la produttività complessiva.
Applicazioni nel mondo reale
Logistica | Vendita al dettaglio |
---|---|
Gestione delle code alla biglietteria dell'aeroporto Utilizzo Ultralytics YOLOv8 | Monitoraggio delle code nella folla Ultralytics YOLOv8 |
Esempio di gestione delle code con YOLOv8
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
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("queue_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
queue = solutions.QueueManager(
names=model.names,
reg_pts=queue_region,
line_thickness=3,
fontsize=1.0,
region_color=(255, 144, 31),
)
while cap.isOpened():
success, im0 = cap.read()
if success:
tracks = model.track(im0, show=False, persist=True, verbose=False)
out = queue.process_queue(im0, tracks)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
continue
print("Video frame is empty or video processing has been successfully completed.")
break
cap.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
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("queue_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
queue = solutions.QueueManager(
names=model.names,
reg_pts=queue_region,
line_thickness=3,
fontsize=1.0,
region_color=(255, 144, 31),
)
while cap.isOpened():
success, im0 = cap.read()
if success:
tracks = model.track(im0, show=False, persist=True, verbose=False, classes=0) # Only person class
out = queue.process_queue(im0, tracks)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
continue
print("Video frame is empty or video processing has been successfully completed.")
break
cap.release()
cv2.destroyAllWindows()
Argomenti QueueManager
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
names |
dict |
model.names |
Un dizionario che mappa gli ID delle classi con i nomi delle classi. |
reg_pts |
list of tuples |
[(20, 400), (1260, 400)] |
Punti che definiscono il poligono della regione di conteggio. Per impostazione predefinita è un rettangolo predefinito. |
line_thickness |
int |
2 |
Spessore delle linee di annotazione. |
track_thickness |
int |
2 |
Spessore delle linee dei binari. |
view_img |
bool |
False |
Se visualizzare le cornici dell'immagine. |
region_color |
tuple |
(255, 0, 255) |
Colore delle linee della regione di conteggio (BGR). |
view_queue_counts |
bool |
True |
Se visualizzare il conteggio delle code. |
draw_tracks |
bool |
False |
Se disegnare o meno le tracce degli oggetti. |
count_txt_color |
tuple |
(255, 255, 255) |
Colore del testo del conteggio (BGR). |
track_color |
tuple |
None |
Colore dei binari. Se None , verranno utilizzati colori diversi per i diversi tracciati. |
region_thickness |
int |
5 |
Spessore delle linee della regione di conteggio. |
fontsize |
float |
0.7 |
Dimensione del carattere per le annotazioni di testo. |
Argomenti model.track
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
im0 |
None |
directory di origine per le immagini o i video |
persist |
bool |
False |
persistenza dei brani tra i fotogrammi |
tracker |
str |
botsort.yaml |
Metodo di tracciamento 'bytetrack' o 'botsort' |
conf |
float |
0.3 |
Soglia di fiducia |
iou |
float |
0.5 |
Soglia IOU |
classes |
list |
None |
filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3]. |
verbose |
bool |
True |
Visualizza i risultati del tracciamento dell'oggetto |
DOMANDE FREQUENTI
Come posso utilizzare Ultralytics YOLOv8 per la gestione delle code in tempo reale?
Per utilizzare Ultralytics YOLOv8 per la gestione delle code in tempo reale, puoi seguire i seguenti passaggi:
- Carica il modello YOLOv8 con
YOLO("yolov8n.pt")
. - Cattura il feed video utilizzando
cv2.VideoCapture
. - Definisci la regione di interesse (ROI) per la gestione delle code.
- Elabora i frame per rilevare gli oggetti e gestire le code.
Ecco un esempio minimo:
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video.mp4")
queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
queue = solutions.QueueManager(
names=model.names,
reg_pts=queue_region,
line_thickness=3,
fontsize=1.0,
region_color=(255, 144, 31),
)
while cap.isOpened():
success, im0 = cap.read()
if success:
tracks = model.track(im0, show=False, persist=True, verbose=False)
out = queue.process_queue(im0, tracks)
cv2.imshow("Queue Management", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
L'utilizzo di Ultralytics HUB può semplificare questo processo, fornendo una piattaforma di facile utilizzo per l'implementazione e la gestione della tua soluzione di gestione delle code.
Quali sono i principali vantaggi dell'utilizzo di Ultralytics YOLOv8 per la gestione delle code?
L'utilizzo di Ultralytics YOLOv8 per la gestione delle code offre diversi vantaggi:
- Riduzione dei tempi di attesa: Organizza in modo efficiente le code, riducendo i tempi di attesa dei clienti e aumentandone la soddisfazione.
- Migliorare l'efficienza: Analizza i dati sulle code per ottimizzare l'impiego del personale e le operazioni, riducendo così i costi.
- Avvisi in tempo reale: Fornisce notifiche in tempo reale per le code lunghe, consentendo un intervento rapido.
- Scalabilità: Facilmente scalabile in ambienti diversi come la vendita al dettaglio, gli aeroporti e la sanità.
Per maggiori dettagli, esplora le nostre soluzioni di Queue Management.
Perché dovrei scegliere Ultralytics YOLOv8 rispetto a concorrenti come TensorFlow o Detectron2 per la gestione delle code?
Ultralytics YOLOv8 ha diversi vantaggi rispetto a TensorFlow e Detectron2 per la gestione delle code:
- Prestazioni in tempo reale: YOLOv8 è noto per le sue capacità di rilevamento in tempo reale, che offrono una maggiore velocità di elaborazione.
- Facilità d'uso: Ultralytics offre un'esperienza facile da usare, dalla formazione all'implementazione, tramite Ultralytics HUB.
- Modelli preaddestrati: Accesso a una serie di modelli preaddestrati, che riducono al minimo il tempo necessario per la configurazione.
- Supporto della comunità: L'ampia documentazione e il supporto attivo della comunità facilitano la risoluzione dei problemi.
Scopri come iniziare a lavorare con Ultralytics YOLO.
Ultralytics YOLOv8 è in grado di gestire più tipi di code, come ad esempio negli aeroporti e nei negozi?
Sì, Ultralytics YOLOv8 può gestire diversi tipi di code, comprese quelle degli aeroporti e degli ambienti di vendita al dettaglio. Configurando il QueueManager con regioni e impostazioni specifiche, YOLOv8 può adattarsi a diversi layout e densità delle code.
Esempio per gli aeroporti:
queue_region_airport = [(50, 600), (1200, 600), (1200, 550), (50, 550)]
queue_airport = solutions.QueueManager(
names=model.names,
reg_pts=queue_region_airport,
line_thickness=3,
fontsize=1.0,
region_color=(0, 255, 0),
)
Per maggiori informazioni sulle diverse applicazioni, consulta la nostra sezione Applicazioni del mondo reale.
Quali sono le applicazioni reali di Ultralytics YOLOv8 nella gestione delle code?
Ultralytics YOLOv8 è utilizzato in diverse applicazioni reali per la gestione delle code:
- Vendita al dettaglio: Monitora le linee di cassa per ridurre i tempi di attesa e migliorare la soddisfazione dei clienti.
- Aeroporti: Gestisce le code alle biglietterie e ai controlli di sicurezza per rendere più agevole l'esperienza dei passeggeri.
- Assistenza sanitaria: Ottimizza il flusso dei pazienti in cliniche e ospedali.
- Banche: Migliora il servizio ai clienti gestendo in modo efficiente le code nelle banche.
Per saperne di più, consulta il nostro blog sulla gestione delle code nel mondo reale.