Как подключить зрение нейросетей к домашним камерам с Unblink

16 авг 2026

Репозиторий давно не обновлялся

Последнее обновление было 6 месяцев назад.

1,488
168
19
6 месяцев

Deploy to Render

Знакомая история: дома или в офисе стоят две-три RTSP-камеры, пишут гигабайты видео на диск, а чтобы найти момент, когда курьер оставил коробку у двери, приходится вручную перематывать таймлайн на скорости 8x. Классический детектор движения тут помогает слабо. Он реагирует на пролетающих мух, тени деревьев и свет фар, создавая сотни ложных меток в архиве.

Недавно наткнулся на репозиторий Unblink (версия V2). Разработчики из zapdos-labs попытались решить эту головную боль с помощью мультимодальных языковых моделей (VLM). Идея простая: видеопоток скармливается нейросети, а пользователь общается со своими камерами через обычный чат или ищет нужные фрагменты текстом.

В основе проекта лежит связка из локального агента, сервера управления и модели Qwen3-VL. Вот что система делает на практике:

  • Текстовый поиск по архиву. Можно вбить запрос «человек в красной куртке зашел в подъезд» или «курьер с коробкой», и система выдаст таймкоды подходящих кадров вместо ручного просмотра пяти часов записи.
  • Чат с камерами. Работает как интерфейс вопросов и ответов к видеопотоку. Спрашиваешь «были ли гости после 18:00?», модель анализирует сохраненные кадры и отвечает связным текстом.
  • Анализ и суммаризация кадров. Нейросеть сжимает видеоряд в текстовые описания происходящего, экономя время на первичный разбор инцидентов.
  • Работа через релей без проброса портов наружу. В локалке крутится компактный узел, который сам держит связь с управляющим сервером.

Как устроена архитектура

Архитектурно Unblink разделен на две части: управляющий сервер и легкий узел (node), который ставится рядом с камерами.

Реклама
+-------------------------------------------------------+
|                     Public Server                     |
|  (Auth, DB PostgreSQL, Web UI SolidJS, VLM Analysis)  |
+-------------------------------------------------------+
                           
                            Безопасный туннель
                           
+-------------------------------------------------------+
|                   Local Network Node                  |
|                   (unblink-node CLI)                  |
+-------------------------------------------------------+
                                            
         RTSP                                MJPEG
   [ Камера 1 ]                         [ Камера 2 ]

Серверная часть отвечает за авторизацию, хранение данных и веб-интерфейс. Фронтенд написан на SolidJS с использованием TypeScript, Vite и компонентов Ark UI. В качестве базы данных используется PostgreSQL через pgx. Для работы с видеопотоками разработчики взяли проверенный движок go2rtc, который отлично справляется с RTSP и конвертацией в WebRTC для браузера.

Узел unblink-node написан на Go. Он запускается внутри вашей локальной сети, цепляет RTSP или MJPEG потоки с камер и проксирует их на сервер. Благодаря этому не нужно открывать порты на роутере или выставлять камеры напрямую в интернет.

Быстрый запуск ноды

Если у вас уже поднят сервер (или используется облачный деплой), подключить локальные камеры можно за пару минут.

Готовые бинарники

В релизах на GitHub есть скомпилированные файлы под Linux и Windows (как x86_64, так и ARM64). Скачиваем архив, распаковываем и запускаем:

# Для Linux
tar -xzf unblink-node_linux_amd64.tar.gz
./unblink-node

На Windows запуск выглядит аналогично через PowerShell:

.\unblink-node.exe

При первом старте утилита выдаст в терминал URL. Переходим по нему в браузере, чтобы авторизовать узел в панели управления.

Сборка из исходников

Если на машине установлен Go, проще всего поставить утилиту командой go install:

go install github.com/zapdos-labs/unblink/cmd/unblink-node@main
unblink-node

Локальная разработка всего стека

Для тех, кто хочет покопаться внутри или развернуть серверную часть у себя, в репозитории предусмотрен удобный Makefile. Потребуется tmux, так как он поднимает сервер, ноду и веб-интерфейс в одном окне:

# Ставим зависимости
make install

# Копируем конфиг окружения
cp .env.example .env

# Запускаем все компоненты в dev-режиме
make dev

В репозитории также есть команды make typecheck для проверки типов на фронтенде и make proto для перегенерации Protobuf-файлов при изменении сетевых контрактов.

Где это пригодится

Проект явно метит в нишу продвинутого домашнего видеонаблюдения и небольших офисных сетапов, где возможностей стандартных NVR вроде Frigate или Shinobi не хватает именно в плане семантического поиска.

Хороший пример: мониторинг парковки перед домом. Вместо настройки зон детекции можно просто спросить у чата «когда уехала синяя машина?». Другой сценарий — контроль складской зоны, где важно быстро находить моменты погрузки без просмотра терабайтов пустого видеоряда.

Ложка дегтя и выводы

Документация в README пока минималистичная. Нет подробного описания системных требований для инференса Qwen3-VL на собственном железе, поэтому тяжелые модели, скорее всего, придется выносить на сервер с хорошим GPU или подключать через внешние API.

Тем не менее, кодовая база на Go и SolidJS выглядит опрятно, а выбор go2rtc в качестве медиа-движка говорит о хорошем понимании специфики работы с видео. Если вы давно искали способ прикрутить VLM к своим домашним камерам и не хотите писать обвязку с нуля, на Unblink определенно стоит взглянуть. Исходники открыты под лицензией AGPL-3.0.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.