一、AI 视频检测系统整体架构
典型落地采用端–边–云协同 + 四层分层架构:
[感知层] 摄像头/RTSP/文件
↓
[接入与预处理层] 解码、抽帧、去噪、缩放
↓
[AI推理层] 目标检测 → 跟踪 → 姿态/时序分析 → 异常判定
↓
[业务与应用层] 告警规则、存储归档、可视化、联动控制
- 感知层:IPC 摄像头、NVR、本地视频文件,支持 RTSP/RTMP/GB28181
- 接入层:FFmpeg/OpenCV 解码,关键帧提取,ROI 裁剪,降分辨率减负载
- AI 推理层:YOLO 检测 + DeepSORT 跟踪 + 姿态估计(OpenPose/HRNet) + 时序模型(LSTM/TCN/ST-GCN/I3D) 做行为或异常打分
- 业务层:规则引擎(区域入侵/逗留/跌倒)、去抖防误报、存 MinIO/对象存储、推 WebSocket/钉钉/短信
▸ 开源系统级框架参考(可直接借鉴或二次开发):
- VideoPipe(sherlockchou86/VideoPipe) — C++ 节点化流水线,内置 RTSP 拉流、YOLO 检测、SORT/DeepSORT 跟踪、行为规则节点,适合工程化
- Frigate(blakeblackshear/frigate) — 开源 AI-NVR,FFmpeg 拉流 + motion 过滤 + YOLO 检测 + 跟踪,适合本地安防
- DeepCamera(SharpAI/DeepCamera) — 端到端智能视频分析,集成 YOLO/OpenPose/人脸/跌倒检测,含 RTSP/WebRTC
- MMAction2 + MMPose + MMDetection(OpenMMLab) — 算法研究向统一框架,覆盖检测/姿态/行为分类
二、核心处理流水线(Pipeline)
每路视频流按如下步骤处理:
1. 视频采集与解码
- OpenCV
cv2.VideoCapture(rtsp_url)或 FFmpeg - 控制解码帧率(如 5~10 fps 抽帧,不必逐帧)
▸ 开源参考:OpenCV、FFmpeg / GStreamer(硬解码 NVDEC/VAAPI)、Live555(RTSP 协议级)
2. 预处理
- BGR→RGB、Resize(640×640 或 416×416)、归一化
- 可选:去噪、光照补偿、运动模糊检测
▸ OpenCV 完成基础变换;Albumentations 用于训练时光照增强;VideoPipe 内置预处理节点
3. 空间感知——目标检测与跟踪
- YOLOv8/v10-n/s 检测人/车/物品 → 得到 bbox & class
- DeepSORT/Bytetrack 跨帧 ID 跟踪,输出轨迹
▸ 检测开源:Ultralytics YOLOv8/v9/v10/v11(最主流,ONNX/TensorRT 友好)、MMDetection、Detectron2
▸ 跟踪开源:ByteTrack(ifzhang/ByteTrack,Ultralytics 内置model.track())、DeepSORT(nwojke/deep_sort + ZQPei 改进版)、BoT-SORT / OC_SORT、deepsort-tensorrt(C++/TRT 加速)
4. 时序感知——行为/异常分析
- 姿态:对人体 bbox 做关键点检测 → 骨架序列
- 时序建模:滑动窗口取 N 帧骨架/特征 → LSTM/GRU/TCN 或 ST-GCN 判断动作类别(走/跑/跌倒/打架)
- 异常检测(无监督):用正常样本训练 AutoEncoder 或记忆网络,重构误差 > 阈值即异常
▸ 姿态开源:YOLOv8-pose(Ultralytics,部署最简单)、MMPose+HRNet(OpenMMLab,高精度)、AlphaPose(MKLab)、OpenPose(CMU)
▸ 行为分类开源:ST-GCN(yysijie/ST-GCN,骨架图卷积)、MMAction2(OpenMMLab,集成 SlowFast/I3D/TSN/TSM/ST-GCN/PoseC3D)、PyTorchVideo(Meta)、SlowFast(facebookresearch/SlowFast)
▸ 异常检测开源参考:MemAE / Conv-AE 复现(正常样本训练+重构误差阈值)、ST-GCN + One-Class SVM/kNN 建正态边界
5. 决策与告警
- 结合规则(是否越界、滞留时长、异常分数)
- 防抖(冷却时间、连续 N 帧确认)→ 触发告警
6. 存储与展示
- 存关键帧 + 前后数秒片段 + 元数据(JSON)
- Web 前端叠框/骨架实时渲染 + 告警列表
▸ 后端开源:FastAPI/Flask + Celery + Redis(异步队列)、PostgreSQL + MinIO(结构化结果+视频片段)
▸ 前端开源:Vue + Video.js / flv.js + ECharts(实时叠框+告警面板)
▸ 监控:Prometheus + Grafana(多路流水线 QPS/延迟)
▸ 现成联动:Frigate + Home Assistant / MQTT(事件联动与通知)
三、各层技术选型参考
| 模块 | 推荐技术 | 说明 / 优势开源项目 |
|---|---|---|
| 解码/抽帧 | OpenCV / FFmpeg / GStreamer | 支持 RTSP 多路并发;GStreamer 可硬解 |
| 目标检测 | YOLOv8n/v10n (ONNX/TensorRT) | 快,适合边缘 INT8 量化;Ultralytics YOLOv8/v10、MMDetection |
| 跟踪 | ByteTrack / DeepSORT | ID 稳定,抗遮挡;ByteTrack(ifzhang)、DeepSORT(nwojke/ZQPei)、BoT-SORT |
| 姿态估计 | OpenPose / HRNet / YOLOv8-pose | 17/33 关键点;YOLOv8-pose(Ultralytics)、MMPose+HRNet(OpenMMLab)、AlphaPose |
| 行为分类 | LSTM / TCN / SlowFast / I3D | 有标注用分类,无标注用 VAD;MMAction2(SlowFast/I3D/ST-GCN)、ST-GCN(yysijie) |
| 异常检测 | AE / MemAE / ST-GCN+VAD / kNN | 无需异常样本;MemAE 复现 + 重构误差阈值 |
| 推理加速 | ONNX Runtime / TensorRT / OpenVINO | 边缘 GPU/NPU 必备;TRT INT8 提速 3~5× |
| 后端 | FastAPI / Flask + Redis + PostgreSQL + MinIO | 异步解耦 |
| 前端 | Vue + Video.js + ECharts | 实时画面+告警面板 |
| 系统框架 | VideoPipe / Frigate / DeepCamera | C++流水线 / AI-NVR / 端到端智能分析 |
四、最简 Python 伪代码示例
import cv2
from ultralytics import YOLO # Ultralytics YOLOv8 — github.com/ultralytics/ultralytics
model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("rtsp://ip/stream")
while True:
ret, frame = cap.read()
if not ret:
break
# 抽帧控制可自行加计数器
results = model.track(frame, persist=True, classes=[0]) # 只检人,ByteTrack内置(ifzhang/ByteTrack)
annotated = results[0].plot()
cv2.imshow("AI Video Detect", annotated)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
在此基础叠加:姿态估计(YOLOv8-pose) → 缓存骨架序列 → 时序模型推理(ST-GCN / yysijie/ST-GCN) → 异常阈值判断 → 告警。
五、部署建议
- 边缘节点:跑 YOLO+跟踪+简单规则,只上传异常片段到云,节省带宽
- 云端:高精度模型复核、历史统计、VLM 做语义解释(可选)
- 性能目标:1080P 单路 ≥20–25fps,端到端延迟 <200ms,INT8 量化提速 3~5 倍
1217

被折叠的 条评论
为什么被折叠?



