Skip to content

VSL 项目原理

Video Search Local 的核心目标是:把连续、难以查找的监控视频,转换成可验证、可存储、可通过自然语言检索的结构化事件。

完整处理流程

01摄像头视频流RTSP、RTMP、HLS 等
02本地视觉推理YOLO26s / D-FINE-S
03跟踪与切片ByteTrack + 带框录像
04视觉大模型API 语义复核
05结构化存储SQLite + Qdrant
06自然语言检索查找并回看事件

1. 接入摄像头视频流

系统通过 FFmpeg 读取 RTSP、RTSPS、RTMP、RTMPS、HTTP-FLV、HLS、MJPEG、SRT、UDP 或 TCP 视频源。海康、大华、宇视等常见摄像头通常提供 RTSP 主码流和子码流。

2. 本地视觉模型检测

每隔指定时间抽取一帧,缩放到模型输入尺寸后交给 YOLO26s 或 D-FINE-S。推理可以使用 ONNX Runtime CPU,也可以使用 NVIDIA CUDA。输出包含类别、置信度和目标位置。

3. ByteTrack 目标跟踪

ByteTrack 根据连续帧中的目标位置和置信度关联同一个对象,为它生成稳定的短 ID。VSL 使用不同颜色显示不同 ID,并保存目标轨迹。这里的 ID 只在当前摄像头的一次运行和短时遮挡期间有效,不代表真实身份。

4. 规则判断和事件切片

用户可以按模型标签建立规则。例如“车辆”规则可以包含 cartruckbus。只有同一目标连续命中规则达到设定帧数时,系统才创建固定时长的事件片段,减少无意义录像和 API 请求。

事件产物包括:

  • 带边框、半透明遮罩、类别、置信度和目标 ID 的 MP4
  • 事件封面 JPG
  • VSS 风格逐帧轨迹元数据 *.cv.json.gz
  • SQLite 中的对象、规则、模型和处理状态

5. API 视觉大模型复核

事件录像完成后,系统异步调用用户配置的视觉大模型。OpenAI 兼容模式均匀抽取关键帧,DashScope 模式也可以上传原生 MP4。推荐让模型返回 JSON,字段包括摘要、活动、风险、关键词、相关规则、主要对象 ID 和时间线。

视觉 API 失败不会阻塞本地检测,任务保存在 SQLite 中并按设置重试。

6. 向量化和自然语言检索

系统把标签、规则、大模型摘要和关键词转换成向量并写入 Qdrant。用户输入自然语言描述后,系统检索相似事件,并返回录像、时间、摘要、对象 ID 和匹配度。

输入、处理与输出

类型内容
输入摄像头或流媒体 URL、检测模型、规则、视觉 API、Qdrant 配置
本地处理解码、抽帧、检测、ByteTrack、规则判断、画框、录像
可选外部处理视觉大模型 API 对事件进行语义复核
输出MP4、JPG、轨迹 JSON、SQLite 事件、Qdrant 向量
用户入口实时监控、事件记录、智能搜索、系统设置

为什么采用两级推理?

本地检测模型速度快、成本稳定,适合持续处理视频,但它主要回答“画面里有什么”。视觉大模型擅长描述关系、活动和风险,却不适合把全部实时流持续上传分析。

VSL 先用本地模型和规则筛选事件,再让视觉大模型回答“发生了什么”,兼顾实时性、隐私、带宽和 API 成本。这与 NVIDIA VSS 的分层视频理解思路一致,但 VSL 是面向轻量本地部署的独立实现。

数据和隐私边界

  • 原始连续视频流默认不永久保存。
  • 本地检测、跟踪和规则判断不需要外部 API。
  • 事件片段是否发送给视觉模型由用户配置决定。
  • API Key 使用本地 AES-GCM 加密保存,读取设置时不返回明文。
  • Qdrant 和 SQLite 默认都在本机或 Docker 环境内。

基于 AGPL-3.0 开源 · Built by WeCanCoding