Files
wwh e97bd503ec feat: 新增PaddlePaddle检测支持,重构项目架构
1. 新增concurrently依赖用于并行启动服务
2. 新增服务器启动脚本统一管理环境变量和虚拟环境
3. 新增PaddlePaddle推理引擎和配套工具代码
4. 新增抽烟检测Paddle模型支持,完善模型管理
5. 重构开发启动脚本,优化开发体验
6. 更新.gitignore排除不必要的外部目录和缓存
7. 完善文档说明,新增PaddlePaddle部署指南
2026-05-21 10:39:26 +08:00
..

Third-Party Components

此目录包含项目所需的第三方依赖库和组件。

目录结构

third-party/
└── paddle-inference/              # PaddleDetection 推理组件库
    ├── infer.py                   # PaddleDetection 推理引擎
    ├── preprocess.py              # 图像预处理
    ├── utils.py                  # 工具函数
    ├── visualize.py              # 结果可视化
    └── output_inference/         # 模型文件目录(空,已移到 models/

models/                           # 统一的模型文件目录
├── smoking_detection/            # YOLOv8 抽烟检测
├── smoking_detection_paddle/      # PaddlePaddle PP-YOLOE-s 抽烟检测
├── fire_detection/              # YOLOv10 火灾检测
├── helmet_detection/           # YOLOv8 安全帽检测
├── crowd_detection/            # YOLOv8 人群检测
└── loitering_detection/        # YOLOv8 徘徊检测

PaddlePaddle 推理组件

用途

  • 提供 PaddlePaddle 模型的推理功能
  • 支持 PP-YOLOE+ 模型格式
  • 提供预处理、可视化等工具

依赖安装

在服务器虚拟环境中安装以下依赖:

# 进入服务器目录
cd apps/server

# 激活虚拟环境
source venv/bin/activate

# 安装 PaddlePaddle 和依赖
pip install paddlepaddle==3.0.0
pip install 'numpy==1.26.4' 'opencv-python==4.7.0.72'
pip install imgaug==0.4.0

模型管理

统一管理

所有模型文件统一存储在 models/ 目录:

YOLO 模型:

  • smoking_detection/ - YOLOv8 抽烟检测
  • fire_detection/ - YOLOv10 火灾检测
  • helmet_detection/ - YOLOv8 安全帽检测
  • crowd_detection/ - YOLOv8 人群检测
  • loitering_detection/ - YOLOv8 徘徊检测

PaddlePaddle 模型:

  • smoking_detection_paddle/ - PP-YOLOE-s 抽烟检测

模型文件格式

YOLO 模型:

smoking_detection/
└── yolov8n.pt                 # YOLO 模型文件

PaddlePaddle 模型:

smoking_detection_paddle/
├── model.pdmodel              # 模型结构
├── model.pdiparams            # 模型参数
└── infer_cfg.yml             # 推理配置

使用方式

YOLO 模型

from services.detection_service import DetectionService
# 自动加载 models/ 目录中的 YOLO 模型

PaddlePaddle 模型

from services.paddle_detection_service import SmokingDetectionModel
# 自动加载 models/smoking_detection_paddle/ 目录

性能优化

Apple Silicon 优化

  • 本地部署相比 Docker 性能提升 30 倍
  • 推理时间3-4秒 → 0.123秒
  • 内存占用:~3GB → ~0.5GB

环境变量

必须在 Python 进程启动前设置:

export FLAGS_enable_pir_api=0

更新和维护

模型更新

要更新模型,将新文件复制到对应的 models/ 子目录:

models/smoking_detection/          # YOLO 模型
models/smoking_detection_paddle/  # PaddlePaddle 模型

推理代码更新

如需更新 PaddleDetection 推理代码,从官方仓库复制:

PaddleDetection-release-2.9/deploy/python/* → third-party/paddle-inference/

安全更新流程:

# 1. 下载新版代码
cd /tmp
git clone -b release/2.9 https://github.com/PaddlePaddle/PaddleDetection.git

# 2. 备份现有代码
cd ../../jc-video-recognize
cp -r third-party/paddle-inference third-party/paddle-inference.backup

# 3. 更新推理代码
cp -r /tmp/PaddleDetection-release-2.9/deploy/python/* third-party/paddle-inference/

# 4. 测试验证
cd apps/server
./start_server_with_env.sh

# 5. 如果失败,恢复备份
# rm -rf third-party/paddle-inference
# mv third-party/paddle-inference.backup third-party/paddle-inference

故障排查

常见问题

1. 模型加载失败

# 检查模型文件完整性
ls -la ../models/smoking_detection_paddle/

# 应该包含以下文件:
model.pdmodel      # 模型结构约1MB
model.pdiparams    # 模型参数约30MB
infer_cfg.yml      # 推理配置约1KB

# 检查文件权限
chmod 644 ../models/smoking_detection_paddle/*

2. PaddlePaddle 导入失败

# 检查 PaddlePaddle 安装
source ../apps/server/venv/bin/activate
pip list | grep paddle

# 检查环境变量
echo $FLAGS_enable_pir_api
# 应该输出0

# 重新安装 PaddlePaddle
pip install paddlepaddle==3.0.0 --force-reinstall

3. 推理速度慢

# 检查 CPU 使用情况
top -p $(pgrep -f python)

# 检查内存使用情况
free -h

# 性能优化建议:
# 1. 首次加载2秒是正常的模型加载
# 2. 后续推理0.2秒是优秀的
# 3. 如果推理时间 > 1秒考虑优化模型大小

性能监控

实时推理时间监控

# 查看推理日志
tail -f ../apps/server/logs/*.log | grep "推理时间"

系统资源监控

# CPU 使用率
mpstat 1

# 内存使用情况
free -m -s 1

# 磁盘 I/O
iostat -x 1

协作指南

新成员上手流程

  1. 克隆项目

    git clone <repository-url>
    cd jc-video-recognize
    
  2. 安装主项目依赖

    pnpm install
    cd apps/server
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    cd ../..
    
  3. 安装 PaddlePaddle 环境

    bash scripts/setup-paddlepaddle.sh
    
  4. 验证安装

    pnpm dev
    # 检查日志确认 PaddlePaddle 模型加载成功
    

版本管理策略

Git 版本控制:

  • 包含:源代码文件
  • 排除:模型文件(.gitignore
  • 排除:第三方库(.gitignore
  • 排除:虚拟环境(.gitignore

模型文件管理:

  • 使用独立存储服务(如 S3、MinIO
  • 在配置文件中记录模型版本
  • 定期备份训练好的模型

性能基准

标准性能指标:

  • 首次加载:< 3秒
  • 后续推理:< 0.5秒
  • 内存占用:< 1GB
  • CPU 使用率:< 80%

性能测试方法:

# 使用测试图像进行基准测试
curl -X POST "http://localhost:8000/api/detect" \
  -F "image=@test_image.jpg" \
  -F "model=smoking_detection_paddle"

来源

PaddleDetection 官方仓库: https://github.com/PaddlePaddle/PaddleDetection 当前版本: release-2.9