Как стать автором
Обновить

Комментарии 13

Не вполне понял, зачем изобретать свой велосипед (ну по крайней мере не попробовав готовые решения сначала), когда есть, скажем, Frigate со встроенными AI-детекторами для разного железа, да и для ZoneMinder что-то из этой оперы есть, хоть и не из коробки.

Что вообще используется в качестве софта для видеонаблюдения? Речь про какой-то "китайский регистратор" - у него что внутри и если что-то непонятное/закрытое - есть ли возможность поменять на нормальные опенсорс решения (Zoneminder, Frigate, Shinobi)?

Обычный китайский регистратор с облаком XM (это важно, т.к. через XM удобнее смотреть, на телефоне, на панелях и проч. Если есть более интересная альтернатива - то я о ней не в курсе пока)

Внутри у него ARM 32бит и примерно 150 Мб ОЗУ, стандартная Sofia, туда много не наставишь.

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

Ну, там же всё просто:
- камеры дают поток, только считывай
- он считывает, пишет на диск (в облако НЕ пишет)
- всё.

Ах да, если к нему подключиться - выдает поток от выбранной камеры или читает с диска. Никаких перекодировок, ничего. По сути - одна функция, запись.

Главное преимущество в сравнении с сервером и компом - он компактный и бесшумный, только сам диск гудит.

Ну вот мой текущий сервер-старичок для видеонаблюдения. Xeon X3350, 6Gb RAM, запись на 7 HDD по 1 Tb в аппаратном RAID0 (надёжность тут не нужна). 8 камер FullHD, 10fps, и тоже только локальная запись без детекции объектов (CPU не тянет, нормальную видеокарту в эту древность не вставить, а Coral TPU всё не соберусь купить) и без перекодировки.

Загрузка каждого из ядер CPU в среднем 60% (когда подключаюсь для просмотра - больше), использование памяти около 50%. Это Frigate, но до этого был ZoneMinder, потребление ресурсов было плюс-минус такое же. На 16 камерах этот сервер бы если не загнулся, то работал бы на пределе. А тут на порядок более слабое железо...

Насчёт компактный/бесшумный - так это для квартиры проблема (и то не всегда), а видеонаблюдение на кучу камер нужно в доме, а что за дом без серверной стойки для души и экспериментов :)

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

Вы же предлагаете поставить бу сервак стоимостью 30+ т р, потом докупить к Frigate свисток CoralTPU, чтобы он нормально работал.

Про глюки с ZoneMinder это отдельная тема

Я лучше куплю регистратор Hikvision или Hiwatch, можно Dahua, у них уже встроенный детектор человека, машины, животных, и не буду греть голову с серверами, рейдами, виртуализацией и прочей херней которой вы занимаетесь.

Поставил, настроил, получил денег с клиента и забыл. По статистике диск WD purple работает 24/7 без проблем в течении 5 лет.

Удачи вам с этим геморроем.

Perl? Ну надо же, какая экзотика. :) Раз уж пошла такая пьянка, вот тогда заготовка кода на "питоновском лиспе", на Hy (Hylang). Где используется локальная модель Yolo, классификатор. Можно выбрать и другую модель, которая еще боксы будет рисовать вокруг Person. Там еще есть и вариант трассировки, отслеживания перемещения объектов. И все локально, не надо никуда изображения отправлять.

(require hyrule *)
(import toolz [first last])
(import ultralytics [YOLO])
(import cv2)

(setv model-path "_____________.pt")
(setv video-source "rtsp://192.168.____________")
(setv model (YOLO model-path))
(setv person-class-index 1)
(setv person-confidence-threshold 0.77)


(defn process [frame]
  (setv first-result (-> (.predict model frame :verbose False) first .cpu))
  (setv top1 first-result.probs.top1) 
  (setv top1conf (first-result.probs.top1conf.item))
  (setv person-detected (and (= top1 person-class-index) (> top1conf person-confidence-threshold)))
  (if person-detected
    (cv2.imshow "Person detected!" frame)
    (cv2.imshow "No events..." frame))
  (cv2.waitKey 1))


(while True
  (setv cap (cv2.VideoCapture video-source))
  (while True
    (setv ret-and-frame-tuple (cap.read))
    (if (first ret-and-frame-tuple)
      (do ; if cap.read() returns (True, Image)
        (process (last ret-and-frame-tuple)))
      (do ; if cap.read() returns (False, EmptyImage)
        (print "End of stream or file. Reopening/reconnecting")
        (break))))
     ; inner while
) ; main while


(cap.release)
(cv2.destroyAllWindows)

Кому экзотика ))

Это не на одну камеру. Это 16 камер, несколько зон контроля, видеозапись, а отправка картинок в Телеграм - это так, игрушки, чтобы если кто где тусуется оно мне сообщало само, перед тем как на экраны смотреть.

Писать свой собственный регистратор - ну, я не готов пока...

Самом такое пилить, конечно, круто. Но может стоит Frigate рассмотреть?

Если к нему добавить Google Coral TPU (~$100) все распознавание (люди, авто, мотоциклы, животные...) будет отлично делаться на энергоэффективном чипе.

Изменение загрузки CPU (картинка Summary с Proxmox Frigate LXC) после подключения Coral TPU:

Может и стоит, и даже попробую.

Но тут смысл был именно в том, что берется самое обычное простое и дешманское железо (регистратор - около 2500 р на Али, такие же камеры, б/у ноутбук 10-летней давности) и из этого лепится на коленке работающая штука.
Причем всё легкозаменяемое в случае выхода из строя - можно заменить регистратор на другой (Озон привезет завтра), камеры (аналогично), другой ноутбук или не ноутбук (о чем будет отдельная статья)...

И оно тоже прекрасно определяют людей, мотоциклы и прочее...

Про Frigate потом статью:)

А за эту - отдельное спасибо. Даже просто за примеры.

В CMS iSpy есть плагины для распознавания лиц, каждое новое лицо заносится в базу и есть возможность посмотреть когда конкретный человек посещал место. И еще возможность прикрутить к сервисам ну тем, что ищут профиль в соц сетях и инфу по аватарке

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории