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
from ultralytics.solutions import queue_management

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 = queue_management.QueueManager()
queue.set_args(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
from ultralytics.solutions import queue_management

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 = queue_management.QueueManager()
queue.set_args(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()

Đối số tùy chọn set_args

Tên Kiểu Mặc định Sự miêu tả
view_img bool False Hiển thị khung có số lượng
view_queue_counts bool True Hàng đợi hiển thị chỉ được tính trên khung hình video
line_thickness int 2 Tăng độ dày hộp giới hạn
reg_pts list [(20, 400), (1260, 400)] Các điểm xác định Khu vực
classes_names dict model.model.names Từ điển tên lớp
region_color RGB Color (255, 0, 255) Màu sắc của Vùng hoặc Đường đếm Đối tượng
track_thickness int 2 Độ dày của đường theo dõi
draw_tracks bool False Bật vẽ Đường theo dõi
track_color RGB Color (0, 255, 0) Màu sắc cho từng đường đua
count_txt_color RGB Color (255, 255, 255) Màu nền trước cho đối tượng đếm văn bản
region_thickness int 5 Độ dày cho vùng hoặc đường đối tượng
fontsize float 0.6 Cỡ phông đếm 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


Đã tạo 2024-04-02, Cập nhật 2024-04-02
Tác giả: Burhan-Q (1), RizwanMunawar (1)

Ý kiến