外观
第 1 章 概述与架构
1.1 读者对象与范围
智眸(UanVision)是智觉(UanSense)下的视觉神经,将现场相机画面转换为带证据的结构化事件。画面从相机到识别引擎之间的传输、鉴权、配置下发与故障处理,统称现场接入。本章说明现场接入的部署形态、系统组件、接入流程、安全边界与故障域;后续各章分别说明部署场景、部署全景、安装配置、运维排障与接口数据。
读者为沅虹交付与运维工程师,以及合作集成商的技术人员。客户管理员的日常操作见文档中心的智眸产品文档,不在本指南范围内。
本指南按部署与运维的顺序组织,内容以对应的软件版本为准,版本变化见附录 F。
1.2 部署形态
现场接入支持三种部署形态,按识别引擎所在位置区分。
| 形态 | 现场设备 | 检测位置 | 判定位置 | 画面是否离开场站 |
|---|---|---|---|---|
| 远程(云托管) | 接入盒:双网口小型主机,仅负责拉流与推流 | 沅虹处理中心 | 沅虹处理中心(智悟与蓝精灵) | 经加密通道传出 |
| 本地轻 | 带独立显卡的小型主机,内存 64 GB 起 | 现场本机 | 现场本机(蓝精灵放内存)或云端智悟 | 不离开 |
| 本地重 | DGX Spark(64 GB 或 128 GB) | 现场本机 | 现场本机 | 不离开 |
本版主要描述远程形态。远程形态涉及接入盒、控制面与处理节点三方协作,组件最多。本地两种形态的安装程序正在开发,完成后补充相应章节。
智眸的识别分两层。处理节点上的小模型完成检测、跟踪、区域与时序规则,直接给出入侵、烟火、安全帽、反光衣、车辆、异常光源等科目的结果;打架、倒地、攀爬等行为科目以及规则判断不清的事件,节点只组装候选(多帧蒙太奇、时间线、姿态),以"待判定"事件经虹元送到智悟,由智悟调用蓝精灵(沅虹在自有现场数据上微调的判定模型)给出最终结论与处置建议,结论回流后告警才成为正式科目。判定能力的位置决定部署形态:云托管由处理中心的智悟统一判定;本地形态要么在本机运行蓝精灵(硬件要求见第 2 章),要么在合同允许时把候选送云端智悟判定;完全断网的现场必须在本机运行蓝精灵。
候选在上行之前先经过处理节点上的行为时序门控。视频行为模型对攒帧窗口内的每个人框给出打架、倒下、攀登三类分数,三类分数都低于门限时该窗口不上行;其余情况一律上行,分数附在事件时间线上供智悟与复核人员参考。门限取真值集上三类全部召回的位置,缓冲帧不足或模型不可用时门控放行。门控的作用是把大量正常走动的窗口挡在节点,判定本身仍由智悟完成。
1.3 系统组件
远程形态由接入控制面、接入盒代理、处理节点代理、智眸中心接入页四个服务组件和一个公共库构成。
接入控制面 uanlink 运行在公网入口主机上,由 nginx 反向代理为 link.uanhon.cn,负责接入码签发、盒子入网与心跳、相机清单下发、推流账号管理、口令密文中转、计量台账与审计。公网入口主机的资源有限,控制面的常驻内存控制在 100 MB 以内。
接入盒代理 uanbox-agent 运行在客户现场的接入盒上,完成入网、自检、相机发现、口令解密、本机 mediamtx 配置渲染、心跳上报与失败退避。
处理节点代理 uanhub-agent 运行在处理节点上,将推流账号同步到节点的 mediamtx,上报每路收到的字节数,并处理上行拥塞卸路与公网地址跟随。
智眸中心接入页由租户的中心实例提供,路径 /api/link/*,代客户管理员调用控制面的租户侧接口,管理员本人不接触租户钥匙。
智悟(UanMind)与蓝精灵不属于现场接入组件,但识别链路依赖它们:智眸中心把事件送入虹元,智悟取出待判定事件,用蓝精灵判定后把结论与处置写回虹元并回流智眸中心。
公共库 common 为上述组件提供签名、接入码、推流口令、密封格式与接口数据结构的统一实现,接口的字段定义以公共库为准。
组件之间的关系如下图所示。
视频流不经过任何控制组件。接入盒上的 mediamtx 通过 WHIP 将每路画面直接推送到处理节点的 mediamtx,控制面只下发推送地址与账号。由此得到两条性质:控制面不可用时,正在推送的画面不受影响;控制面上不保存任何口令明文与画面。证据短片的回放同样不经过公网入口:中心返回处理节点上的按需路径,节点将短片转为一路临时流,浏览器以 WHEP 直连播放。
1.4 接入流程
| 步骤 | 执行者 | 位置 | 操作 | 系统行为 |
|---|---|---|---|---|
| 0 | 沅虹运营 | 运维主机 | sense-tenant add <租户> <序号> 开通租户 | 处理节点建立网络命名空间与节点实例,中心实例生效并登记到入口网关;控制面建立租户,租户钥匙写入中心环境 |
| 1 | 沅虹运营 | 预绑定场所 | 盒子安装系统,接入页建立现场并生成接入码,uanbox-prebind <接入码> 入网,贴标签 | 盒子生成身份密钥(Ed25519)与密封密钥(P-256),绑定现场 |
| 2 | 安装员 | 现场 | 蓝口接宽带,黄口接相机交换机,通电 | 盒子联网、自检,每 60 秒在黄口发现相机,结果上报控制面 |
| 3 | 客户管理员 | 接入页 | 确认盒子在线、网络合格,发现的相机默认全选 | 中心每 10 秒从控制面拉取状态 |
| 4 | 客户管理员 | 接入页 | 填写账号口令并保存 | 浏览器用盒子公钥加密,控制面只存密文;盒子 1 秒内拉取、解密,每台相机以 RTSP 探测一次 |
| 5 | 客户管理员 | 接入页 | 点击"全部接入(n 台)" | 控制面分配 cam01 至 camNN 并生成推流账号;盒子开始推送,节点接收;中心写入相机配置,节点 20 秒内建立通道 |
| 6 | 系统 | 每路转为在线并显示缩略图;异常的路显示原因 | 盒子心跳携带每路状态与原因 |
从设备到货到 30 路上线,现场操作仅为接线通电,管理员操作约 10 分钟。
1.5 安全边界
接入盒只主动出站:HTTPS 到 link.uanhon.cn,WHIP 到处理节点。盒子不向公网开放任何端口;黄口仅开放本地诊断页 8080、DHCP、对时以及相机发现的回包。
盒子身份在入网时由盒子自行生成 Ed25519 密钥对,此后每个请求携带 x-box-id、x-ts、x-sig,签名覆盖方法、路径、时间戳与请求体哈希。时间差超过 300 秒、同一时间戳同一签名重放、盒子状态非 active 的请求一律返回 401。
相机口令只在管理员浏览器内加密(P-256 ECDH、HKDF-SHA256、AES-256-GCM,格式 sealed_v1),密钥推导与附加数据均绑定 box_id|ip,密文更换盒子或 IP 后均无法解开。控制面、中心、日志与备份中只有密文。盒子本地 /etc/uanbox/cameras.secret(权限 600)中手工填写的条目优先于下发的条目。
推流账号按相机签发,账号为 p_<租户>_<相机>,口令为 32 字节随机值,数据库仅保存 mediamtx 可直接使用的 sha256 哈希,明文只在下发给盒子时出现一次。
租户隔离在处理节点上以系统用户、网络命名空间与独立存储实现,nftables 仅放行该租户需要到达的端口。智眸的入口域名是 vision.uanhon.cn,原入口 sense.uanhon.cn/app 并行保留,两者共用同一套租户路由,不为租户设子域:用户经门户(portal.uanhon.cn)登录,门户签票时确定租户,入口网关按租户码把页面与接口转到该租户的中心实例,中心兑换票据后种路由 cookie;控制面租户侧接口按 x-tenant-key 鉴权,其他租户的现场、盒子与相机一律按不存在返回 404。运营侧钥匙 x-admin-key 仅接受来自本机回环或 nginx /v1/admin/ 前缀(来源 IP 白名单)的请求。
1.6 故障域
一路画面从相机到事件经过五个环节。各环节的故障表现与应对方式如下,多盒互备的设计以此为出发点。
| 环节 | 故障表现 | 单盒现场 | 双盒现场 |
|---|---|---|---|
| 相机与相机交换机 | 相机掉电、交换机故障 | 无法应对,属客户设备 | 同左。交换机为单点,勘查时向客户说明 |
| 接入盒 | 掉电、硬盘故障 | 该盒全部相机停止 | 另一台盒子在失联判定后接管其相机 |
| 现场上行 | 断网、带宽占满 | 占满时节点卸路;断网全部停止 | 两台盒子各接一条宽带,一条中断由另一条承担 |
| 处理节点 | 宕机、机房断网 | 全部云托管租户停止 | 同左,节点级互备在后续阶段 |
| 控制面 | 服务不可用 | 盒子按最后配置继续推送,配置不可更改 | 同左 |