Skip to content

Latest commit

 

History

History
205 lines (118 loc) · 19.5 KB

README.md

File metadata and controls

205 lines (118 loc) · 19.5 KB

Система видео аналитики для управления очередью людей

Содержание

1 этап:

2 этап:

1 Этап

Введение

В ресторане "Вега" университета "Сириус" часто образуются длинные очереди в периоды наибольшей посещаемости. Это приводит к серьезным задержкам для посетителей, включая студентов, преподавателей и гостей университета. Такие задержки могут существенно нарушить планы и расписание занятий или встреч, уменьшая доступное время на работу и учебу.

Проблема

Проблема неэффективного расходования времени в ресторане "Вега" университета "Сириус" обусловлена большим количеством посетителей, особенно в периоды пиковой загруженности, когда число людей в очереди превышает 50 человек. В связи с увеличением потока клиентов, время ожидания в очереди на кассе ресторана может возрасти до 20-30 минут, что вызывает значительный дискомфорт и неприятные эмоции у посетителей. Чтобы обеспечить комфортное и приятное посещение ресторана, необходимо эффективно управлять данной ситуацией.

Анализ области

Критерий YOLO SSD Faster R-CNN Mask R-CNN
Скорость Очень высокая Высокая Средняя Низкая
Точность Средняя Средняя Высокая Высокая
Обнаружение Объекты и их местоположение в одном проходе Объекты и их местоположение в одном проходе Обнаружение объектов и их границ Обнаружение объектов, их границ и сегментация
Использует Сверточные нейронные сети (CNN) Сверточные нейронные сети (CNN) Сверточные нейронные сети (CNN) Сверточные нейронные сети (CNN)
Применение Реальное время и задачи, где важна скорость обнаружения Обнаружение в реальном времени и высокая скорость Основные задачи компьютерного зрения, где важна точность Сегментация и обнаружение объектов в изображениях

Также мы проанализировали какой минимальный набор технических средств для системы видеоанализа понадобится и выяснили, что нам понадобится:

1. Камеры наблюдения: Для обработки полученного видеопотока и запуска моделей машинного обучения необходимо наличие серверного оборудования

2. Серверное оборудование: Для обучения и выполнения моделей машинного обучения также требуются вычислительные ресурсы. Это может включать как локальные компьютеры с высокой производительностью, так и облачные вычислительные ресурсы

3. Вычислительные ресурсы: Для обучения и выполнения моделей машинного обучения также требуются вычислительные ресурсы. Это может включать как локальные компьютеры с высокой производительностью, так и облачные вычислительные ресурсы

Описание предлагаемого решения

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

Первая система

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

Вторая система

Вторая система автоматически отслеживает людей, находящихся в очереди, и вычисляет процент загруженности каждой из очередей. Затем система визуализирует данные, чтобы показать посетителям, какая очередь является наиболее выгодной с точки зрения времени ожидания. Для этой системы мы установим камеры над очередями для записи видеопотока. Система будет использовать маски для выделения областей с очередями на видеокадрах и подсчета людей. Она также определит менее загруженные очереди и предложит посетителям присоединиться к ним.

Высокоуровневый план реализации решения

  1. Формирование датасета: Использование общедоступных датасетов (например, COCO). Также возможно создание собственного путем сбора изображений людей и использования инструментов для разметки данных (Roboflow).

  2. Обучение модели: Использование архитектуры YOLOv8n для обучения модели обнаружения людей на выбранном датасете

  3. Тестирование модели: Запуск обученной модели на видеопотоке для оценки ее производительности и точности

  4. Создание алгоритма для первой системы: Алгоритм должен подсчитывать количество посетителей, входящих и выходящих из заведения

  5. Создание алгоритма для второй системы: Алгоритм будет отслеживать людей в очередях и определять загруженность каждой из них

Описание отдельных шагов плана

Мы планируем использовать Python, потому что это предпочтительный язык программирования для многих нейронных сетей. Python обладает поддержкой TensorFlow, PyTorch и имеет читаемый синтаксис. Также он широко используется в сообществе разработчиков.

Для создания интерфейса мы воспользуемся языком разметки и стилей HTML, CSS, а также языком программирования JavaScript.

