diiibe/Sigma-Vision
GitHub: diiibe/Sigma-Vision
一套面向停车场场景的全栈 AI 视频分析平台,将实时车辆检测、占用监测、行为安全事件检测与 3D 数字孪生可视化整合为一体。
Stars: 1 | Forks: 0
Sigma Vision
将数小时的停车监控录像转化为可操作的关键时刻 —— 识别事件,节省时间。
Beantech Spring Hackathon 2026 · 挑战 2:从视频到价值
Lorenzo Di Bernardo · UNITS-AIDA |
Giovanni Mason · UNIVE |
Lorenzo Gobbo · UNIPD
## Sigma Vision 的功能
停车设施每月产生数千小时的监控录像,但几乎从未被分析过。操作员浪费整个班次在录像中搜寻单一事件。传统的 ERP 系统处理计费,但对停车场内实际发生的情况——排队形成、滞留时间违规、冲突、逆行 maneuvers——视而不见。
**Sigma Vision 代替操作员观看视频。** 它摄取多摄像头停车画面,运行实时车辆检测和跟踪,计算占用率和流量指标,检测行为安全事件,并通过带有 3D 数字孪生的交互式仪表板呈现所有内容。以前需要 3-4 小时人工审查的工作现在只需几分钟。
这不是一个演示笔记本。这是一个在实时演示期间实时处理视频的全栈应用程序。

## 演示
所有内容在一台机器上实时运行。没有预录制的,没有预计算的指标。
1. **`/live`** — 3D 数字孪生实时更新。点击任何车位查看详情卡(状态、置信度、停留时间)。切换摄像头。按区域或楼层筛选。
2. **`/analysis`** — 在摄像头画面上绘制计数线。将其启用。观看车辆穿过 —— 计数器实时递增。
3. **`/events`** — 创建带有区域的安全任务。当检测到行为时,事件徽章闪烁。下载 5 秒证据片段。
4. **`/live`** — 返回设施指标。浏览事件存档。导出为 CSV。
## 快速开始
### Docker (推荐)
```
git clone https://github.com/diiibe/Sigma-Vision.git && cd Sigma-Vision
docker compose up demo
# 打开 http://localhost:5173
```
Docker 镜像包含预置的演示状态:视频、模型权重、空间配置和示例事件。开箱即用。
### 本地开发
```
# 1. Clone 并安装 frontend
git clone https://github.com/diiibe/Sigma-Vision.git && cd Sigma-Vision
npm install
# 2. Python 环境
python3 -m venv .venv && source .venv/bin/activate
pip install -r backend/requirements.txt
# 3. 放置 assets
# - .mp4 视频文件位于 demo/videos/
# - YOLOv8s-VisDrone weights 位于 backend/model/yolov8s_visdrone.pt
# (来自 HuggingFace: mshamrai/yolov8s-visdrone)
# 4. 运行 full stack
npm run dev:demo
# Frontend: http://localhost:5173 — Backend: http://localhost:8000
```
环境变量
| Variable | Default | Description |
|---|---|---|
| `HACK26_STATE_DIR` | `backend/state` | 配置 + 运行时存储的根目录 |
| `HACK26_DEMO_ASSETS_DIR` | `demo/` | 演示视频和停车场定义的路径 |
| `HACK26_CORS_ORIGINS` | `http://localhost:5173` | 允许的 CORS 来源 |
| `HACK26_BOOTSTRAP_LAYOUT` | `blank` | 初始布局模式 (`legacy` 或 `blank`) |
| `DEMO_MODE` | `0` | 启用带有预置状态的演示模式 |
设置说明
- **模型权重** 不包含在 git 仓库中(太大)。RCNN 权重(~90 MB)在 Docker 构建期间自动下载。对于本地开发,请将 `yolov8s_visdrone.pt` 放入 `backend/model/`。
- **首次运行** 可能较慢 —— ffmpeg 从视频文件中提取帧并将其缓存为 JPEG。后续运行很快。
- **仅 CPU** 为默认设置。不需要 GPU。YOLOv8s 在 CPU 上以约 48ms/帧运行。
- **YOLO11s** 权重(`yolo11s.pt`)用于安全模块,包含在仓库根目录中(19 MB)。
## 挑战一致性
### 必需指标 — 全部实现
| 必需指标 | 实现 | 查看位置 |
|---|---|---|
| **车辆计数** | 每帧 YOLOv8s-VisDrone 检测,使用匈牙利算法进行跟踪。分区域和全设施计数。 | 仪表板分析面板,`/analysis` 实时画面 |
| **实时占用率** | 使用 ROI 池化的每车位 ResNet50 RCNN,通过滞后 FSM(状态改变前需 N 帧确认)稳定。每个周期进行区域和设施汇总。 | 3D 数字孪生,仪表板占用率 |
| **平均停留时间** | 源于占用状态转换:在 OCCUPIED→FREE 时记录时间戳。持续时间 = 转换之间的差值。 | 车位详情卡,事件历史 |
| **入口/出口计数** | 用户定义的计数线,通过质心轨迹分析(8 帧历史)进行定向穿越。记录带有跟踪 ID、时间戳、置信度的事件。 | `/analysis` 计数器,`/counting` 时间线,CSV 导出 |
### 涉及的加分领域
| 加分领域 | 覆盖范围 |
|---|---|
| **高级分析** | 轨迹跟踪(质心轨迹),带时间平滑的密度区域监控 |
| **深度洞察** | 占用率叠加热力图(停留模式、周转率),拥堵检测,基于阈值的报警(容量、流速、净流量) |
| **多摄像头** | 每摄像头独立线程,全设施聚合,UI 内摄像头切换。 |
| **AI 就绪** | 仅 CPU 推理,ONNX 可导出模型,SQLite(无数据库服务器)。 |
| **隐私设计** | 事件驱动存储(片段,非连续视频),无人脸识别,无个人身份识别,可配置保留限制,GDPR 数据最小化 |
## 架构
### 端到端流水线
```
graph TD
A["Raw Video
(per camera)"] --> B["Frame Extraction"]
B --> C{"Detection"}
C -->|Vehicles| D["YOLOv8s-VisDrone"]
C -->|Persons| E["YOLO11s"]
D --> F["Object Tracking"]
E --> G["Person Tracking"]
F --> H["Bay Occupancy
(RCNN + Hysteresis)"]
F --> I["Line Crossing
Detection"]
F --> J["Density
Monitoring"]
G --> K["Behavioral
Event Detection"]
H & I & J & K --> L["Metric Aggregation"]
L --> M["Evidence Generation"]
M --> N["REST / SSE API"]
N --> O["React Dashboard
+ 3D Digital Twin"]
```
### 三个功能模块
所有模块共享空间配置和摄像头基础设施,但运行**独立处理流水线**,拥有专用线程、模型和状态。
#### 模块 1 — 实时占用仪表板 (`/live`)

