Управление очередью с помощью 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 для управления очередями в реальном времени, выполни следующие шаги:
- Загрузи модель YOLOv8 с помощью
YOLO("yolov8n.pt")
. - Захватывай видеопоток с помощью
cv2.VideoCapture
. - Определи область интереса (ROI) для управления очередью.
- Обрабатывай кадры, чтобы обнаружить объекты и управлять очередями.
Вот минимальный пример:
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)