Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 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 есть плагины для распознавания лиц, каждое новое лицо заносится в базу и есть возможность посмотреть когда конкретный человек посещал место. И еще возможность прикрутить к сервисам ну тем, что ищут профиль в соц сетях и инфу по аватарке

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

Публикации