一般帧率多少才正常
RDK X5 上 YOLOv8-seg 正常帧率参考
官方参考帧率(INT8 量化模型)
| 模型 | 实现方式 | 正常帧率 | 来源 |
|---|---|---|---|
| YOLOv8n-seg | C++ 官方例程 | 45-55 FPS | rdk_model_zoo |
| YOLOv8s-seg | C++ 官方例程 | 30-40 FPS | rdk_model_zoo |
| YOLOv8n-seg | Python 优化后 | 20-25 FPS | 社区案例 |
| YOLOv8s-seg | Python 优化后 | 15-20 FPS | 社区案例 |
你的 15 FPS 是否正常?
| 情况 | 帧率 | 是否正常 |
|---|---|---|
| Python + 未优化 | 10-15 FPS | |
| Python + 已优化 | 20-25 FPS | |
| C++ 官方例程 | 45-55 FPS | |
| 你的当前状态 | 15 FPS |
15 FPS 的可能原因
| 原因 | 排查方法 | 解决 |
|---|---|---|
| 模型输出是 int32 | horizon_nn 检查 dtype |
重新量化(保留 Dequantize) |
| 后处理未优化 | 添加耗时统计 | 应用 5 项 Python 优化 |
| 摄像头采集慢 | 耗时统计中看"采集"项 | 降低分辨率或换摄像头 |
| JPEG 编码太慢 | 耗时统计中看"编码"项 | 降低质量或跳帧推流 |
| 系统负载高 | top 命令查看 CPU |
关闭其他进程 |
立即排查清单
# 1. 确认模型输出类型(最关键!)
python3 -c "
import horizon_nn as nn
model = nn.HBModel('/home/sunrise/yolov5_best_quant(kl.bin')
for i, out in enumerate(model.outputs):
print(f'output_{i}: shape={out.shape}, dtype={out.dtype}')
"
# 2. 添加耗时统计(定位瓶颈)
# 用我之前给的 cam_thread 修改版
# 3. 检查系统负载
top -d 1
# 4. 测试官方 C++ 例程(对比硬件极限)
cd ~/rdk_model_zoo/demos/Seg/YOLOv8-Seg/build
./yolov8_seg_demo ../model/yolov5_best_quant\(kl.bin ../model/labels.txt
预期结果对照
| 模块 | 正常耗时 | 你的耗时 | 状态 |
|---|---|---|---|
| BPU 推理 | 15-25ms | ? | 待确认 |
| 后处理 | 15-20ms | ? | 待确认 |
| JPEG 编码 | 5-10ms | ? | 待确认 |
| 总计 | 40-55ms (18-25 FPS) | ~67ms (15 FPS) |
先把模型输出类型和耗时统计贴出来,我帮你精确定位哪一步拖慢了帧率!
如果是 float32 输出但只有 15 FPS,说明后处理或编码还有优化空间;如果是 int32 输出,必须重新量化!