Files
security-ai-edge/.trae/documents/plan_20260129_091042.md
2026-01-29 18:33:12 +08:00

182 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Edge_Inference_Service 工业级边缘AI推理服务开发计划
## 一、项目概述
开发工业级Python推理服务支持多路RTSP视频流接入、TensorRT GPU推理、实时告警上报满足7×24小时稳定运行要求。
## 二、技术环境要求
- **操作系统**: Windows 10/11
- **GPU环境**: CUDA 12.1 + cuDNN 8.9.7 + TensorRT 8.6.1
- **Python环境**: Conda虚拟环境 `yolo`
- **核心依赖**: opencv-python, ultralytics, pycuda, paho-mqtt, sqlalchemy, redis
## 三、项目目录结构
```
edge_inference_service/
├── config/ # 配置模块
│ ├── __init__.py
│ ├── settings.py # 全局配置(数据库、MQTT、Redis等)
│ ├── database.py # 数据库连接配置
│ └── config_models.py # 数据模型定义
├── core/ # 核心处理模块
│ ├── __init__.py
│ ├── config_sync.py # 配置同步模块(第1阶段)
│ ├── video_stream.py # 视频流接入模块(第2阶段)
│ ├── preprocessor.py # 图像预处理流水线(第3阶段)
│ ├── tensorrt_engine.py # TensorRT推理引擎(第4阶段)
│ ├── postprocessor.py # 后处理与业务逻辑(第5阶段)
│ └── result_reporter.py # 结果上报模块(第6阶段)
├── utils/ # 工具类
│ ├── __init__.py
│ ├── logger.py # 分级日志系统
│ ├── common.py # 公共工具函数
│ └── version_control.py # 版本控制机制
├── tests/ # 测试目录
│ ├── __init__.py
│ ├── test_config_sync.py # 配置模块单元测试
│ ├── test_video_stream.py # 视频流模块单元测试
│ ├── test_preprocessor.py # 预处理模块单元测试
│ ├── test_tensorrt.py # TensorRT模块单元测试
│ ├── test_postprocessor.py # 后处理模块单元测试
│ └── test_integration.py # 集成测试
├── logs/ # 日志目录
├── models/ # 模型文件目录
├── data/ # 数据目录
├── main.py # 主入口
├── requirements.txt # 依赖清单
└── CHANGELOG.md # 版本更新记录
```
## 四、详细实施计划
### 第1阶段配置同步模块
**目标**: 实现MySQL数据库连接管理、Redis Pub/Sub订阅、配置缓存与动态刷新
**任务分解**:
1.1 创建`config/settings.py`定义数据库连接参数、Redis配置、MQTT配置
1.2 开发`config/database.py`实现MySQL连接池管理类
1.3 创建`config/config_models.py`定义CameraInfo和ROIConfig数据模型
1.4 开发`core/config_sync.py`:
- 实现MySQL连接管理读取camera_info和roi_config表
- 开发Redis Pub/Sub客户端监听"config_update"主题
- 实现配置动态刷新机制,记录版本号
- 设计LRU缓存策略减少数据库访问
1.5 编写配置模块单元测试覆盖率≥80%
### 第2阶段视频流接入模块
**目标**: 实现多路RTSP流拉取、动态抽帧、断线重连
**任务分解**:
2.1 开发`core/video_stream.py`:
- 实现RTSP流拉取类支持多线程并发
- 实现动态抽帧机制(可配置fps如5fps)
- 设计断线重连机制(指数退避策略)
- 实现视频帧时间戳同步与缓存管理
2.2 编写视频流模块单元测试
### 第3阶段图像预处理流水线
**目标**: 实现ROI裁剪、Letterbox预处理、Batch打包
**任务分解**:
3.1 开发`core/preprocessor.py`:
- 实现ROI裁剪模块(支持多边形和矩形)
- 实现Letterbox预处理:
- 等比例缩放至480×480
- 灰色(114,114,114)填充
- 保持原始比例
- 设计Batch打包机制:
- 动态Batch大小(1-8)
- NCHW格式转换
- FP16精度转换
- 连续内存块分配
3.2 编写预处理模块单元测试
### 第4阶段TensorRT推理引擎
**目标**: 实现引擎加载、显存优化、异步推理、性能监控
**任务分解**:
4.1 开发`core/tensorrt_engine.py`:
- 实现TensorRT引擎管理类
- 实现engine文件加载与卸载
- 实现上下文管理,支持动态设置输入维度
- 优化显存管理:
- 输入/输出显存绑定
- 异步推理模式execute_v2
- 显存池机制
- 实现推理性能监控(耗时、吞吐量)
4.2 编写TensorRT模块单元测试
### 第5阶段后处理与业务逻辑
**目标**: 实现NMS算法、坐标映射、ROI区域判定、告警状态机
**任务分解**:
5.1 开发`core/postprocessor.py`:
- 实现高效NMS算法
- 开发坐标映射系统:
- 480×480 → ROI空间
- ROI空间 → 原始帧坐标
- 实现ROI区域判定算法:
- 多边形区域内点检测
- 目标中心点/Bottom-Center判定
- 设计告警状态机:
- 连续N帧检测触发
- 可配置告警阈值
- 防止瞬时误报
5.2 编写后处理模块单元测试
### 第6阶段结果上报模块
**目标**: 实现MQTT客户端、告警存储、重试机制
**任务分解**:
6.1 开发`core/result_reporter.py`:
- 实现MQTT客户端(云端业务平台连接)
- 设计告警信息格式(JSON)
- 实现MySQL告警记录存储
- 开发上报重试机制(指数退避)
6.2 编写结果上报模块单元测试
### 第7阶段质量保障与集成测试
**目标**: 完善异常处理、性能监控、代码质量
**任务分解**:
7.1 开发`utils/logger.py`:
- 实现分级日志系统(DEBUG/INFO/WARNING/ERROR)
- 记录关键性能指标
7.2 开发`utils/version_control.py`:
- 实现代码更新记录机制
- 记录更新时间、内容、修改人、影响范围
7.3 完善各模块异常处理:
- RTSP流异常断开检测与重连
- 显存溢出捕获与恢复
- 数据库连接异常处理
- MQTT连接状态监控与重连
7.4 编写集成测试:
- 模块间集成测试
- 端到端测试
- 性能压力测试
7.5 创建`CHANGELOG.md`,记录版本更新
## 五、开发规范
1. **编码规范**: 严格遵循PEP 8
2. **注释要求**: 关键步骤添加详细中文注释
3. **代码质量**: 单元测试覆盖率≥80%
4. **模块化**: 高内聚低耦合,支持独立测试
5. **异常处理**: 全面的try-except捕获与日志记录
6. **性能优化**: 显存管理、异步处理、批处理优化
## 六、测试策略
1. **单元测试**: 每个模块独立测试,确保功能正确
2. **集成测试**: 模块间接口测试,确保数据流正确
3. **性能测试**: 端到端延迟、吞吐量、资源占用测试
4. **稳定性测试**: 长时间运行测试验证7×24小时稳定性
## 七、交付物清单
1. 完整的项目源代码
2. requirements.txt依赖清单
3. CHANGELOG.md版本更新记录
4. 单元测试代码(覆盖率≥80%)
5. 集成测试代码
6. 配置文件模板
---
**计划总周期**: 7个阶段预计2-3周完成
**优先级**: 第1→7阶段顺序开发可并行测试