Gestão de filas de espera utilizando Ultralytics YOLOv8 🚀
O que é a gestão de filas de espera?
Gestão de filas de espera utilizando Ultralytics YOLOv8 envolve a organização e o controlo de filas de pessoas ou veículos para reduzir os tempos de espera e aumentar a eficiência. Trata-se de otimizar as filas de espera para melhorar a satisfação do cliente e o desempenho do sistema em vários contextos, como o comércio a retalho, os bancos, os aeroportos e as unidades de saúde.
Observa: Como implementar a gestão de filas de espera com Ultralytics YOLOv8 | Aeroporto e estação de metro
Vantagens da gestão de filas de espera?
- Redução dos tempos de espera: Os sistemas de gestão de filas organizam as filas de forma eficiente, minimizando os tempos de espera dos clientes. Isto leva a melhores níveis de satisfação, uma vez que os clientes passam menos tempo à espera e mais tempo a interagir com os produtos ou serviços.
- Aumenta a eficiência: A implementação da gestão de filas de espera permite que as empresas atribuam recursos de forma mais eficaz. Ao analisar os dados das filas de espera e otimizar a distribuição do pessoal, as empresas podem simplificar as operações, reduzir os custos e melhorar a produtividade geral.
Aplicações no mundo real
Logística | Retalho |
---|---|
Gestão de filas de espera na bilheteira do aeroporto Utilizar Ultralytics YOLOv8 | Monitorização de filas de espera na multidão Ultralytics YOLOv8 |
Gestão de filas de espera utilizando YOLOv8 Exemplo
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,
)
while cap.isOpened():
success, im0 = cap.read()
if success:
tracks = model.track(im0, persist=True)
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,
)
while cap.isOpened():
success, im0 = cap.read()
if success:
tracks = model.track(im0, persist=True, 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()
Argumentos QueueManager
Nome | Tipo | Predefinição | Descrição |
---|---|---|---|
names |
dict |
model.names |
Um dicionário que mapeia IDs de classe para nomes de classe. |
reg_pts |
list of tuples |
[(20, 400), (1260, 400)] |
Pontos que definem o polígono da região de contagem. Usa por defeito um retângulo predefinido. |
line_thickness |
int |
2 |
Espessura das linhas de anotação. |
view_img |
bool |
False |
Se pretende apresentar as molduras de imagem. |
draw_tracks |
bool |
False |
Se queres desenhar os rastos dos objectos. |
Argumentos model.track
Argumenta | Tipo | Predefinição | Descrição |
---|---|---|---|
source |
str |
None |
Specifies the source directory for images or videos. Supports file paths and URLs. |
persist |
bool |
False |
Enables persistent tracking of objects between frames, maintaining IDs across video sequences. |
tracker |
str |
botsort.yaml |
Specifies the tracking algorithm to use, e.g., bytetrack.yaml ou botsort.yaml . |
conf |
float |
0.3 |
Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives. |
iou |
float |
0.5 |
Sets the Intersection over Union (IoU) threshold for filtering overlapping detections. |
classes |
list |
None |
Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes. |
verbose |
bool |
True |
Controls the display of tracking results, providing a visual output of tracked objects. |
FAQ
Como posso utilizar Ultralytics YOLOv8 para a gestão de filas de espera em tempo real?
Para utilizar Ultralytics YOLOv8 para a gestão de filas em tempo real, podes seguir estes passos:
- Carrega o modelo YOLOv8 com
YOLO("yolov8n.pt")
. - Captura o feed de vídeo utilizando
cv2.VideoCapture
. - Define a região de interesse (ROI) para a gestão de filas.
- Processa quadros para detetar objetos e gerenciar filas.
Aqui tens um exemplo mínimo:
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,
)
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()
A utilização do Ultralytics HUB pode simplificar este processo, fornecendo uma plataforma de fácil utilização para implementar e gerir a sua solução de gestão de filas.
Quais são as principais vantagens de utilizar Ultralytics YOLOv8 para a gestão de filas de espera?
A utilização do Ultralytics YOLOv8 para a gestão de filas de espera oferece várias vantagens:
- Diminui os tempos de espera: Organiza eficazmente as filas de espera, reduzindo os tempos de espera dos clientes e aumentando a sua satisfação.
- Aumenta a eficiência: Analisa os dados das filas de espera para otimizar a distribuição do pessoal e as operações, reduzindo assim os custos.
- Alertas em tempo real: Fornece notificações em tempo real para filas de espera longas, permitindo uma intervenção rápida.
- Escalabilidade: Facilmente escalável em diferentes ambientes, como retalho, aeroportos e cuidados de saúde.
Para mais informações, explora as nossas soluções de gestão de filas de espera.
Por que razão devo escolher Ultralytics YOLOv8 em vez de concorrentes como TensorFlow ou Detectron2 para a gestão de filas de espera?
Ultralytics YOLOv8 tem várias vantagens sobre TensorFlow e Detectron2 para a gestão de filas de espera:
- Desempenho em tempo real: YOLOv8 é conhecido pelas suas capacidades de deteção em tempo real, oferecendo velocidades de processamento mais rápidas.
- Facilidade de utilização: Ultralytics proporciona uma experiência fácil de utilizar, desde a formação à implementação, através do Ultralytics HUB.
- Modelos pré-treinados: Acede a uma gama de modelos pré-treinados, minimizando o tempo necessário para a configuração.
- Suporte da comunidade: A documentação extensa e o suporte ativo da comunidade facilitam a resolução de problemas.
Aprende a começar com Ultralytics YOLO.
A Ultralytics YOLOv8 consegue gerir vários tipos de filas de espera, por exemplo, em aeroportos e no comércio retalhista?
Sim, Ultralytics YOLOv8 pode gerir vários tipos de filas de espera, incluindo as de aeroportos e ambientes de retalho. Ao configurar o QueueManager com regiões e definições específicas, o YOLOv8 pode adaptar-se a diferentes disposições e densidades de filas.
Exemplo de aeroportos:
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,
)
Para mais informações sobre diversas aplicações, consulta a nossa secção Aplicações do mundo real.
Quais são algumas das aplicações reais de Ultralytics YOLOv8 na gestão de filas de espera?
Ultralytics YOLOv8 é utilizado em várias aplicações do mundo real para a gestão de filas de espera:
- Retalho: Monitoriza as filas de caixa para reduzir os tempos de espera e melhorar a satisfação dos clientes.
- Aeroportos: Gere as filas de espera nos balcões de venda de bilhetes e nos pontos de controlo de segurança para facilitar a experiência dos passageiros.
- Cuidados de saúde: Optimiza o fluxo de pacientes em clínicas e hospitais.
- Bancos: Melhora o serviço ao cliente gerindo as filas de espera de forma eficiente nos bancos.
Consulta o nosso blogue sobre gestão de filas de espera no mundo real para saberes mais.