4.3 KiB
4.3 KiB
TensorRT Pipeline 架构设计
1. 整体架构
项目采用模块化设计,主要分为以下几个核心模块:
1.1 输入模块 (Input)
- 视频文件读取(已完成)
- 异步读取支持
- 帧率控制
- 帧队列管理
- RTSP流读取(已完成)
- 自动重连机制
- 缓冲区管理
- 超时处理
- 输入源管理(已完成)
- 多路输入支持
- 输出目标映射
- 资源管理
1.2 推理模块 (Inference)
- TensorRT引擎管理(已完成)
- ONNX模型转换(已完成)
- GPU加速预处理(已完成)
- 批处理支持(已完成)
- CUDA内存优化(已完成)
1.3 渲染模块 (Render)
- 检测结果可视化(已完成)
- 性能指标显示(已完成)
- 自定义渲染样式(已完成)
- 测试模式支持(已完成)
1.4 输出模块 (Output)
- RTSP推流(已完成)
- H264/H265编码支持
- 可配置推流参数
- 自动重连机制
- 视频文件保存(已完成)
- 多格式支持
- 可配置编码参数
- 自动目录管理
- 输出管理(已完成)
- 多路输出支持
- 输入源映射
- 资源管理
2. 核心类设计
classDiagram
Pipeline --> InputManager
Pipeline --> TrtInference
Pipeline --> FrameDrawer
Pipeline --> OutputManager
InputManager --> RtspReader
InputManager --> VideoReader
InputManager --> SourceTargetMapper
OutputManager --> RtspWriter
OutputManager --> VideoWriter
OutputManager --> TargetSourceMapper
SourceTargetMapper --> TargetSourceMapper
3. 数据流
graph LR
A[输入源] --> B[预处理]
B --> C[推理]
C --> D[后处理]
D --> E[渲染]
E --> F[输出映射]
F --> G1[输出1]
F --> G2[输出2]
F --> G3[输出3]
subgraph GPU Memory
B
C
D
end
subgraph Output Mapping
F
G1
G2
G3
end
4. 输入输出映射设计
4.1 映射关系
- 一对一映射:一个输入源对应一个输出目标
- 一对多映射:一个输入源对应多个输出目标
- 多对一映射:多个输入源对应同一个输出目标
- 默认映射:未指定映射时使用所有输出目标
4.2 配置管理
- YAML配置文件定义映射关系
- 运行时动态更新映射
- 支持热重载配置
4.3 资源管理
- 智能指针管理资源生命周期
- 线程安全的资源访问
- 自动清理无效映射
4.4 性能优化
- 哈希表实现快速查找
- 读写锁分离
- 缓存常用映射关系
4.5 错误处理
- 配置验证
- 运行时错误恢复
- 详细的错误日志
5. 性能优化
已实现优化
- CUDA流水线
- 异步读取
- 零拷贝传输
- 批处理基础支持
- 输入输出映射优化
- 哈希表实现
- 读写锁分离
- 映射关系缓存
待实现优化
- 动态批处理
- 内存池优化
- 多流并行
- 跨模块流水线
6. 配置系统
已完成功能
- YAML配置解析
- 配置验证
- 运行时参数调整
- 渲染样式配置
- 输入输出映射配置
- 映射关系定义
- 动态更新支持
- 配置验证
待完成功能
- 动态参数调整
- 配置热重载
7. 开发进度
已完成模块
-
配置系统 (100%)
- YAML解析器
- 配置验证
- 参数管理
- 映射配置支持
-
推理模块 (100%)
- TensorRT引擎
- 预处理器
- CUDA优化
- 批处理支持
-
渲染模块 (100%)
- 基础渲染器
- 帧绘制器
- 性能显示
- 测试支持
-
输入模块 (100%)
- 视频读取器
- RTSP读取器
- 输入源管理
- 输出目标映射
-
输出模块 (100%)
- 视频写入器
- RTSP推流器
- 输出管理器
- 输入源映射
开发中模块
- 系统集成
- Pipeline实现
- 模块协调
- 性能优化
待开发功能
- 测试完善
- 系统测试
- 性能测试
- 压力测试
8. 后续计划
短期目标
- 完善系统测试
- 优化性能指标
- 完善错误处理
中期目标
- 实现配置热重载
- 优化内存使用
- 完善监控系统
长期目标
- 系统集成
- 性能调优
- 发布稳定版本