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

7.0 KiB
Raw Blame History

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阶段顺序开发可并行测试