Перейти к содержимому

Управление очередью с помощью Ultralytics YOLOv8 🚀.

Что такое управление очередью?

Управление очередью с помощью Ultralytics YOLOv8 предполагает организацию и контроль очередей людей или транспортных средств для сокращения времени ожидания и повышения эффективности. Речь идет об оптимизации очередей для повышения удовлетворенности клиентов и производительности системы в различных условиях, таких как розничная торговля, банки, аэропорты и медицинские учреждения.



Смотри: Как реализовать управление очередью с помощью Ultralytics YOLOv8 | Аэропорт и станция метро

Преимущества управления очередью?

  • Сокращение времени ожидания: Системы управления очередью эффективно организуют очереди, сводя к минимуму время ожидания для клиентов. Это приводит к повышению уровня удовлетворенности, так как клиенты тратят меньше времени на ожидание и больше на работу с продуктами или услугами.
  • Повышение эффективности: Внедрение системы управления очередями позволяет предприятиям более эффективно распределять ресурсы. Анализируя данные об очередях и оптимизируя распределение персонала, предприятия могут оптимизировать работу, сократить расходы и повысить общую производительность.

Применение в реальном мире

Логистика Розничная торговля
Управление очередью в билетной кассе аэропорта с помощью Ultralytics YOLOv8 Контроль очередей в толпе с помощью Ultralytics YOLOv8
Управление очередью в билетной кассе аэропорта Использование Ultralytics YOLOv8 Мониторинг очередей в толпе Ultralytics YOLOv8

Управление очередью с помощью 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()

Аргументы QueueManager

Имя Тип По умолчанию Описание
names dict model.names Словарь, сопоставляющий идентификаторы классов с их названиями.
reg_pts list of tuples [(20, 400), (1260, 400)] Точки, определяющие многоугольник области подсчета. По умолчанию это предопределенный прямоугольник.
line_thickness int 2 Толщина линий аннотации.
track_thickness int 2 Толщина линий дорожки.
view_img bool False Нужно ли отображать рамки изображения.
region_color tuple (255, 0, 255) Цвет линий счетной области (BGR).
view_queue_counts bool True Нужно ли отображать количество очередей.
draw_tracks bool False Нужно ли рисовать треки объектов.
count_txt_color tuple (255, 255, 255) Цвет текста подсчета (BGR).
track_color tuple None Цвет дорожек. Если NoneРазные цвета будут использоваться для разных треков.
region_thickness int 5 Толщина линий области подсчета.
fontsize float 0.7 Размер шрифта для текстовых аннотаций.

Аргументы model.track

Имя Тип По умолчанию Описание
source im0 None исходный каталог для изображений или видео
persist bool False Сохранение треков между кадрами
tracker str botsort.yaml Метод отслеживания 'bytetrack' или 'botsort'
conf float 0.3 Порог доверия
iou float 0.5 Порог IOU
classes list None Фильтруй результаты по классам, то есть classes=0, или classes=[0,2,3]
verbose bool True Отображение результатов отслеживания объектов

ВОПРОСЫ И ОТВЕТЫ

Как я могу использовать Ultralytics YOLOv8 для управления очередью в реальном времени?

Чтобы использовать Ultralytics YOLOv8 для управления очередями в реальном времени, выполни следующие шаги:

  1. Загрузи модель YOLOv8 с помощью YOLO("yolov8n.pt").
  2. Захватывай видеопоток с помощью cv2.VideoCapture.
  3. Определи область интереса (ROI) для управления очередью.
  4. Обрабатывай кадры, чтобы обнаружить объекты и управлять очередями.

Вот минимальный пример:

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

Использование Ultralytics HUB может упростить этот процесс, предоставив удобную платформу для развертывания и управления твоим решением по управлению очередями.

Каковы основные преимущества использования Ultralytics YOLOv8 для управления очередью?

Использование Ultralytics YOLOv8 для управления очередью дает несколько преимуществ:

  • Резкое сокращение времени ожидания: Эффективно организует очереди, сокращая время ожидания клиентов и повышая их удовлетворенность.
  • Повышение эффективности: Анализируй данные об очередях, чтобы оптимизировать расстановку персонала и операции, тем самым снижая затраты.
  • Оповещения в реальном времени: Оповещает в реальном времени о длинных очередях, позволяя быстро вмешаться.
  • Масштабируемость: Легко масштабируется в различных средах, таких как розничная торговля, аэропорты и здравоохранение.

Чтобы узнать больше подробностей, изучи наши решения по управлению очередью.

Почему я должен выбрать Ultralytics YOLOv8 , а не конкурентов вроде TensorFlow или Detectron2 для управления очередью?

Ultralytics YOLOv8 имеет несколько преимуществ перед TensorFlow и Detectron2 для управления очередью:

  • Производительность в реальном времени: YOLOv8 известен своими возможностями обнаружения в реальном времени, предлагая более высокую скорость обработки.
  • Простота использования: Ultralytics обеспечивает удобство использования, начиная с обучения и заканчивая развертыванием, через Ultralytics HUB.
  • Предварительно обученные модели: Доступ к ряду предварительно обученных моделей, что минимизирует время, необходимое для настройки.
  • Поддержка сообщества: Обширная документация и активная поддержка сообщества облегчают решение проблем.

Узнай, как начать работать с Ultralytics YOLO.

Может ли Ultralytics YOLOv8 справиться с несколькими типами очередей, например, в аэропортах и розничной торговле?

Да, Ultralytics YOLOv8 может управлять различными типами очередей, в том числе в аэропортах и розничной торговле. Настроив QueueManager на определенные регионы и параметры, YOLOv8 может адаптироваться к различным схемам расположения и плотности очередей.

Пример для аэропортов:

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

Чтобы узнать больше о разнообразных вариантах применения, загляни в наш раздел " Применение в реальном мире ".

Каковы некоторые реальные применения Ultralytics YOLOv8 в управлении очередями?

Ultralytics YOLOv8 используется в различных реальных приложениях для управления очередями:

  • Розничная торговля: Контролируй очереди на кассах, чтобы сократить время ожидания и повысить удовлетворенность покупателей.
  • Аэропорты: Управляй очередями на билетных кассах и пунктах досмотра, чтобы пассажирам было спокойнее.
  • Здравоохранение: Оптимизирует поток пациентов в клиниках и больницах.
  • Банки: Улучшает обслуживание клиентов, эффективно управляя очередями в банках.

Загляни в наш блог о реальном управлении очередями, чтобы узнать больше.



Создано 2024-04-02, Обновлено 2024-07-14
Авторы: RizwanMunawar (1), glenn-jocher (5), IvorZhu331 (1), Burhan-Q (1)

Комментарии