Для задач по обучению модели планируется использовать API Ultralytics, которые по умолчанию поставляются с пакетом YOLOv8. API основано на фреймворке PyTorch, который часто используется для создания нейронных сетей.

Формирование датасета

Для обучения модели для детекции мы использовали 67 тысяч извлечённых изображений с людьми из набора данных COCO2017.

Из них 64 тысячи изображений составили обучающий набор, 3 тысячи - валидационный.

Извлеченные данные были преобразованы в формат, совместимый с архитектурой YOLO, с помощью API Ultralytics. Также были вырезаны все классы, кроме "person".

labels

Общее количество людей в обучающем наборе данных

Обучение модели

Обучение модели проводилось на облачной платформе Kaggle в течение 65 эпох. К концу обучения были достигнуты следующие результаты:

  • Точность (Precision): 0.82
  • Полнота (Recall): 0.65
  • Средняя точность (mAP@0.5): 0.76
  • Средняя точность (mAP@0.5:0.95): 0.53

img

Тестирование модели

Сейчас мы находимся в процессе тестирования обученной модели на видеопотоке с целью оценки её производительности и точности. Наша цель - достичь максимальной скорости работы и точности выявления объектов на видео.

Обученная нами модель Предобученная YOLOv8n
img img

Как можно заметить - наша модель лучше детектирует людей при одинаковой скорости работы.

Создание алгоритма для первой системы

После определения числа людей, которые находятся в ресторане, можно определить процент нагруженности ресторана. Определение процента загруженности ресторана основывается на текущем количестве посетителей. Используемая формула: (текущее количество посетителей / максимальная вместимость ресторана) * 100. Кроме того, мы обновляем данные о загруженности в режиме реального времени , предоставляя гостям информацию о текущей и прогнозируемой загруженности на ближайшее время

Пример работы первой системы:

Запись экрана 2024-02-24 в 11 17 04 (1)

Создание алгоритма для второй системы

Наша система анализирует видеопоток с камер над очередями, обнаруживая людей в них и выделяя каждого человека. Мы отслеживаем перемещение объектов и точно определяем количество людей в каждой очереди, а также собираем данные о времени ожидания посетителей. Это позволяет нам анализировать эффективность работы очередей и выявлять очередь с наибольшим временем ожидания. Сравнив загруженность очередей, мы предоставляем пользователю рекомендации о том, в какую очередь лучше встать

Example_.online-video-cutter.com.mp4

Макет интерфейса приложения

Для разработки интерфейса мы будем использовать язык разметки и стилей HTML, CSS а также язык программирования JavaScript

Для создания макета интерфейса мы воспользуемся популярным приложением для создания дизайна - Figma

Interface

В интерфейсе имеется:

  • Количество людей в ресторане

  • Общая нагрузка ресторана в данный момент времени

  • Цветовая визуализация загруженности каждой очереди. При нажатии показывается время ожидания и количество людей, стоящих в ней

  • Пять цветовых тем, включая версии для слабовидящих людей: https://figma.to/d5cc

2 Этап

Подготовка набора данных

На первом этапе нашего проекта мы завершили обучение модели по обнаружению людей на изображениях. Для этого мы выбрали архитектуру Yolo8n и воспользовались библиотекой Utralytics

Пример обнаружения людей при помощи нашей модели: photo_2024-03-29_21-45-12

Анализ предоставленных видеозаписей

Нами были проанализированы предоставленные видеопотоки, после чего мы обнаружили, что можно находить людей, которые стоят в очередях, при помощи разделения изображения на области в и вне очереди

Теперь нам не нужно дополнительно обучать модель для этого на фотографиях

Для классификации мы предлагаем 3 класса:

  1. Люди, находящиеся в очереди
  2. Люди, занимающие места за столами
  3. Люди, не относящиеся ни к первой, ни ко второй категории

Система подсчета людей

Разработанная нами система разделяет помещение на 2 части: очереди и обеденную зону

После чего она обнаруживает на этих частях людей и определеяет, где стоит этот человек (находящиеся в очереди/занимающие места за столами) Далее, идет вывод информации по количеству людей

Ссылка на демонстрацию работы системы: https://disk.yandex.ru/d/baRq8MeyGvizLQ