# action-recognition **Repository Path**: jsicu/action-recognition ## Basic Information - **Project Name**: action-recognition - **Description**: 开源行动识别项目,提供高效算法与工具,支持视频中人体动作检测与分类,助力计算机视觉研究与应用开发。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-29 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Yolo ## README # 视频算法项目统一运行说明 本目录包含五个算法项目和一个统一应用入口: - `dangerous-driving`:危险驾驶检测[危险驾驶子库](https://gitee.com/jsicu/dangerous-driving) - `IllegalParkModel`:违停、逗留和人员入侵检测[违停识别子库](https://gitee.com/jsicu/illegal-parking) - `speed-control`:双摄像头区间测速 - `goods-spilled`:车辆固体掉落检测 - `parabola`:隔栏抛物检测 - `unified_app`:统一视频多算法入口 六个入口共用根目录下唯一的 Python 虚拟环境: ```text E:\model\.venv ``` 子项目中不再单独保存 `.venv`。交付 ZIP 也不会携带虚拟环境,目标机器解压后通过安装脚本重建即可。 ## 1. 安装共享环境 环境基线为 Python 3.13。在 `E:\model` 下执行: ```powershell .\setup-env.ps1 ``` 脚本会: - 创建 `E:\model\.venv` - 安装五个算法和统一应用所需的公共依赖 - 使用普通版 `opencv-python`,避免与 `opencv-python-headless` 重复 - 默认安装 CPU 版 `onnxruntime` - 检查关键模块、ONNX Runtime Provider 和依赖冲突 当前 CPU 环境验证版本包括 Python 3.13.1、OpenCV 5.0.0 和 ONNX Runtime 1.27.0。 ### NVIDIA GPU 可选配置 安装 NVIDIA GPU 版 ONNX Runtime: ```powershell .\setup-env.ps1 -Gpu ``` 如需同时安装 CUDA 版 PyTorch,请根据目标机器的 CUDA 版本,从 [PyTorch 官方安装页](https://pytorch.org/get-started/locally/) 获取对应索引地址: ```powershell .\setup-env.ps1 -Gpu -TorchIndexUrl "https://download.pytorch.org/whl/cuXXX" ``` 安装脚本会确保 `onnxruntime` 和 `onnxruntime-gpu` 不会同时保留。GPU 不可用或初始化失败时,各算法会保持原有的 CPU 回退行为。 ## 2. 启动项目 统一使用根目录下的 `run.ps1`,不需要分别激活子项目环境。 ### 危险驾驶检测 ```powershell .\run.ps1 -Target dangerous test.jpg output ``` 传入的参数会继续交给 `dangerous-driving/debug_cli.py`。 ### 违停、逗留和人员入侵 ```powershell .\run.ps1 -Target illegal-park ``` 默认启动 `IllegalParkModel/src/app.py` 的 Streamlit 页面。 ### 区间测速 ```powershell .\run.ps1 -Target speed-control ``` 只运行核心自检、不启动桌面界面: ```powershell .\run.ps1 -Target speed-control --self-check ``` ### 车辆固体掉落检测 ```powershell .\run.ps1 -Target goods-spilled ``` 默认启动 `goods-spilled/app.py` 的 Streamlit 页面,端口由 Streamlit 分配;可通过附加参数指定端口: ```powershell .\run.ps1 -Target goods-spilled --server.port 8502 ``` ### 隔栏抛物检测 ```powershell .\run.ps1 -Target parabola --video parabola\sample_throw.mp4 --config parabola\sample_config.json --output parabola\outputs\demo ``` 运行结束后会在指定输出目录生成标注视频、事件记录和报告。 ### 统一多算法应用 ```powershell .\run.ps1 -Target unified ``` 或者环境、依赖安装好后直接项目目录下进入cmd运行 ```powershell python -m streamlit run unified_app\main.py ``` 默认启动 `unified_app/main.py` 的 Streamlit 页面,端口8501。 ## 3. 回归测试 在 `E:\model` 下执行: ```powershell # speed-control .\.venv\Scripts\python.exe -m unittest discover -s speed-control\tests -v .\run.ps1 -Target speed-control --self-check # unified_app .\.venv\Scripts\python.exe -m unittest discover -s unified_app\tests -v # goods-spilled .\.venv\Scripts\python.exe -m unittest discover -s goods-spilled\tests -v # parabola .\.venv\Scripts\python.exe -m unittest discover -s parabola\tests -v # IllegalParkModel .\.venv\Scripts\python.exe IllegalParkModel\test_tracker.py .\.venv\Scripts\python.exe IllegalParkModel\test_violations.py .\.venv\Scripts\python.exe IllegalParkModel\test_dedup.py # 公共环境检查 .\.venv\Scripts\python.exe verify-env.py onnxruntime ``` 危险驾驶真实图片冒烟测试: ```powershell .\run.ps1 -Target dangerous test.jpg output\shared-env-smoke ``` ## 4. 生成交付包 执行: ```powershell .\build-package.ps1 ``` 默认生成: ```text E:\model\dist\model-algorithms.zip ``` 打包脚本会递归排除: - `.venv` - `.git` - `__pycache__` - `*.pyc` - 根目录 `dist` 源码、配置文件和模型文件会保留。目标机器解压后先运行 `.\setup-env.ps1`。 如需指定文件名,输出仍需位于根目录的 `dist` 中: ```powershell .\build-package.ps1 -OutputPath .\dist\custom-name.zip ``` ## 5. VS Code 解释器 在 VS Code 中选择以下解释器: ```text E:\model\.venv\Scripts\python.exe ``` 可以通过命令面板执行 `Python: Select Interpreter`,然后选择或手动输入上述路径。不要再选择各子项目原有的 `.venv`。 ## 6. 主要公共文件 - `requirements.txt`:CPU 公共依赖 - `requirements-gpu.txt`:NVIDIA ONNX Runtime 覆盖依赖 - `setup-env.ps1`:创建、更新和验证共享环境 - `verify-env.py`:检查公共环境和冲突包 - `run.ps1`:统一启动入口 - `build-package.ps1`:生成不含虚拟环境的交付 ZIP