Jak połączyć widzenie sieci neuronowej z kamerami domowymi za pomocą Unblink
Znana historia: masz dwie lub trzy kamery RTSP w domu lub biurze, nagrywające gigabajty wideo na dysk, ale żeby znaleźć moment, gdy kurier zostawił paczkę pod drzwiami, musisz ręcznie przewijać oś czasu z prędkością 8x. Tradycyjny detektor ruchu tutaj niewiele pomaga. Reaguje na latające owady, cienie drzew i przejeżdżające reflektory, tworząc setki fałszywych znaczników w archiwum.
Ostatnio natknąłem się na repozytorium Unblink (wersja V2). Deweloperzy z zapdos-labs próbowali rozwiązać ten problem za pomocą multimodalnych modeli wizyjno-językowych (VLM). Pomysł jest prosty: strumień wideo jest przekazywany do sieci neuronowej, a użytkownik komunikuje się z kamerami przez zwykły czat lub wyszukuje konkretne klipy za pomocą tekstu.
Co potrafi Unblink
Projekt jest zbudowany na połączeniu lokalnego agenta, serwera zarządzającego i modelu Qwen3-VL. Oto co system robi w praktyce:
- Wyszukiwanie w archiwum na podstawie tekstu. Możesz wpisać zapytanie jak „osoba w czerwonej kurtce weszła do budynku" lub „kurier z paczką", a system zwróci znaczniki czasowe pasujących klatek zamiast ręcznego oglądania pięciu godzin nagrania.
- Czat z kamerami. Działa jako interfejs pytań i odpowiedzi do strumienia wideo. Pytasz „czy byli jacyś goście po 18:00?", model analizuje zapisane klatki i odpowiada spójnym tekstem.
- Analiza i podsumowanie klatek. Sieć neuronowa kompresuje materiał wideo do tekstowych opisów tego, co się dzieje, oszczędzając czas na wstępnym przeglądzie zdarzeń.
- Działanie przez przekaźnik bez przekierowywania portów. Kompaktowy węzeł działa w lokalnej sieci i utrzymuje własne połączenie z serwerem zarządzającym.
Jak działa architektura
Architektonicznie Unblink jest podzielony na dwie części: serwer zarządzający i lekki węzeł działający przy kamerach.
+-------------------------------------------------------+
| Public Server |
| (Auth, DB PostgreSQL, Web UI SolidJS, VLM Analysis) |
+-------------------------------------------------------+
▲
│ Безопасный туннель
▼
+-------------------------------------------------------+
| Local Network Node |
| (unblink-node CLI) |
+-------------------------------------------------------+
│ │
▼ RTSP ▼ MJPEG
[ Камера 1 ] [ Камера 2 ]
Strona serwera obsługuje autoryzację, przechowywanie danych i interfejs webowy. Frontend jest napisany w SolidJS z użyciem TypeScript, Vite i komponentów Ark UI. Jako baza danych wykorzystywany jest PostgreSQL przez pgx. Do pracy ze strumieniami wideo deweloperzy wybrali sprawdzony silnik go2rtc, który doskonale radzi sobie z konwersją RTSP i WebRTC dla przeglądarki.
Węzeł unblink-node jest napisany w Go. Działa w Twojej lokalnej sieci, łączy się ze strumieniami RTSP lub MJPEG z kamer i przekazuje je do serwera. Oznacza to, że nie musisz otwierać portów na routerze ani wystawiać kamer bezpośrednio do internetu.
Szybkie uruchomienie węzła
Jeśli masz już uruchomiony serwer (lub korzystasz z wdrożenia chmurowego), możesz podłączyć kamery lokalne w ciągu kilku minut.
Wstępnie skompilowane pliki binarne
Wydania GitHub zawierają skompilowane pliki dla Linux i Windows (zarówno x86_64, jak i ARM64). Pobierz archiwum, rozpakuj i uruchom:
# Для Linux
tar -xzf unblink-node_linux_amd64.tar.gz
./unblink-node
Na Windows uruchomienie wygląda podobnie przez PowerShell:
.\unblink-node.exe
Przy pierwszym uruchomieniu narzędzie wyświetli URL w terminalu. Otwórz go w przeglądarce, aby autoryzować węzeł w panelu sterowania.
Kompilacja ze źródeł
Jeśli masz zainstalowany Go na swojej maszynie, najłatwiejszym sposobem instalacji narzędzia jest polecenie go install:
go install github.com/zapdos-labs/unblink/cmd/unblink-node@main
unblink-node
Lokalny rozwój całego stosu
Dla tych, którzy chcą zagłębić się bardziej lub wdrożyć stronę serwerową lokalnie, repozytorium zawiera wygodny Makefile. Będziesz potrzebować tmux, ponieważ uruchamia serwer, węzeł i interfejs webowy w jednym oknie:
# Ставим зависимости
make install
# Копируем конфиг окружения
cp .env.example .env
# Запускаем все компоненты в dev-режиме
make dev
Repozytorium zawiera również polecenia make typecheck do sprawdzania typów frontendu i make proto do regeneracji plików Protobuf, gdy zmieniają się kontrakty sieciowe.
Gdzie to się przyda
Projekt wyraźnie celuje w niszę zaawansowanego domowego monitoringu wideo i małych konfiguracji biurowych, gdzie standardowe NVR-y jak Frigate czy Shinobi nie radzą sobie konkretnie z możliwościami wyszukiwania semantycznego.
Dobry przykład: monitorowanie parkingu przed domem. Zamiast konfigurować strefy detekcji, możesz po prostu zapytać czat „kiedy niebieski samochód odjechał?". Innym scenariuszem jest kontrola terenu magazynu, gdzie ważne jest szybkie znalezienie momentów załadunku bez oglądania terabajtów pustych nagrań.
Łyżka dziegciu i wnioski
Dokumentacja README jest wciąż minimalna. Brak szczegółowego opisu wymagań systemowych do uruchomienia wnioskowania Qwen3-VL na własnym sprzęcie, więc cięższe modele prawdopodobnie trzeba będzie przenieść na serwer z dobrą kartą GPU lub połączyć przez zewnętrzne API.
Niemniej kod w Go i SolidJS wygląda przejrzyście, a wybór go2rtc jako silnika medialnego świadczy o solidnym zrozumieniu specyfiki przetwarzania wideo. Jeśli szukasz sposobu na podłączenie VLM do swoich kamer domowych i nie chcesz pisać wrappera od zera, Unblink zdecydowanie warto rozważyć. Kod źródłowy jest otwarty na licencji AGPL-3.0.
Powiązane projekty