基于 reComputer RK3576 的实时引体向上计数器
一个基于 YOLO11 的姿态检测应用,利用 RK3576 NPU 检测人体、绘制骨架与人体框, 并对视频、摄像头或 RTSP 画面中的引体向上动作进行实时计数。
基于 reComputer RK3576 的实时引体向上计数器
1. 方案概述
该项目把 reComputer RK3576 变成一个低延迟、数据本地处理的健身计数器。YOLO11n-Pose 模型运行在板载 NPU 上,应用会在画面中绘制人体框、17 个身体关键点、姿态骨架、当前动作阶段和已完成的引体向上次数。
项目源码与部署文件:https://github.com/Seeed-Projects/reComputer-AI-Lab-Project/tree/main/rk_project/pullup_counter
项目功能
- 通过 RKNNLite 在 RK3576 NPU 上运行 YOLO11n-Pose。
- 检测主要人物并绘制人体框与 COCO-17 姿态骨架。
- 使用带迟滞阈值的状态机统计完整引体向上次数。
- 支持内置视频、USB 摄像头、RTSP 流以及其他本地视频。
- 提供 Web 页面,显示次数、动作阶段、FPS、NPU 延迟,并支持暂停和清零。
- 使用项目自带的 AArch64 wheel 安装到独立 Python 虚拟环境。
软硬件要求
- 运行 64 位 Linux 的 reComputer RK3576
- Python 3.11 与
venv - 开发板系统镜像自带的 RKNN Runtime 和 RKNPU 驱动
- 固定输入尺寸为
640 × 640的 YOLO11n-Pose RKNN 模型 - 与开发板处于同一网络的电脑或手机
当前项目使用 FP16 RKNN 模型。
2. RK3576 部署指南
部署到板子
克隆仓库并安装环境(一次性操作):
git clone https://github.com/Seeed-Projects/reComputer-AI-Lab-Project.git
cd reComputer-AI-Lab-Project/rk_project/pullup_counter
bash install.sh运行
启动 Web 服务:
bash run_web.sh安装脚本会创建 .venv,使用项目自带的 AArch64 wheel 离线安装依赖,并执行环境检查和单帧 NPU 推理测试。
启动成功后,在同一局域网中的浏览器访问:
http://<RK3576_IP>:8000例如:
http://192.168.3.120:8000切换输入源
默认循环播放项目自带的演示视频:
bash run_web.sh使用 USB 摄像头:
bash run_web.sh --source 0使用 RTSP 视频流:
bash run_web.sh --source 'rtsp://user:password@camera/stream'使用其他视频或端口:
bash run_web.sh --source /path/to/video.mp4 --port 8080通常只应让一个进程占用 NPU 模型。如果 8000 端口已被占用,请停止旧的 Web 进程或切换端口。
命令行处理视频
不启动 Web 页面,直接生成带标注的视频和 CSV 计数记录:
bash run_demo.sh默认输出:
video/output/test_counted.mp4
video/output/test_counted.csv3. 计数逻辑与运行建议
程序选择置信度最高的人体目标。手腕关键点用于估算单杠高度,鼻子和肩部关键点用于描述身体的垂直运动,并根据人体尺寸对距离进行归一化,以适应不同拍摄距离。
计数器使用上下两个独立阈值构成迟滞状态机,避免人体在边界附近停留时重复计数。只有稳定到达顶部、再稳定返回底部后才增加一次计数。短时间关键点丢失不会立即中断动作;如果长时间未检测到人体,只重置动作阶段,不会清空已完成次数。
为了获得更稳定的结果,请让上半身完整出现在画面中,使用固定机位,避免强逆光,并尽量采用接近正面的拍摄角度。
Web 接口
页面会显示带标注的视频流和实时统计信息,并提供:
GET /healthz:服务健康检查GET /api/status:当前次数、动作阶段、FPS 和推理状态
该服务默认用于可信局域网,不包含身份验证和 TLS,请勿直接暴露到公网。
部署建议
- 项目复制到开发板后,先运行
sha256sum -c MANIFEST.sha256,确认模型、依赖 wheel 和演示文件完整。 - 优先使用开发板系统镜像自带的 RKNN Runtime 与 RKNPU 驱动;只有确认与模型转换所用 RKNN Toolkit 版本兼容后再进行替换。
- 使用安装脚本创建的
.venv运行项目,避免把依赖直接安装到系统 Python 环境。 - 同一个 NPU 模型通常只运行一个推理进程。如果
8000端口已被占用,应停止旧进程或更换端口。 - 固定摄像头位置,让单杠和完整上半身保持可见,并尽量避免强逆光。
- Web 页面建议只在可信局域网中使用。需要长期运行时,可通过
systemd管理进程;需要远程访问时,应在反向代理中增加身份验证和 TLS。
已知限制
- 当前版本只跟踪一个主要人物。
- 面部、肩膀或手腕被严重遮挡时,动作阶段切换可能延迟。
- 镜头大幅移动会降低计数稳定性。
- Web 服务面向局域网演示,不是公网生产服务。