Умные камеры наблюдение для вашего Home Assistant
Для умного дома часто использует видеокамеры и нехватка распознавание объектов в реальном режиме времени из них чуток печалит. Хочется хорошо настроить оповещение в telegram или другие messengers по движению объектов. Также важные области видео разметить как важные или нет, типа вот эта часть очень “чувствительна” и сразу отправляй уведомления. Сразу приходит идея интеграции с YOLO которая и хорошо работает и хорошие datasets есть в открытом доступе. Но сразу возникает куча проблем: сильные задержки (от 15 секунд точно), также трансляцию нужно отправлять на сервер для распознавания и обратно. Такой wrapper работать будет нестабильно и время от времени будет “отваливаться”.
Идеальное решение это frigate. Открытый код NVR с функцией распознавания объектов в реальном времени на видео с IP-камер. Он может распознавать объекты на видео с камер в реальном времени с помощью OpenCV и Tensorflow. Также для дополнительного ускорения опционально задействует Google Coral Accelerator (все как мы любим). Coral даёт очень солидную скорость работы — до 100+ кадров в секунду с небольшими накладными расходами.
Ну конечно “вишенка на торте” это несложная интеграция с Home Assistant, больше прочитать про интеграцию можно найти тут.
Еще главные преимущества:
- Минимально использует ресурсы и максимизация производительности за счет поиска объектов только там и тогда, где это необходимо (можно делать разметку частей видео)
- Многопроцессорная обработка с акцентом на обработку каждого кадра в режиме реального времени
- Обнаружение объектов с помощью TensorFlow выполняется в отдельных процессах для достижения максимального FPS
- Обмен данными через MQTT и легкая интеграция в другие системы
- Круглосуточная запись
- Поддержка WebRTC и MSE для просмотра в реальном времени с низкой задержкой
- и другое + ребята много что дополняют
Хочу выделить умное распознавание звука из видео и настройка триггеров. По умолчанию оно выключено, но его можно легко включить через настройки:
audio: # <- enable audio events for all camera
enabled: Truecameras:
front_camera:
ffmpeg:
...
audio:
enabled: True # <- enable audio events for the front_camera
В конце хочется сказать, что именно в таких проектах нуждаемся сегодня. Когда очень мощное сообщество на github развивает супер полезный продукт и код бэкенда и фронтенда находится в нормальном состоянии. Советую заглянуть к ним в репозиторий и помогать в развитие.