emreyvz/overseer
GitHub: emreyvz/overseer
一个将多路实时摄像头转化为智能化安防指挥中心的系统,集成了目标检测、跨摄像头追踪、取证搜索和自动告警功能。
Stars: 1 | Forks: 0

# overseer
**看得更多。知道得更早。不漏任何细节。**
overseer 将任意一组摄像头转化为单一的实时智能操作系统。它能在事件发生时识别人物、车辆、武器和危险行为,跨越多个摄像头持续跟踪目标,并允许你仅仅通过描述外观特征,就能在数小时的录像中进行回溯搜索。当有重要事件发生时,它会及时通知你,并准确指出需要关注的位置。
## 功能
### 实时指挥中心
**[观看演示视频](demo/initial_map_demo_view.mp4)**
每一个摄像头都是世界地图上的一个实时节点。观察匿名化的移动轨迹在不同视频源之间流动,一键切入任意摄像头,只需一块屏幕即可掌控整个网络。
### 地图与跨摄像头追踪

同时查看所有摄像头。实时绘制它们的布局、运行状态,以及目标在相邻视频源之间移动的路径,随着人员的走动同步更新。
### 摄像头管理

几秒钟内添加并管理视频源。原生支持 MJPEG、RTSP、RTMP 和 YouTube 直播 URL。
### 实时视图与图像处理

全分辨率实时分析,配备“拉近查看”工具,可对画面中的任意位置进行裁剪、放大和锐化,从而提取出肉眼和检测器都会遗漏的细节。
### 目标跟踪

锁定任何检测目标,生成包含类别、属性和预测路径的实时目标卡片。如果目标离开画面后再次出现,overseer 会自动重新捕获它。
### 取证搜索

根据外貌特征查找任何人。无论是颜色、身高、体型、配饰,还是上传一张照片。你都会得到一个确切的结果,而不是一堆模棱两可的猜测。
### 监视列表与视觉匹配

只需录入一次人员、车辆或物体,随后即可仅凭外观在所有实时视频源中对其进行定位。
### 智能警报规则

为区域和行为设定规则。包括禁区、徘徊、人群聚集、跌倒、打架、遗留物、越线等。或者直接用自然语言输入规则,让助手为你构建。
### 异常与威胁报告

事件按严重程度排序,并在重复发生时进行分组。你可以回放任意事件,画面上会覆盖精确标记触发原因的图层,并附有关于其重要性的书面解释。
### AI 助手

