1481

Ещё одно видеонаблюдение с AI и телегой

Для своевременного реагирования на проникновение непрошенных граждан туда, куда им не положено, установлена видеокамера. Следить круглосуточно за ней некому, поэтому разными ухищрениями пытались делать уведомления о событиях. А на пикабу вдруг был какое-то время назад замечательный пост про прикрученный к камере искусственный интеллект для распознавания образов и отправки в телегу уведомлений.

Покрутил-повертел проект автора, и понял, что тоже хочу подобное, но со своими свистелками, да ещё чтоб работало и на Windows, и на Linux. Я во всяких шарпах не очень, чтобы там асинхронный код отлаживать, поэтому на старом (но новом) добром C++ написал такую штуку, которая:

Берёт (почти) любой источник видео (можно скормить rtsp, а можно обычный видео файл - собственно, картинки в посте из видеофайла и взяты, чтобы не палить объект)

С помощью AI анализирует видео, и, если находит там человека, животное или автомобиль - шлёт в телеграм уведомление с картинкой, типа такого:

Ещё одно видеонаблюдение с AI и телегой Видеонаблюдение, Искусственный интеллект, Инструкция, Длиннопост

Нотификация о событии

Когда объект в кадре задетекчен - начинается запись видео, и оно пишется, пока объект не потеряется.

Когда видео файл записан - бот присылает в телегу раскадровку - чтобы одним взглядом было понятно, есть там что интересное или нет (это оказалось самой полезной фичей):

Ещё одно видеонаблюдение с AI и телегой Видеонаблюдение, Искусственный интеллект, Инструкция, Длиннопост

Под раскадровкой видео есть кнопка для скачивания. Размер указывается приблизительно, полное число мегабайт, просто для понимания, сколько это видео будет скачиваться

Умеет присылать список видеофайлов за последние сколько хочешь часов, а также раскадровки - также за настраиваемый период - удобно смотреть, что произошло, например, за ночь

Умеет просто прислать снимок с камеры в текущий момент, и всякое по мелочи - репорт состояния диска, и т.п.

Написано всё это счастье с использованием C++, OpenCV, и либы для телеграм-бота tgbot-cpp. Опирается на всё тот же CodeProject AI. Соответственно, всё кросс-платформенное.

Я у себя в гитхабе накомпилил под Windows, а под линукс/мак придётся самим собирать, но это довольно просто, там же на гитхабе есть и инструкция, и workflow-файл.

Как это можно заюзать для себя:

Качаем CodeProject AI server отсюда: https://www.codeproject.com/Articles/5322557/CodeProject-AI-Server-AI-the-easy-way и устанавливаем

Открываем в браузере консоль - http://localhost:32168/ - и устанавливаем модуль для распознавания YOLOv5 (можно выбрать какой подходит для вашей платформы - CUDA/не CUDA и пр)

Заводим телеграм-бота и запоминаем его токен

Качаем последний релиз из гитхаб: https://github.com/sergrt/CameraAiDetector/releases и распапковываем

Правим файл settings.json. Как минимум нужно настроить следующие параметры:

- source - источник данных. Вбиваем сюда адрес rtsp потока или путь к видео файлу

- storage_path - куда будут сохраняться снимки, видео, превьюшки и пр.

- bot_token - токен бота

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

Теперь можно попробовать запустить программу. Если будет ругаться на отсутствие библиотек C++, то их можно взять у Microsoft: https://aka.ms/vs/17/release/vc_redist.x64.exe

Если вам повезло и всё заработало, то теперь можно постучаться в телегу к боту и отправить ему /start. В ответ бот пришлёт главное меню, из которого, в общем, то всё понятно:

Ещё одно видеонаблюдение с AI и телегой Видеонаблюдение, Искусственный интеллект, Инструкция, Длиннопост

Основное меню бота

Все эти кнопки можно дублировать командами, список можно глянуть в описании проекта на гитхабе.

Когда случится алярма, то бот пришлёт картинку, а следом превьюшку. Под превьюшкой кнопка, которая позволяет скачать и посмотреть записанное видео. Также бот будет присылать уведомления о каких-то неполадках.

Узнать, сколько места осталось на диске можно командой "Статус".

Ну вот и всё. Код проекта полностью открыт и доступен здесь: https://github.com/sergrt/CameraAiDetector. Делайте со мной, делайте как я, делайте лучше меня :)

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Какие требования к железу? На OrangePI работать будет?

раскрыть ветку (8)
2
Автор поста оценил этот комментарий

На средненьком десктопе нагрузка процессор незначительная, 3-5% и анализ кадра порядка 30 мс, а на Atom 2700 анализ кадра уже 5 секунд. Orange PI конечно помощнее, чем этот атом, но надо пробовать и возможно экспериментировать с настройками - как часто отправлять кадры на анализ, как масштабировать и пр.

1
Автор поста оценил этот комментарий

есть миниПК Целерон J1900 4gb ddr3
Работа с одной камерой занимает 50% цпу и всю оперативку, но работает
Время обработки изображения 1700-2000мс судя по логам

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Я там выложил новый релиз - добавил ещё один AI бэкенд - OpenCV DNN (переключается в настройках). Можно с ним попробовать, взять yolov5n.onnx (поменьше которая), посмотреть, возможно будет лучше. Я сам пока детальных тестов не проводил

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Спасибо, скачал релиз скачал либу, не нашел где там что переключать в настройках, просто положил вместе - запустилось, тестирую срабатывания)
Но у меня на разных компах и на обоих опробованных релизах есть глюк с телеграммом, однократное нажатие кнопки из меню, или под превью, или команда старт, запускает бесконечное циклическое повторение нажатия команды ( разв минуту или чаще повторяет действие будто я постоянно нажимаю кнопку или команду)
Лечится иногда выполнением другой команды, или перезапуском бота, вы такое не встречали?

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Без доп настроек так и будет Codeproject AI использовать. Задайте в файле settings.json "use_codeproject_ai" : false и "onnx_file_path" : "yolov5s.onnx" - вот тут пример как они выглядят: https://github.com/sergrt/CameraAiDetector/blob/master/src/s...

С ботом таких проблем не испытывал

0
Автор поста оценил этот комментарий

Конфиг поменял, файлы CUDA распаковал с заменой,  приложение не стартует, либы cublas64_12.dll  нехватает

Иллюстрация к комментарию
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Не установлен пакет NVidia CUDA. Вообще на вашем мини-пк вряд ли установлена карта NVidia с поддержкой CUDA, поэтому можно просто поменять конфиг и не копировать либы - обработка будет на CPU

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я и на макси пк пробовал, правда там тоже не нвидиа)  чет у меня совсем всё испортилось, детектит вообще всё что можно, ложных сработок больше чем по движению)) в телегу флудит) и до кучи приложуха вообще самостоятельно начала закрываться, даже прошлые версии. Короче задрочил видимо свою винду!

Спасибо Вам за проект, буду наблюдать по возможности)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку