专栏算法工具链yolov5s模型PTQ量化后original_float模型精度很差

yolov5s模型PTQ量化后original_float模型精度很差

泡沫侠客2023-08-29
39
8
1.芯片型号:J5
2.天工开物开发包OpenExplorer版本:J5_OE_1.1.49
3.问题定位:模型转换
4.问题具体描述:使用自己数据集训练的yolov5s模型,单张图片推理结果显示一个目标会出现很多目标框(在pytorch环境下,使用pt模型的精度是非常优秀的),而且目标框的位置精度很差,检测效果如下:

但使用公开的coco数据集训练的yolov5s模型(onnx模型导出方式、两模型的输入大小均为640*640、量化方式等所有操作均相同),单张图片推理的效果相对比较优秀(pt模型和量化过程中产生的original_float模型效果基本一致),效果如下:

求各位大神解惑

算法工具链
评论2
0/1000
  • 颜值即正义
    Lv.2

    你好,pt模型、由pt模型导出的onnx模型、工具转换生成的original_float模型和optimized_float模型,这四个模型的可视化结果应一致,且都是量化前的浮点模型,不是量化精度的问题,这里建议您重新检查从pt模型导出onnx模型开始的pipeline,检查前后处理代码并验证每个阶段的模型可视化是否一致

    2023-08-30
    0
    6
    • 泡沫侠客回复颜值即正义:
      自己训练的由pt模型导出的onnx模型和工具转换生成的original_float模型是一样的,而且和coco数据集的这两个模型结构上也是一致的,无论是自己训练的模型还是coco的模型,前后处理代码都是一致的,不清楚推理结果为何会出现如此大的差别?
      2023-08-30
      0
    • 颜值即正义回复泡沫侠客:

      你好,coco的公版模型是pre-trained模型,鲁棒性可能更优。如果自己训练的pt模型推理结果正确,onnx和original_float推理结果有误,那您需要检查一下导出onnx模型代码的正确,当然也不排除模型训练过拟合而导致的模型鲁棒性变差;如果pt模型推理结果有误,那就是模型训练未收敛。您可以根据这样的思路去排查一下,因为目前尚未引入量化误差,无法从工具角度给出原因

      2023-08-30
      0
    • 泡沫侠客回复颜值即正义:

      弱弱的问一下,如果模型因为过拟合而鲁棒性变差的话,导出的onnx模型(假设导出模型的代码没问题)会和pt模型结果不一样吗?

      2023-08-31
      0
    • 颜值即正义回复泡沫侠客:

      你好,鲁棒性差的模型导出onnx,接上前后处理后有可能出现精度下降的情况。可以尝试不接后处理,直接对比pt和onnx模型推理输出数值结果的一致性

      2023-08-31
      0
    • 泡沫侠客回复颜值即正义:

      因为模型部署到J5上,模型输出的地方需要修改,如果不做任何修改,直接从pt模型导出一个onnx模型,并做推理精度是可以,现在到OE包里,输入和模型中间部分均没修稿,只是输出做了修改,效果就不行,莫非是OE包自带的后处理代码的问题???

      2023-08-31
      0
    • 颜值即正义回复泡沫侠客:

      你好,如果输出做了修改,对应的后处理代码也要对应修改,可以参考但不建议直接复用OE包后处理代码

      2023-09-01
      0
  • 颜值即正义
    Lv.2
    您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!
    问卷链接:地平线算法工具链使用满意度反馈
    2023-08-30
    1
    0