YOLO26N 姿态估计 RKNN 部署:RK3588 NPU 实战

发布时间:2026/6/30 22:25:27

YOLO26N 姿态估计 RKNN 部署:RK3588 NPU 实战 YOLO26N 姿态估计 RKNN 部署RK3588 NPU 实战1. RKNN 转换#!/usr/bin/env python3onnx_to_rknn_pose.pyfromrknn.apiimportRKNNdefconvert(onnx_path,rknn_path,calib_list):rknnRKNN(verboseTrue)rknn.config(mean_values[[0,0,0]],std_values[[255,255,255]],target_platformrk3588,quantized_dtypeasymmetric_quantized-8,)retrknn.load_onnx(modelonnx_path)assertret0,加载 ONNX 失败retrknn.build(do_quantizationTrue,datasetcalib_list,)assertret0,构建失败retrknn.export_rknn(rknn_path)assertret0,导出失败print(f✅ RKNN 已导出:{rknn_path})rknn.release()if__name____main__:convert(yolo26n-pose.onnx,yolo26n-pose.rknn,calibration_list.txt)2. RKNN 推理#!/usr/bin/env python3rknn_pose.py - RK3588 姿态估计fromrknnlite.apiimportRKNNLiteimportcv2importnumpyasnp SKELETON[(0,1),(0,2),(1,3),(2,4),(5,6),(5,7),(6,8),(7,9),(8,10),(11,12),(11,13),(12,14),(13,15),(14,16),(5,11),(6,12),]classRKNNPoseDetector:def__init__(self,rknn_path,conf_thresh0.3):self.rknnRKNNLite()self.rknn.load_rknn(rknn_path)self.rknn.init_runtime(core_maskRKNNLite.NPU_CORE_0_1_2)self.conf_threshconf_threshdefdetect(self,image):imgcv2.resize(image,(640,640))imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)outputsself.rknn.inference(inputs[img])predictionsoutputs[0][0].T# [8400, 56]scorespredictions[:,4]maskscoresself.conf_thresh boxespredictions[mask,:4]scoresscores[mask]kptspredictions[mask,6:].reshape(-1,17,3)returnboxes,scores,kptsdefdraw(self,image,boxes,scores,kpts):h,wimage.shape[:2]sx,syw/640,h/640foriinrange(len(boxes)):for(a,b)inSKELETON:ifkpts[i][a][2]0.3andkpts[i][b][2]0.3:pt1(int(kpts[i][a][0]*sx),int(kpts[i][a][1]*sy))pt2(int(kpts[i][b][0]*sx),int(kpts[i][b][1]*sy))cv2.line(image,pt1,pt2,(0,255,0),2)for(x,y,vis)inkpts[i]:ifvis0.3:cv2.circle(image,(int(x*sx),int(y*sy)),3,(0,0,255),-1)returnimageif__name____main__:modelRKNNPoseDetector(yolo26n-pose.rknn)imagecv2.imread(test.jpg)boxes,scores,kptsmodel.detect(image)resultmodel.draw(image,boxes,scores,kpts)cv2.imwrite(result.jpg,result)print(f检测到{len(boxes)}个人)3. RK3588 性能RK3588 NPU 性能YOLO26N-Pose, 640x640, INT8 ┌──────────────────┬──────────┐ │ 指标 │ 数值 │ ├──────────────────┼──────────┤ │ 推理延迟 │ 12ms │ │ FPS │ 83 │ │ 功耗 │ 5W │ │ NPU 核心 │ 3 核并行 │ │ 模型大小 │ 3.2MB │ └──────────────────┴──────────┘4. RKNN 优化技巧RKNN 优化清单 ├── 量化 │ ├── 使用 200 张校准图片 │ ├── 校准图片覆盖全场景 │ └── 验证量化精度损失 lt;2 mAP ├── NPU 核心 │ ├── 使用 3 核并行CORE_0_1_2 │ ├── 避免单核瓶颈 │ └── 监控 NPU 利用率 ├── 内存 │ ├── 减少 CPU-NPU 数据拷贝 │ ├── 使用零拷贝接口 │ └── 预分配输出缓冲区 └── 流水线 ├── 采集/推理/后处理并行 ├── 使用双缓冲 └── 减少空闲时间总结平台延迟FPS功耗适用场景RK3588 NPU12ms835W低功耗边缘Jetson Orin NX5.2ms19215W高性能边缘RTX 40901.5ms667450W服务器

相关新闻