实现自己的AI视频监控系统-第二章-AI分析模块5(重点)
文章目录
- 前言
- 一、基本回顾
- 1.1 视频展示系统
- 1.2 基于TensorRT的推理封装
- 二、video system的设计与实现
- 2.1 推理引擎的设计
- 2.2 拉流引擎的设计
- 2.3 主体服务的设计
- 2.4 代码展示
- 总结
- 后续内容预告
前言
在上一小节,我们实现了基于TenosRT的推理加速,在本小节,我们将汇总第一章节的视频展示系统,实现8路视频满帧分析,并封装为完整的工程化代码。具体参考代码git仓库video_system。
一、基本回顾
1.1 视频展示系统
- 视频展示系统采用pyav以软解码的方式实现了8路RTSP视频流的拉取,并在屏幕上实现8路视频的实时显示
- 同时采用接口的方式进行了开启和关闭的封装
- 添加视频流
接口: POST /streams/{stream_id} - 启动指定视频流
接口: POST /streams/{stream_id}/start - 停止指定视频流
接口: POST /streams/{stream_id}/stop - 删除视频流
接口: DELETE /streams/{stream_id}
- 添加视频流
1.2 基于TensorRT的推理封装
第二章节我们详细介绍了基于ultralytics、onnxruntime以及TensorRT的模型推理,以实验的方式介绍了各个推理工具的优缺点。通过该实验,我们验证了TensorRT具备以下优势:
- 更快的推理速度。相比ultralytics和onnxruntime,最大并发推理帧率可提升约2倍。
- 更低的资源占用。相比ultralytics和onnxruntime,设备利用率可提升约200%。
二、video system的设计与实现
2.1 推理引擎的设计
-
推理引擎实现了一个基于TensorRT的YOLO目标检测模型推理类,主要功能包括:
-
模型加载与缓存:使用类级别缓存避免重复加载相同模型
-
线程安全设计:使用类级别锁保护CUDA资源初始化和实例级别锁保护推理过程
-
预处理:图像缩放、填充和归一化
-
推理执行:使用TensorRT进行高效GPU推理
-
后处理:包括置信度过滤和非极大值抑制(NMS)
-
结果可视化:在图像上绘制检测框和标签
-
-
接口及依赖图如下所示:
- 调用执行示意图:
- 执行流程示意图:
- 这个设计展示了TrtModel类的结构、与其他组件的关系以及推理过程的流程。类使用了线程安全设计和缓存机制来提高性能,同时提供了完整的预处理、推理和后处理功能。但是也存在以下弊端:
- 缺少合适的多模型推理机制。 如果需要一路分析多个算法和模型,目前的运行机制尚不完全满足。
- 缺少合适的多结果展示机制。 当前所有通道均为一个模型,如果存在多模型推理,如何展示不同推理模型的结果是个问题。
- 没有克服python GIL锁的限制。 受限于编程语言,多线程执行存在python GIL锁的限制。
- 缺少合适的进程池封装。 没有采用合适的多进程-多模型设计来进一步提高分析的帧率。
2.2 拉流引擎的设计
-
拉流引擎实现了一个高效的多功能视频流解码器,主要功能包括:
-
RTSP流处理:支持RTSP视频流的连接和解码
-
智能重连机制:支持超时和重连策略
-
帧处理与回调:支持帧处理回调函数,可与AI推理模块集成
-
时间戳添加:在视频帧上添加时间戳水印
-
抽帧策略:支持关键帧提取和自定义帧跳过策略
-
线程安全设计:使用锁保护共享资源
-
状态监控:提供连接状态和统计信息
-
-
其接口依赖图、执行调用流程和执行逻辑如下图所示:
- 拉流引擎使用了多线程处理视频流解码,支持智能重连机制和与AI推理模块的集成。设计还展示了帧处理流程和状态管理机制。
2.3 主体服务的设计
-
主体服务实现了一个完整的多路视频流管理系统,集成了视频流解码、AI目标检测、报警管理和可视化展示功能。主要特点包括:
-
FastAPI Web服务:提供RESTful API接口管理视频流和模型
-
多路视频流管理:支持同时处理多个RTSP视频流
-
智能报警系统:支持基于检测结果的多种报警方式(暂未完善)
-
多线程处理:使用线程池和进程池进行异步推理
-
可视化展示:提供2×4网格的多路视频实时显示
-
动态配置:支持运行时动态调整流参数和模型配置
-
-
数据流转、调用流程图参考下图:
主服务设计展示了一个完整的多路视频流处理管道,从视频流输入到AI推理再到结果展示和报警处理。系统采用了分层架构,各组件职责明确,通过FastAPI提供统一的管理接口,支持动态配置和扩展。
2.4 代码展示
- 由于本章节涉及的代码较多,请参考github仓库获取完整的代码,对于环境的安装,请参考之前小节的内容。
总结
我们已经完成了一个监控系统应有的部分,包括视频流的管理、基本的AI视频分析功能。但是随着生产需要和新技术的迭代,现有的系统仍需在智能化、实时性、扩展性以及多模态数据分析等方面进行深化和拓展。
接下来的工作重点将围绕以下几个方向展开:
-
算法模型优化与迭代
-
引入大模型,提升系统平台的生命力。
-
支持多模态分析(如视频、音频、传感器数据融合),增强复杂场景下的检测与识别能力。
-
持续优化异常行为检测算法,减少误报率,提高准确性和鲁棒性。
-
-
系统性能与实时性提升
-
优化视频流处理 pipeline,实现低延迟、高并发的实时分析。
-
支持动态资源调度,根据负载自动分配计算资源,提高系统响应能力。
-
-
平台扩展性与集成能力
-
提供标准API接口,支持与第三方系统(如门禁、告警、工单系统)无缝集成。
-
构建插件化架构,允许用户按需加载功能模块,降低系统耦合度。
-
-
数据管理与智能分析
-
构建视频元数据管理系统,支持智能检索与行为回溯。
-
引入时序数据分析与模式学习,实现对长期趋势的预测性维护与告警。
-
-
用户体验与可视化
-
增强监控看板的交互性与自定义能力,提供更直观的数据呈现方式。
-
支持移动端访问与实时消息推送,提升用户操作的便捷性。
-
通过这些改进,系统将不仅满足当前的生产监控需求,也为未来的技术演进和应用场景拓展奠定坚实基础。我们致力于打造一个更智能、高效、易用的下一代监控分析平台。
后续内容预告
- 报警信息的推送与分析画面的推流
- 大模型赋能系统平台
- 新的算法提升监控的生命力