コンテンツへスキップ

Ultralytics YOLOv8 🚀を使ったキュー管理

キュー・マネジメントとは何ですか?

待ち行列管理とは Ultralytics YOLOv8待ち行列管理とは、待ち時間を短縮し効率を高めるために、人や車両の列を整理・制御することです。小売店、銀行、空港、医療施設など様々な場面で、顧客満足度やシステムのパフォーマンスを向上させるために待ち行列を最適化することである。

キュー・マネジメントの利点

  • 待ち時間の短縮キュー・マネジメント・システムは効率的にキューを整理し、顧客の待ち時間を最小限に抑えます。これにより、顧客は待ち時間を短縮し、より多くの時間を商品やサービスに費やすことができるため、満足度の向上につながります。
  • 効率の向上:待ち行列管理を導入することで、企業はリソースをより効果的に割り当てることができる。待ち行列のデータを分析し、スタッフの配置を最適化することで、企業は業務を合理化し、コストを削減し、全体的な生産性を向上させることができます。

実世界での応用

物流 小売
空港チケットカウンターでの待ち行列管理Ultralytics YOLOv8 群衆モニタリングUltralytics YOLOv8
空港チケットカウンターでの待ち行列管理Ultralytics YOLOv8 群衆における待ち行列の監視Ultralytics YOLOv8

YOLOv8 例を用いたキュー管理

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

オプションの引数 set_args

名称 タイプ デフォルト 説明
view_img bool False カウント付きフレームを表示
view_queue_counts bool True ビデオフレームにのみキューカウントを表示
line_thickness int 2 バウンディングボックスの厚みを増やす
reg_pts list [(20, 400), (1260, 400)] リージョン・エリアを定義するポイント
classes_names dict model.model.names クラス名辞書
region_color RGB Color (255, 0, 255) リージョンまたはラインをカウントするオブジェクトの色
track_thickness int 2 トラッキング・ラインの太さ
draw_tracks bool False トラックラインの描画を有効にする
track_color RGB Color (0, 255, 0) 各線路の色
count_txt_color RGB Color (255, 255, 255) オブジェクト・カウント・テキストの前景色
region_thickness int 5 オブジェクトのカウンター領域またはラインの太さ
fontsize float 0.6 カウントテキストのフォントサイズ

論争 model.track

名称 タイプ デフォルト 説明
source im0 None 画像またはビデオのソース・ディレクトリ
persist bool False フレーム間のトラックの持続
tracker str botsort.yaml トラッキングメソッド「bytetrack」または「botsort
conf float 0.3 信頼閾値
iou float 0.5 借用書のしきい値
classes list None つまり、class=0、またはclass=[0,2,3]。
verbose bool True 物体追跡結果を表示する


作成 2024-04-02 更新 2024-04-02
著者Burhan-Q(1),RizwanMunawar(1)

コメント