>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

如何将神经网络视觉连接到家庭摄像头的 Unblink

Deploy to Render

一个常见的情景:你在家里或办公室有两三个 RTSP 摄像头,将大量视频录制到磁盘上,但要找到快递员把包裹放在门口的那一刻,你不得不用 8 倍速手动逐帧浏览时间线。传统的移动侦测在这里帮助不大。它会对飞虫、树影和过往车辆大灯触发警报,在存档中产生数百个误标记。

最近我发现了 Unblink 仓库(V2 版本)。zapdos-labs 的开发者尝试用多模态视觉-语言模型(VLM)解决这个痛点。原理很直接:视频流被输入到神经网络,用户通过普通聊天或文本搜索与摄像头进行交互。

该项目构建在本地代理、管理服务器和 Qwen3-VL 模型的组合之上。以下是系统在实际中的功能:

  • 基于文本的存档搜索。你可以输入类似"穿红色夹克的人进入大楼"或"带包裹的快递员"的查询,系统会返回匹配帧的时间戳,而不是手动观看五个小时的录像。
  • 与摄像头聊天。作为视频流的问答界面使用。你问"下午 6 点后有访客吗?",模型会分析保存的帧并用连贯的文本回应。
  • 帧分析和摘要。神经网络将视频素材压缩成文本描述,节省初步事件审查的时间。
  • 通过中继运行,无需端口转发。一个紧凑的节点运行在本地网络上,并保持与管理服务器的独立连接。

架构如何工作

在架构上,Unblink 分为两部分:管理服务器和位于摄像头旁的轻量级节点。

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

服务器端处理授权、数据存储和 Web 界面。前端使用 SolidJS 编写,采用 TypeScript、Vite 和 Ark UI 组件。数据库使用通过 pgx 连接的 PostgreSQL。在处理视频流方面,开发者选择了成熟的 go2rtc 引擎,该引擎在处理浏览器端的 RTSP 和 WebRTC 转换方面表现出色。

节点使用 Go 编写。它运行在你的本地网络内,连接到摄像头的 RTSP 或 MJPEG 流,并将它们代理到服务器。这意味着你不需要在路由器上开放端口或将摄像头直接暴露到互联网。

快速启动节点

如果你已经有一个服务器在运行(或正在使用云部署),你可以在几分钟内连接本地摄像头。

预编译二进制文件

GitHub releases 包含为 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 github.com/zapdos-labs/unblink/cmd/unblink-node@main
unblink-node

完整堆栈的本地开发

对于想要深入研究或本地部署服务器端的人来说,仓库包含一个方便的 Makefile。你需要 tmux,因为它会在一个窗口中启动服务器、节点和 Web 界面:

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

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

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

仓库还有用于类型检查前端的 命令,以及用于在网络契约变更时重新生成 Protobuf 文件的 命令。

适用场景

该项目明显针对高级家庭视频监控和小型办公室设置这一细分市场,在这些场景中,标准 NVR(如 Frigate 或 Shinobi)在语义搜索能力方面存在不足。

一个很好的例子:监控你家前面的停车场。你不需要配置检测区域,只需简单地问聊天"那辆蓝色车什么时候离开的?"另一个场景是控制仓库区域,在那里快速找到装卸货时刻很重要,而无需观看数 TB 的空白录像。

美中不足与结论

README 文档仍然很简略。没有关于在你的自有硬件上运行 Qwen3-VL 推理的系统要求的详细描述,因此重型模型可能需要迁移到配备良好 GPU 的服务器或通过外部 API 连接。

尽管如此,Go 和 SolidJS 的代码库看起来很干净,选择 go2rtc 作为媒体引擎表明对视频处理细节有扎实的理解。如果你一直在寻找将 VLM 连接到家庭摄像头的方法,又不想从头编写包装器,Unblink 绝对值得一看。源代码在 AGPL-3.0 许可证下开源。

相关项目