feat: 新增车辆检测Paddle模型及相关服务,优化依赖与代码兼容性

1. 新增3套PaddlePaddle车辆检测相关模型文件
2. 新增车辆检测服务类与违停检测功能
3. 更新服务依赖并添加环境初始化脚本与文档
4. 修复YOLO检测tensor转换兼容问题
5. 新增PyTorch版本兼容性修复逻辑
6. 扩展模型服务支持Paddle模型加载
This commit is contained in:
wwh
2026-05-21 16:26:26 +08:00
parent 8809c3a6f4
commit a16e684e46
16 changed files with 1045 additions and 23 deletions

98
apps/server/setup_env.sh Normal file
View File

@@ -0,0 +1,98 @@
#!/bin/bash
# 视频模型检测平台 - 环境初始化脚本
# 创建日期2026-05-21
# Python 版本3.12
set -e
echo "========================================="
echo "开始初始化视频模型检测平台环境"
echo "========================================="
# 检查 Python 版本
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
echo "当前 Python 版本: $PYTHON_VERSION"
# 创建虚拟环境
if [ ! -d "venv" ]; then
echo "创建虚拟环境..."
python3 -m venv venv
echo "✅ 虚拟环境创建成功"
else
echo "⚠️ 虚拟环境已存在,跳过创建步骤"
fi
# 激活虚拟环境
echo "激活虚拟环境..."
source venv/bin/activate
# 升级 pip
echo "升级 pip..."
pip install --upgrade pip
# 安装依赖
echo "安装项目依赖..."
pip install -r requirements.txt
# 修复 imgaug NumPy 2.0 兼容性问题
echo "修复 imgaug NumPy 2.0 兼容性问题..."
IMGUAG_FILE="venv/lib/python3.12/site-packages/imgaug/imgaug.py"
if [ -f "$IMGUAG_FILE" ]; then
echo "应用 imgaug 兼容性补丁..."
# 检查是否已经修复
if grep -q "np.float16, np.float32, np.float64" "$IMGUAG_FILE"; then
echo "✅ imgaug 已修复,跳过"
else
# 备份原文件
cp "$IMGUAG_FILE" "${IMGUAG_FILE}.backup"
# 应用修复
sed -i.bak 's/NP_FLOAT_TYPES = set(np.sctypes\["float"\])/NP_FLOAT_TYPES = {np.float16, np.float32, np.float64}/' "$IMGUAG_FILE"
sed -i.bak 's/NP_INT_TYPES = set(np.sctypes\["int"\])/NP_INT_TYPES = {np.int8, np.int16, np.int32, np.int64}/' "$IMGUAG_FILE"
sed -i.bak 's/NP_UINT_TYPES = set(np.sctypes\["uint"\])/NP_UINT_TYPES = {np.uint8, np.uint16, np.uint32, np.uint64}/' "$IMGUAG_FILE"
echo "✅ imgaug 修复完成"
fi
else
echo "⚠️ imgaug 文件未找到,跳过修复步骤"
fi
# 验证安装
echo "验证关键包安装..."
python -c "import numpy; print(f'✅ NumPy {numpy.__version__}')"
python -c "import torch; print(f'✅ PyTorch {torch.__version__}')"
python -c "import ultralytics; print(f'✅ Ultralytics {ultralytics.__version__}')"
python -c "import paddle; print(f'✅ PaddlePaddle {paddle.__version__}')"
python -c "import cv2; print(f'✅ OpenCV {cv2.__version__}')"
# 检查 PaddleDetection 第三方库
PADDLE_DIR="../third-party/paddle-inference"
if [ -d "$PADDLE_DIR" ]; then
echo "✅ PaddleDetection 第三方库存在"
else
echo "⚠️ 警告PaddleDetection 第三方库不存在于 $PADDLE_DIR"
echo "请确保从 AI Studio 下载相关模型和代码"
fi
# 创建必要的目录
echo "创建必要的目录..."
mkdir -p static/results
mkdir -p logs
echo "========================================="
echo "环境初始化完成!"
echo "========================================="
echo ""
echo "使用说明:"
echo "1. 激活虚拟环境: source venv/bin/activate"
echo "2. 启动服务: python main.py"
echo "3. 或使用启动脚本: ./start_server_with_env.sh"
echo ""
echo "重要提示:"
echo "- 确保下载了所有需要的模型文件到 models/ 目录"
echo "- PaddleDetection 第三方库位于: $PADDLE_DIR"
echo "- 详细版本信息见 requirements.txt"
echo ""