**显示内容:**
- **左侧 — 分析:** 占用率,车位细分(占用/空闲/EV/预留/未知)及切换筛选,区域和楼层选择器,CSV 导出。
- **中间 — 3D 数字孪生:** 停车设施渲染为堆叠的 3D 层。每个车位是一个彩色立方体 —— 蓝色(空闲)、橙色(占用)、绿色(EV)、黄色(预留)。点击任何车位打开详情卡,显示状态、置信度、停留时间、摄像头和操作按钮(预留、跟踪、清除覆盖)。提供轨道控制用于平移/缩放/旋转。切换叠加热力图:占用停留(车位保持占用的时间)和车辆周转(车位状态改变的频率)。
- **右侧 — 监控:** 实时摄像头画面,带有按车位状态颜色编码的 SVG 多边形叠加。摄像头切换。带有严重性徽章和时间戳的事件日志。“打开存档”查看完整分页事件历史及范围筛选。
**工作流程:** 打开应用程序 —— 仪表板已经上线。后端调度器在后台循环中推进帧、运行检测、跟踪和 RCNN 分类。前端轮询快照并渲染更新。无需手动操作:操作员一目了然地查看设施状态,并在异常出现时深入了解。
#### 模块 2 — 车辆分析与计数 (`/analysis`, `/counting`)

操作员创建观察任务 —— 将摄像头与直接在摄像头图像上绘制的特定测量(计数线或密度区域)配对。
**工作流程 — 分步:**
1. **选择摄像头** 从下拉菜单中 —— 实时帧作为编辑画布出现。
2. **绘制观察。** 对于入口/出口计数:在图像上点击两点以定义计数线,命名,分配方向。对于密度监控:点击 3+ 点以定义多边形区域,设置容量阈值。
3. **启动任务。** 切换观察开启。后端为该摄像头生成专用计数线程 —— 以原始帧率运行 YOLO 检测和匈牙利跟踪,独立于占用流水线。
4. **观察模型工作。** 实时画面通过 SVG 叠加显示 YOLO 边界框 —— 默认为黄色,当车辆穿过入口线时变为绿色,出口时为红色。计数器在检测到穿越时实时更新。
5. **运行多个任务。** 同一摄像头(或不同摄像头)上最多 2 个同时任务。单个 `
标签:3D可视化, AV绕过, Docker, FastAPI, Python, PyTorch, React, Syscalls, Three.js, TypeScript, YOLO, 事件识别, 停车管理, 凭据扫描, 安全插件, 安全防御评估, 安防监控, 实时检测, 数字孪生, 无后门, 智慧交通, 智慧停车, 智慧城市, 深度学习, 目标检测, 视频分析, 计算机视觉, 请求拦截, 车位占用监测, 逆向工具, 防御绕过, 黑客马拉松获奖项目