# with-me-right **Repository Path**: openkylin/with-me-right ## Basic Information - **Project Name**: with-me-right - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-05-08 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 基于 openKylin 开源操作系统和 RISC-V 硬件平台的景区人流量监测预警系统 ### 项目架构 - `Libraries` 目录:Python 3.11 源码、 OpenBLAS 源码与项目 Python 模块依赖库 - `Src` 目录:项目 Python 源码和 Android App 源码以及对 PyTorch 的 ATen 计算模块的重载代码(使用 RISC-V Vector(RVV)重载) ### 依赖安装引导 1. 使用终端进入此项目的 `Libraries/Source` 目录。 2. 安装 Python 3.11.8,运行以下命令 ```sh $ unzip Python-3.11.8.zip $ cd Python-3.11.8.zip $ sudo make install $ cd .. ``` 3. 安装 OepnBLAS,运行以下命令 ```sh $ unzip OpenBLAS-0.3.26.zip $ cd OpenBLAS-0.3.26 $ sudo make PREFIX=/usr/local/OpenBLAS install $ sudo vim /etc/profile # 在最后一行添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/OpenBLAS/lib/ $ source /etc/profile $ cd .. ``` 4. 安装必要的环境库,运行以下命令 ```sh $ sudo apt update $ sudo apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \ libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \ libharfbuzz-dev libfribidi-dev libxcb1-dev libsqlite3-dev ``` 5. 安装 SHL 库,运行以下命令 ```sh $ tar xf shl-v2.4-beta.1-c920.tar.gz $ sudo cp c920/lib/* /usr/lib/riscv64-linux-gnu/ -rf ``` 1. 使用终端进入此项目的 `Libraries/Wheels` 目录。 7. 安装预编译库以及系统所需库,运行以下命令 ```sh $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyYAML-6.0.1-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple psutil-5.9.8-cp311-abi3-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple patchelf-0.17.2.1-py2.py3-none-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple kiwisolver-1.4.5-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple contourpy-1.2.0-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy-1.26.4-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow-10.2.0-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib-3.8.3-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv_python-4.5.4+4cd224d-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy-1.12.0-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch-2.1.0a0+gitunknown-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torchvision-0.16.2-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas-2.2.0-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple onnxruntime-1.14.1-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple ffmpegcv-0.3.13a0-py3-none-any.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pycocotools-2.0.7-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple grpcio-1.62.1-cp311-cp311-linux_riscv64.whl $ sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask loguru tabulate ultralytics ``` 8. 复制 Python 所需的动态链接库,运行以下命令 ```sh $ ver=python3.11 $ sudo cp /usr/lib/$ver/lib-dynload/_bz2.cpython-311-riscv64-linux-gnu.so /usr/local/lib/python3.11/lib-dynload $ sudo cp /usr/lib/$ver/lib-dynload/_lzma.cpython-311-riscv64-linux-gnu.so /usr/local/lib/python3.11/lib-dynload $ sudo cp /usr/lib/$ver/lib-dynload/_tkinter.cpython-311-riscv64-linux-gnu.so /usr/local/lib/python3.11/lib-dynload $ sudo cp /usr/lib/$ver/lib-dynload/_sqlite3.cpython-311-riscv64-linux-gnu.so /usr/local/lib/python3.11/lib-dynload ``` 8. 安装 HHB-onnxuruntime ```sh $ wget https://github.com/zhangwm-pt/onnxruntime/releases/download/riscv_whl/onnxruntime-1.14.1-cp311-cp311-linux_riscv64.whl $ sudo pip install onnxruntime-1.14.1-cp311-cp311-linux_riscv64.whl ``` ### 项目启动引导 1. 使用终端进入此项目的 `Src/ScenicSpotPopulationDetector` 目录。 2. 获取主机的 IP 地址(用于后续连接手机 App)。运行以下命令 ```sh $ ifconfig ``` 查看并记住以太网 IPv4 地址。 #### 桌面(图形)环境下运行项目 1. 运行以下命令 ```sh $ sudo python3 ./detector.py --gui # 在桌面环境下运行 ``` 2. 待图形化界面显示后,点击 [Select a Video] 按钮。 3. 选择 `resources/test.mp4` 测试景区人流量视频。 4. 稍等片刻,系统即可识别视频中所有的游客面部,并统计人流量数据。 #### 命令行环境下运行项目 1. 运行以下命令 ```sh $ sudo python3 ./detector.py --cli --video resources/test.mp4 # 在纯命令行环境下运行 ``` 2. 稍等片刻,系统即可识别视频中所有的游客面部,并统计人流量数据。 3. 通过以下命令可以查看更多命令参数的使用说明 ```sh $ sudo python3 ./detector.py --help ``` #### 连接移动应用实现人流量趋势可视化统计 在局域网 Android 设备上安装 `Src/PopulationCheck/release/PopulationCheck.apk` 并填写主机的以太网 IPv4 地址和端口号(默认为 8888)进行连接。 #### 使用 NPU 方式进行预测 项目默认使用 CPU(包含 RVV 特性)进行预测,可以通过在运行参数前增加 `--npu` 参数以实现 NPU 方式预测。 例如: ```sh $ sudo python3 ./detector.py --npu --gui # 在桌面环境下运行 $ sudo python3 ./detector.py --npu --cli --video resources/test.mp4 # 在纯命令行环境下运行 ``` **注意:**若要使用 NPU 进行预测,必须命令前使用 `sudo` 以授予超级用户权限。且 `--npu` 参数必须加在 `--gui` 或 `--cli` 参数之前。 ##### 关于 NPU 的运行缓慢问题 我们通过筛查,发现运行缓慢问题主要是由 `csinn_session_setup` 函数导致。 我们在 `hhb_out/model.c` 文件中加入了时间测试代码: ![NPU 测试代码](Images/NPU_test_code.png) 运行结果如下,此函数运行时间长达 40 秒左右,暂未解决方案。 ![NPU 测试结果](Images/NPU_test_result.png) #### 启用 ONNX 模型进行预测 我们的项目支持加载 ONNX 模型来代替默认的 pt 模型,ONNX 模型是一种各个神经网络框架通用的模型。请参照如下步骤启用 ONNX 模型进行预测任务。 1. 将 `alt/core_with_yolox.py` 文件移动到 `ScenicSpotPopulationDetector` 目录下。 2. 修改 `core.py` 文件的 15 ~ 16 行为如下代码: ```python import core_with_yolox as core_ # import core_with_ultralytics as core_ ``` 3. 使用【项目启动引导】介绍的方式启动项目即可。