Bỏ để qua phần nội dung

Quản lý hàng đợi bằng cách sử dụng Ultralytics YOLOv8 🚀

Quản lý hàng đợi là gì?

Quản lý hàng đợi bằng cách sử dụng Ultralytics YOLOv8 liên quan đến việc tổ chức và kiểm soát dòng người hoặc phương tiện để giảm thời gian chờ đợi và nâng cao hiệu quả. Đó là về việc tối ưu hóa hàng đợi để cải thiện sự hài lòng của khách hàng và hiệu suất hệ thống trong các cài đặt khác nhau như bán lẻ, ngân hàng, sân bay và cơ sở chăm sóc sức khỏe.

Ưu điểm của quản lý hàng đợi?

  • Giảm thời gian chờ đợi: Hệ thống quản lý hàng đợi tổ chức hiệu quả hàng đợi, giảm thiểu thời gian chờ đợi cho khách hàng. Điều này dẫn đến mức độ hài lòng được cải thiện khi khách hàng dành ít thời gian chờ đợi hơn và nhiều thời gian hơn để tương tác với các sản phẩm hoặc dịch vụ.
  • Tăng hiệu quả: Thực hiện quản lý hàng đợi cho phép doanh nghiệp phân bổ nguồn lực hiệu quả hơn. Bằng cách phân tích dữ liệu hàng đợi và tối ưu hóa việc triển khai nhân viên, doanh nghiệp có thể hợp lý hóa hoạt động, giảm chi phí và cải thiện năng suất tổng thể.

Ứng dụng trong thế giới thực

Hậu cần Bán lẻ
Quản lý hàng đợi tại quầy vé sân bay bằng cách sử dụng Ultralytics YOLOv8 Giám sát hàng đợi trong đám đông bằng cách sử dụng Ultralytics YOLOv8
Quản lý hàng đợi tại quầy vé sân bay Sử dụng Ultralytics YOLOv8 Giám sát hàng đợi trong đám đông Ultralytics YOLOv8

Quản lý hàng đợi bằng cách sử dụng YOLOv8 Ví dụ

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(
    classes_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(
    classes_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()

Lập luận QueueManager

Tên Kiểu Mặc định Sự miêu tả
classes_names dict model.names Từ điển ánh xạ ID lớp đến tên lớp.
reg_pts list of tuples [(20, 400), (1260, 400)] Các điểm xác định đa giác vùng đếm. Mặc định là một hình chữ nhật được xác định trước.
line_thickness int 2 Độ dày của các dòng chú thích.
track_thickness int 2 Độ dày của các đường ray.
view_img bool False Có hiển thị khung hình ảnh hay không.
region_color tuple (255, 0, 255) Màu sắc của các đường vùng đếm (BGR).
view_queue_counts bool True Có hiển thị số lượng hàng đợi hay không.
draw_tracks bool False Có nên vẽ dấu vết của các đối tượng hay không.
count_txt_color tuple (255, 255, 255) Màu của văn bản đếm (BGR).
track_color tuple None Màu sắc của các bản nhạc. Nếu None, màu sắc khác nhau sẽ được sử dụng cho các bản nhạc khác nhau.
region_thickness int 5 Độ dày của các đường vùng đếm.
fontsize float 0.7 Cỡ chữ cho chú thích văn bản.

Lập luận model.track

Tên Kiểu Mặc định Sự miêu tả
source im0 None Thư mục nguồn cho hình ảnh hoặc video
persist bool False Các rãnh liên tục giữa các khung hình
tracker str botsort.yaml Phương pháp theo dõi 'bytetrack' hoặc 'botsort'
conf float 0.3 Ngưỡng tin cậy
iou float 0.5 Ngưỡng IOU
classes list None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
verbose bool True Hiển thị kết quả theo dõi đối tượng


Created 2024-04-02, Updated 2024-06-10
Authors: glenn-jocher (4), IvorZhu331 (1), Burhan-Q (1), RizwanMunawar (1)

Ý kiến