В 2015 году у нас возникла идея создать систему видеонаблюдения, которая будет понимать, что происходит на видео. Т.е. не просто детектировать движение в кадре, но и распознавать объекты, анализировать их поведение в кадре. Казалось бы, самое интересное и сложное - это детекторы и нейросетевая аналитика. Все остальное уже должно быть написано и реализовано в стандартных компонентах и решениях. Когда мы начинали проект, мы тоже так думали.
На первый взгляд, все просто: берём стандартные готовые компоненты, собираем систему, добавляем аналитику - и получаем продукт. Всё вроде бы работает, но есть нюанс.
Выяснилось, что видеоаналитика - это лишь 15–20% трудозатрат! Основная сложность — не в аналитике, а в базовом функционале системы видеонаблюдения и покадрового чтения видеопотоков, который должен быть универсальным, стабильным и с минимальной нагрузкой на “железо”. Тот самый функционал, который, казалось бы, уже должен быть "стандартным" и "решённым".
Для реализации базового функционала используются объемные библиотеки библиотеки и их многочисленные обёртки для разных сред разработки. Но нам нужно, чтобы не просто работало в демоверсии, а работало долго, стабильно и без утечек памяти. Камеры должны работать 24/7 без сбоев, вне зависимости от качества потоков. Однако, если поток данных поврежден или имеет ошибки, начинаются проблемы. Причин может быть множество: от кривого софта на камере до особенностей кодеков H.264 и H.265. Многие производители камер кастомизируют их под себя, добавляя свои параметры.
Оказалось, что open-source решения, на которых многие разработчики строят свои системы имеют в глубине утечки памяти и проблемы. Разработчик понимает, что сам не вытягивает проект, выгорает на багах и открывает исходный коды, привлекая новых энтузиастов. Они что-то фиксят, приходят все новые “разработчики-оптимисты”, и так далее. В итоге рождаются кубики “франкенштейны”, из которых потом коммерческие компании пытаются собрать стабильную систему видеонаблюдения.
Все те же самые симптомы, что и в Web Camera Pro мы увидели в других системах. Декларируется большой функционал, но главная проблема существующих систем – это стабильность. Камера то работает, то не работает, то пишет, то не пишет. То детекция перестает работать, то еще что-то. Система работает – потом падает. И дело здесь часто не в плохом софте, а тех самых кубиках “Франкенштейна”, которые лежат в самой основе системы.
Т.е. в некоторой идеальной моно брендовой ситуации для дорогой камеры может быть все отлажено, но как только появится “неправильная камера” или поток поплыл, то возникает проблема со стабильностью всей системы в целом. Для решения этой проблемы нужно лезть глубоко в самые основы и в базовый функционал чтения и обработки потоков, контролировать утечки памяти и оптимизировать код.
Если, например, Dahua и Hikvision разрабатывает софт только под свои камеры, то им проще. Но универсальное ПО должно работать с любыми устройствами. Мы начали заново проверять каждый "кирпичик" системы и полностью переписали программу с новой командой. По сути, мы отбросили всё старое и создали SmartVision.
Текущие возможности SmartVision:
1. Мониторинг - просмотр видео с камер в реальном времени с минимальной нагрузкой на ПК.
2. Непрерывная видеозапись - запись видео в открытом формате MP4 с эффективным сжатием, что экономит место на диске.
3. Запись в таймлапс - покадровая запись помогает сохранить важные события без избыточного расхода места на диске.
4. Запись по детектору движения - умная детекция сохраняет только значимые фрагменты, экономя место.
5. Интеллектуальная видеоаналитика - распознавание лиц и номерных знаков, обнаружение объектов, огня и дыма, возможности искусственного интеллекта для видеоаналитики.
6. Стабильность системы - автоматическое восстановление после сбоев трансляции или потери соединения.
7. Интеграция с облаком - обеспечивает удаленный доступ без сложных настроек и позволяет получать push-уведомления о событиях.
Скачать программу SmartVision можно здесь:
https://ru.smartvision.dev/cctv-software-download.htm
Что планируется дальше?
В нашем понимании программа должна сообщать пользователю, что и где происходит, а не просто вести непрерывную видеозапись.
В мобильном приложении должен быть своеобразный живой журнал для каждой камеры:
Камера 1; 12-00; Мужчина (Имя, если распознан) с собакой зашел в подъезд N1.
Камера 2; 12-05; Мужчина (Имя, если распознан) с собакой зашел в холл 23 этажа.
Камера 3; 12-06: Автомобиль Kia, Номер x777ee977 заехал на парковку.
Камера 4; 12-07; Включён свет, слышен громкий звук.
И далее по каждому такому событию должна быть возможность поиска, фильтрации и просмотра видео, автоматическая расшифровка разговоров в помещении. Этот функционал сейчас находится в разработке.
На первый взгляд, все просто: берём стандартные готовые компоненты, собираем систему, добавляем аналитику - и получаем продукт. Всё вроде бы работает, но есть нюанс.
Выяснилось, что видеоаналитика - это лишь 15–20% трудозатрат! Основная сложность — не в аналитике, а в базовом функционале системы видеонаблюдения и покадрового чтения видеопотоков, который должен быть универсальным, стабильным и с минимальной нагрузкой на “железо”. Тот самый функционал, который, казалось бы, уже должен быть "стандартным" и "решённым".
Для реализации базового функционала используются объемные библиотеки библиотеки и их многочисленные обёртки для разных сред разработки. Но нам нужно, чтобы не просто работало в демоверсии, а работало долго, стабильно и без утечек памяти. Камеры должны работать 24/7 без сбоев, вне зависимости от качества потоков. Однако, если поток данных поврежден или имеет ошибки, начинаются проблемы. Причин может быть множество: от кривого софта на камере до особенностей кодеков H.264 и H.265. Многие производители камер кастомизируют их под себя, добавляя свои параметры.
Оказалось, что open-source решения, на которых многие разработчики строят свои системы имеют в глубине утечки памяти и проблемы. Разработчик понимает, что сам не вытягивает проект, выгорает на багах и открывает исходный коды, привлекая новых энтузиастов. Они что-то фиксят, приходят все новые “разработчики-оптимисты”, и так далее. В итоге рождаются кубики “франкенштейны”, из которых потом коммерческие компании пытаются собрать стабильную систему видеонаблюдения.
Все те же самые симптомы, что и в Web Camera Pro мы увидели в других системах. Декларируется большой функционал, но главная проблема существующих систем – это стабильность. Камера то работает, то не работает, то пишет, то не пишет. То детекция перестает работать, то еще что-то. Система работает – потом падает. И дело здесь часто не в плохом софте, а тех самых кубиках “Франкенштейна”, которые лежат в самой основе системы.
Т.е. в некоторой идеальной моно брендовой ситуации для дорогой камеры может быть все отлажено, но как только появится “неправильная камера” или поток поплыл, то возникает проблема со стабильностью всей системы в целом. Для решения этой проблемы нужно лезть глубоко в самые основы и в базовый функционал чтения и обработки потоков, контролировать утечки памяти и оптимизировать код.
Если, например, Dahua и Hikvision разрабатывает софт только под свои камеры, то им проще. Но универсальное ПО должно работать с любыми устройствами. Мы начали заново проверять каждый "кирпичик" системы и полностью переписали программу с новой командой. По сути, мы отбросили всё старое и создали SmartVision.
Текущие возможности SmartVision:
1. Мониторинг - просмотр видео с камер в реальном времени с минимальной нагрузкой на ПК.
2. Непрерывная видеозапись - запись видео в открытом формате MP4 с эффективным сжатием, что экономит место на диске.
3. Запись в таймлапс - покадровая запись помогает сохранить важные события без избыточного расхода места на диске.
4. Запись по детектору движения - умная детекция сохраняет только значимые фрагменты, экономя место.
5. Интеллектуальная видеоаналитика - распознавание лиц и номерных знаков, обнаружение объектов, огня и дыма, возможности искусственного интеллекта для видеоаналитики.
6. Стабильность системы - автоматическое восстановление после сбоев трансляции или потери соединения.
7. Интеграция с облаком - обеспечивает удаленный доступ без сложных настроек и позволяет получать push-уведомления о событиях.
Скачать программу SmartVision можно здесь:
https://ru.smartvision.dev/cctv-software-download.htm
Что планируется дальше?
В нашем понимании программа должна сообщать пользователю, что и где происходит, а не просто вести непрерывную видеозапись.
В мобильном приложении должен быть своеобразный живой журнал для каждой камеры:
Камера 1; 12-00; Мужчина (Имя, если распознан) с собакой зашел в подъезд N1.
Камера 2; 12-05; Мужчина (Имя, если распознан) с собакой зашел в холл 23 этажа.
Камера 3; 12-06: Автомобиль Kia, Номер x777ee977 заехал на парковку.
Камера 4; 12-07; Включён свет, слышен громкий звук.
И далее по каждому такому событию должна быть возможность поиска, фильтрации и просмотра видео, автоматическая расшифровка разговоров в помещении. Этот функционал сейчас находится в разработке.