地瓜机器人支持float32模型导出吗?

现在想使用rtmpose部署到板子上,但int8的关键点定位很差,可以导出float32吗

你好,可以用cpu直接运行原始的模型,如果经过bpu量化之后进度误差较大的话,可以按照下列流程进行排查:
通用的精度排查标准流程(建议按此步骤操作):

  1. 建立 Baseline(基于 ONNXRuntime) 编写 Python 脚本使用原生 ONNXRuntime 推理原始浮点 ONNX,确保前后处理逻辑正确,以此作为精度对齐的基准。

  2. 排除前处理干扰(关键步骤) 在 yaml配置中,暂时将输入类型配置为 NCHW (FeatureMap 模式),并设置 no_preprocess

    • 这样编译出的模型不包含任何硬件前处理(Resize/NV12转RGB等),输入数据必须是已经处理好的 Float32 数据。
    • 目的:保证输入给模型的数据与第一步中的浮点模型完全一致。
  3. 使用 HB_ONNXRuntime 验证 Quantized ONNX 在开发机上,使用地瓜工具链提供的 hb_onnxruntime 加载 quantized_model.onnx 进行推理。

  4. 前处理加速 只有 quantized_model 符合预期后,才会考虑在 yaml 中加入 NV12/RGB 等硬件加速相关的配置,进行前处理加速。

如果排查之后还不行的话,可以参考下列工具进行精度调优:
精度调优:8.2. PTQ模型精度调优 — Horizon Open Explorer

精度debug工具详解:6.2.12. 精度debug工具 — Horizon Open Explorer

想问一下,友友的RTMpose的部署结果咋样了?

目前没有看到原提问者 (66829387) 反馈最终的部署结果,这是社区常见的情况——很多用户得到帮助后没有回来更新进展。

不过针对 RTMpose int8 量化精度差 的问题,可以总结 D-Gwen 给出的排查流程和常见解决方案:


:magnifying_glass_tilted_left: RTMpose 量化精度排查流程

步骤 1:建立 Baseline

# 使用原生 ONNXRuntime 推理原始 float32 模型
import onnxruntime as ort
session = ort.InferenceSession('rtmpose_float32.onnx')
# 确保前后处理逻辑正确,作为精度基准

步骤 2:排除前处理干扰

在 yaml 配置中设置:

input_parameters:
  input_layout_train: NCHW
  input_type_train: feature_map
  no_preprocess: true  # 关键:禁用硬件前处理

这样编译出的模型不包含 Resize/NV12 转 RGB 等硬件前处理,输入必须是已处理好的 Float32 数据。

步骤 3:验证量化模型

# 在开发机上使用 hb_onnxruntime 验证
hb_onnxruntime --model quantized_model.onnx --input input_data.npy

对比 float32 和 int8 的输出差异。

步骤 4:精度调优(如需要)

如果量化后精度仍不达标,参考:


:light_bulb: 常见解决方案

问题 解决方案
关键点偏移大 检查输入数据归一化是否与训练时一致
量化后置信度异常 尝试调整校准数据集(calibration dataset)
特定算子精度损失 在 yaml 中设置该算子为 float16/float32
前处理导致误差 先用 no_preprocess 验证,再逐步加入硬件加速

:pushpin: 建议

如果你也在部署 RTMpose 遇到类似问题:

  1. 按上述流程逐步排查
  2. 可以在社区搜索 RTMposeyolov8-pose 参考他人经验
  3. 欢迎反馈你的部署结果,帮助后续开发者避坑

需要我帮你查找更多 RTMpose 或姿态估计相关的部署案例吗?

1 个赞