专栏算法工具链使用RGB/BGR进行QAT训练后,插入yuv2rgb/bgr 时的一些疑惑

使用RGB/BGR进行QAT训练后,插入yuv2rgb/bgr 时的一些疑惑

已解决
白菜飘落2023-04-13
57
7
1.芯片型号:J5
2.天工开物开发包OpenExplorer版本:J5_OE_1.1.29
3.问题定位:QAT训练
4.问题具体描述:QAT训练时,使用RGB/BGR而非YUV数据来训练。根据PTQ&QAT方案板端验证注意事项中的2.2.1章可以手动添加预处理OP。其中有几个问题比较疑惑:
  1. 第四步“推理一次quantized模型”的目的是什么?只是验证精度吗?

  2. 要得到插入这个op的hbm,只需要compile_perf.py调用到了插入了这个OP的模型forward代码就行了是吗?

算法工具链
征程5
评论2
0/1000
  • 颜值即正义
    Lv.2
    您好,推理一次quantized模型的目的是为了跑一遍模型,让预处理op被正确插入,并且也是建议插入后验证一下模型推理结果是否正确。
    想要确认节点是否被插入,可以使用可视化工具export_quantized_onnx查看:4.2.4.5. Bug 检查 — Material for Sphinx (hobot.cc)
    2023-04-13
    0
    5
    • 白菜飘落回复颜值即正义:

      您好,那我要编译出hbm,是否只要编译这个带着预处理op的模型forward即可?

      2023-04-14
      0
    • 颜值即正义回复白菜飘落:

      您好,是的

      2023-04-14
      0
    • 白菜飘落回复颜值即正义:

      您好,我这里还有几个问题。

      1. 官方的推荐YUV444训练的均值和方差均为128,即将像素值归一化至-1,1。我理解这时编译出的hbm应该是带有预处理的OP,这个OP会将输入的像素值归一化至-1,1?

      2. 那假设我不想使用-1,1的归一化方式,比如归一化到0,1。那模型配置的那个PY需要怎么配置?因为compile_config中也没有这样的配置项目,是说已经写死了-1,1?还是说我只要把data_loader中的"Normalize"配置改掉,编译时自然就会知道当前模型的归一化方式?

      2023-04-14
      0
    • 颜值即正义回复白菜飘落:
      您好,plugin原生只支持 yuv444 & 均值和方差均为128,编译时通过compile_model( ··· , input_source="pyramid",···)来指定板端数据来源为PYM。
      如果模型使用的是rgb或者bgr训练,则使用centered_yuv2rgb / centered_yuv2bgr 算子,将归一化参数配置到这个算子里,训练的时候使用plugin提供的quantstub,并且不要指定scale(即动态统计);编译阶段把统计出来的scale配置到算子的qscale参数里,并且把quantstub的scale设置成1,就可以了。
      如果模型使用yuv444训练,但是均值方差不为128,目前暂不支持。
      2023-04-14
      0
    • 白菜飘落回复颜值即正义:

      好的,感谢答疑解惑。

      2023-04-17
      0
  • 颜值即正义
    Lv.2
    2023-04-24
    0
    0