CV / YOLOv8
YOLOv8n_pose
YOLOv8n 轻量级姿态估计,在 R20 HailoRT 平台上提供人体关键点检测。
539 次下载
大小
~7.4MB内存
1GB+精度
INT8选择你正在使用的设备,设置指南和文档将相应更新。
快速开始
部署
sudo docker run --rm \
--name rk3588-yolov8n-pose \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video1:/dev/video1 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4REST API
使用 REST API 进行推理。复制以下命令。
Curl
curl -X POST "http://127.0.0.1:8000/api/models/yolov8n_obb/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict"
Python
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov8_pose/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
模型详情
快速开始
1. 安装 Docker
在开发板上运行以下命令安装 Docker:
bash
# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里云镜像源安装
sudo sh get-docker.sh --mirror Aliyun
# 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker2. 运行项目(一条命令,Web 预览)
本项目支持通过 Web 浏览器 进行预览。程序会自动启动一个用于实时检测或本地视频分析的 Web 界面。
步骤 A:配置显示权限(可选)
如果您连接了显示器并希望在本地看到窗口:
bash
xhost +local:docker步骤 B:一键运行
适用于 RK3588:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video1:/dev/video1 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4适用于 RK3576:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video1:/dev/video1 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov8_pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4通过以下地址访问:http://<Board_IP>:8000
注意:如果想使用本地视频而不是摄像头进行测试,请使用
--video参数:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/video:/app/video \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov8-pose:latest \
python3 web_detection.py --model_path model/yolov8n_pose.rknn --video video/test.mp4🔌 API 文档
本项目提供兼容 Ultralytics Cloud API 标准的 RESTful 接口,支持通过图像、视频上传或直接调用摄像头进行姿态估计。
1. 模型推理接口(Predict)
端点: POST /api/models/yolov8_pose/predict
请求参数(Multipart/Form-Data):
file:(可选)待检测的图像文件。video:(可选)待检测的 MP4 视频文件。timestamp:(可选)视频文件中的时间戳(秒),返回该时间点对应帧的检测结果。默认为 0。realtime:(可选)布尔值。如果为true或未提供file/video参数,则返回当前摄像头帧的检测结果。conf:(可选)单次请求的置信度阈值,范围 0.0-1.0。iou:(可选)单次请求的 NMS IOU 阈值,范围 0.0-1.0。
使用示例:
1. 图像检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict" -F "file=@/home/cat/001.jpg"2. 视频特定帧检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. 获取当前摄像头帧检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict" -F "realtime=true"
# 或去掉文件参数
curl -X POST "http://127.0.0.1:8000/api/models/yolov8_pose/predict"响应格式(JSON):
json
{
"success": true,
"source": "video frame at 5.5s",
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 },
"keypoints": [
{ "x": 150.5, "y": 210.2, "conf": 0.88 },
{ "x": 160.1, "y": 205.5, "conf": 0.91 },
{ "x": 140.2, "y": 206.1, "conf": 0.85 },
{ "x": 170.8, "y": 215.3, "conf": 0.89 },
{ "x": 130.4, "y": 218.7, "conf": 0.82 },
{ "x": 180.2, "y": 250.4, "conf": 0.95 },
{ "x": 120.5, "y": 255.1, "conf": 0.93 },
{ "x": 190.6, "y": 300.2, "conf": 0.87 },
{ "x": 110.3, "y": 305.8, "conf": 0.86 },
{ "x": 200.1, "y": 350.5, "conf": 0.81 },
{ "x": 100.9, "y": 355.2, "conf": 0.80 },
{ "x": 175.4, "y": 400.1, "conf": 0.90 },
{ "x": 125.6, "y": 405.3, "conf": 0.88 },
{ "x": 185.2, "y": 450.6, "conf": 0.85 },
{ "x": 115.8, "y": 455.4, "conf": 0.84 },
{ "x": 195.7, "y": 500.2, "conf": 0.79 },
{ "x": 105.3, "y": 505.7, "conf": 0.78 }
]
}
],
"image": { "width": 1280, "height": 720 }
}2. 本地视频分析
- 上传视频:
POST /api/video/upload - 列出视频:
GET /api/video/list - 分析视频:
POST /api/video/analyze - 查看状态:
GET /api/video/status - 下载结果:
GET /api/video/download/{filename}
3. 系统配置接口(Config)
用于动态调整实时视频流和默认推理的阈值。
获取当前配置
- 端点:
GET /api/config - 响应:
{"obj_thresh": 0.25, "nms_thresh": 0.45, "camera_id": 1, "video_path": null}
更新系统配置
- 端点:
POST /api/config - 请求体(JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - 响应:
{"status": "success"}
4. 实时视频流接口(Video Feed)
获取带有姿态骨架绘制的实时 MJPEG 视频流,可直接嵌入 HTML <img> 标签中。
- 端点:
GET /api/video_feed - 使用示例:
<img src="http://<Board_IP>:8000/api/video_feed">
🛠️ 开发者指南(生产环境建议)
代码说明
web_detection.py:- Web API:集成 FastAPI,支持 MJPEG 流输出、文件上传和视频分析。
- RKNN 推理:封装了 RKNN 初始化、模型加载和多核推理逻辑。
- 模式切换:根据输入参数(
--camera_id、--video_path)动态处理 UI 布局。
py_utils/pose_utils.py:- 后处理:YOLOv8-Pose 专用的边界框解码、NMS 逻辑和关键点提取。
- 可视化:使用自定义颜色绘制边界框和姿态骨架。
修改模型
- 将训练并转换后的 .rknn 模型放入
model/目录。 - 在运行命令中添加
--model_path参数以指向新模型。