Инновации в видеоаналитике: 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, для хранения истории событий.
Основной акцент при настройке делается не на поиске конкретных кнопок, а на понимании того, какой участок конвейера изменяет тот или иной параметр и как эти изменения влияют на конечный результат. Такой подход обеспечивает гибкость и прозрачность в управлении сложными системами видеоаналитики.
Очень интересно, как именно удалось добиться стабильной работы с YOLO без задержек при такой высокой частоте кадров. Особенно про «слоты последнего значения» – это звучит как ключевой момент. Хотелось бы узнать больше о тонкостях реализации этого механизма. И какой был опыт интеграции с разными моделями YOLO, не только с базовыми? Обсудим?