Инновации в видеоаналитике: RTSP-конвейеры и YOLO

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

Для решения этой проблемы предлагается архитектура real-time-конвейера, реализованная на C++20. Данный подход предотвращает блокировку чтения RTSP-потока медленными этапами обработки. Центральное место в этой архитектуре занимают:

  • Постоянные workers: обеспечивают непрерывную обработку данных.
  • Слоты последнего значения: ограниченные буферы, гарантирующие актуальность передаваемых между этапами результатов и предотвращающие накопление устаревшей информации.
  • std::jthread и stop_token: современные механизмы управления потоками и их безопасного завершения.
  • Защита от устаревших результатов: механизмы, исключающие использование устаревших данных в конвейере.

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

Управление видеоаналитикой через JavaScript Viewer

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

Через JavaScript Viewer можно настраивать:

  • Стабильный поток данных и детектор движения.
  • Постоянные идентификаторы объектов (ID).
  • Контуры детектирования YOLO.
  • Интеграцию с базами данных, например, PostgreSQL, для хранения истории событий.

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