这是一个可选的助手,兼容任何支持 OpenAI 接口的服务商。它能执行自然语言搜索,将相关的警报串联成同一个事件,生成交接班摘要,建议下一步行动,并根据需要描述场景。每个功能都有独立的开关,即使完全不配置任何 AI,overseer 也能完美运行。
## 快速开始
克隆本仓库,然后运行适用于你系统的一键启动脚本。它会自动安装所有必需组件并打开应用。接下来只需等待即可。
```
git clone https://github.com/emreyvz/overseer.git
cd overseer
```
**Windows**
双击 `overseer.cmd`,或在终端中运行:
```
overseer.cmd
```
**macOS 和 Linux**
```
chmod +x overseer.sh
./overseer.sh
```
首次运行时会自动安装 Python 工具链,拉取依赖项并下载视觉模型,因此请耐心等待几分钟。如果已安装 Node.js,它将构建并打开完整的桌面应用。如果没有,它会在浏览器中打开 `http://127.0.0.1:8787`。无论哪种方式,你都能获得完整的体验。
### 视觉模型
首次启动时,`overseer.cmd` / `overseer.sh` 会为你下载视觉模型。如果下载被跳过或失败,应用依然可以运行,只是准确度会降低,并且会在每个结果中注明,因此模型获取失败绝不会导致系统崩溃。你可以随时重新运行获取命令:
```
uv run python -m match.tools.export_models
```
大多数模型都是全自动下载的。两个专用的重新识别模型能提供最佳的识别准确度,但它们托管在 Google Drive / 发布页面背后,因此你需要手动下载一次 checkpoint,随后使用相同的命令进行转换。即使没有它们,应用也能很好地工作,因为通用的 DINOv2 embedder 可以作为替代。
| 模型 | 功能 | 获取方式 |
|-------|--------------|----------------|
| YOLO11 detector (`yolo11s.pt`) | 识别人物、车辆、动物、武器 | 自动(首次分析时) |
| YOLO11-seg (`yolo11n-seg.pt`) | 提供前景掩码以实现更清晰的匹配 | 自动 |
| DINOv2 ViT-S/14 (`dinov2_vits14.torchscript`) | 通用外观 embedding;也作为人员/车辆的备选方案 | 自动 (torch.hub) |
| EasyOCR | 用于车辆身份识别的车牌读取 (ANPR) | 通过 `uv sync --extra ai-extras` 自动获取 |
| OSNet-AIN (`osnet_ain_x1_0.torchscript`) | 专用人员重新识别 | 手动获取 checkpoint,见下文 |
| VeRi R50-ibn (`veri_sbs_R50-ibn.torchscript`) | 专用车辆重新识别 | 手动获取 checkpoint,见下文 |
**人员重新识别 (OSNet-AIN)。** 从 torchreid 模型库下载一个跨域 OSNet-AIN checkpoint,将其放入 `models/` 目录,然后运行获取命令将其转换为 `models/osnet_ain_x1_0.torchscript`。
- 模型库: https://github.com/KaiyangZhou/deep-person-reid/blob/master/docs/MODEL_ZOO.md
- 推荐(多数据源,泛化至未知摄像头): https://drive.google.com/file/d/1nIrszJVYSHf3Ej8-j6DTFdWz8EnO42PB/view
**车辆重新识别。** 下载 fast-reid VeRi 模型,将其放入 `models/`,并进行转换。这一步需要 fast-reid 框架,因此请先克隆该框架,并在运行获取命令前将 `FASTREID_ROOT` 指向它。
- 权重(直接下载): https://github.com/JDAI-CV/fast-reid/releases/download/v0.1.1/veri_sbs_R50-ibn.pth
- 框架: `git clone https://github.com/JDAI-CV/fast-reid` 然后 `export FASTREID_ROOT=/path/to/fast-reid`
模型文件位于 `models/` 目录下,并且已配置 git 忽略,因此它们绝不会使仓库变得臃肿。
### 将 YouTube 视频作为摄像头
将 YouTube 视频 URL 添加为视频源,overseer 会以最高 1080p 的分辨率一次性下载该视频,并像实时视频流一样从头到尾循环播放,同时对其实时运行与真实摄像头相同的检测和跟踪。该视频仅需下载一次并可重复使用,因此永远不会重新流式传输,也不会过期。在视频下载期间,摄像头会显示该视频的海报画面和下载进度徽标。
### 可选的 AI 设置
在你为其配置服务商之前,助手将保持关闭状态。复制模板并填入你的 API 密钥:
```
cp config/ai_secret.json.example config/ai_secret.json
```
然后编辑 `config/ai_secret.json`。该文件已被 git 忽略,绝对不会离开你的本地设备。任何兼容 OpenAI 的 endpoint 均可使用,你也可以在助手内部的设置面板中进行配置。
### 开发者设置
想要进行代码开发?你可以手动运行各个组件:
```
uv sync # backend and its Python deps
cd web && npm install && npm run build # build the interface
npm run electron # desktop app, or: uv run python -m server for browser mode
```
## 负责任的使用
overseer 旨在用于防御性态势感知、公共安全和取证工作。你需对自己如何使用它承担全部责任。
- 仅将其指向你拥有或获得授权访问的摄像头和视频流。
- 遵守你所在地区适用的所有隐私、监控和数据保护法律。
- 绝不将其用于跟踪、骚扰、画像分析或伤害任何人。
本软件按“原样”提供,不提供任何形式的保证。对于任何滥用行为或因使用本软件而产生的任何损害,作者概不负责。
## 贡献
欢迎提交 Issue 和 pull request,特别欢迎 Bug 报告和有针对性的修复。如果有较大的改动,请先创建 Issue;遵守现有的代码风格,并确保在提交前 `uv run pytest` 和 `npm run build` 均能顺利通过。
## 许可证
仅供个人使用。你可以出于个人非商业目的使用和修改 overseer。你不得出售它、出售其修改版本,或将其作为商业产品或服务的一部分发布。完整条款请参见 [LICENSE](LICENSE)。
如需申请其他许可或有任何投诉,请通过 [github.com/emreyvz](https://github.com/emreyvz) 联系作者。
标签:MITM代理, Petitpotam, 图像检索, 智能安防, 暗色界面, 目标跟踪, 视频监控, 计算机视觉, 逆向工具