专栏算法工具链例程中的resnet50的input_type_rt修改为rgb后基于得到的bc模型推理结果错误

例程中的resnet50的input_type_rt修改为rgb后基于得到的bc模型推理结果错误

已解决
fataJtz2025-12-01
84
8

例程中的resnet50的input_type_rt修改为rgb后基于量化后得到的bc模型在python端无法得到正确分类结果

使用的版本为OE_3.2.0

你好我在学习模型量化部署的工程中,尝试将例程中关于resnet50部分的input_type_rt修改为rgb后无法得到想要的结果。

如下是process.py内的代码,我想咨询下归一化的操作是否不需要在对bc模型的输入数据中实现(文档中描述“ 如果您在yaml文件中配置了input_type_rt(与input_type_train不一致时)、mean_valuescale_value/std_value参数,模型将进行色彩转换和归一化处理, 您只需要按照input_type_rt的数据类型去做数据准备,且无需进行归一化处理 ”),其中校准时的npy已保存成(3,224,224)的形状。

如下是我量化时的日志文件,好像量化后模型默认的输入是(N,H,W,C)不知道是什么原因。

附件:
算法工具链
技术深度解析征程6
评论4
0/1000
  • Vincent
    Lv.4

    你好,文档中那个说明指的是在推理时候的数据处理,比如说你的推理输入数据类型是NV12,你的原始模型数据类型是rgb,那么yaml文件中的mean_value,scale_value会在推理时候将nv12转换成rgb,这个mean_value与scale_value与模型校准数据无关。

    2025-12-02
    1
    2
    • fataJtz回复Vincent:
      嗯嗯,所以大概意思是当我yaml中的推理输入类型设为NV12时,在板端推理的实际过程是会将NV12基于 mean_value,scale_value转换成rgb后输入模型是吗。下面分别是例程中的preprocess.py和yaml中的mean和scale变换部分代码,我之前理解是yaml中的这部分其实是跟preprocess是一样的同模型训练时变换相同。
      2025-12-02
      0
    • fataJtz回复Vincent:

      好像量化后模型的默认输入就是NHWC,即使我将yaml中的input_layout_rt设置为NCHW(根据社区中的这篇文章,但是我看文档里面好像已经没有这个 input_layout_rt关键字了)

      2025-12-02
      0
  • Huanghui
    Lv.5

    另外,需要说明一下, OE_3.2.0 是之前版本的工具链了,为了给您带来更好的体验 以及 支持便利性,建议您升级工具链到新的OE3.5.0版本,您可以通过:https://oe.horizon.auto下载新的版本

    2025-12-02
    0
    0
  • Huanghui
    Lv.5

    客户您好,鉴于长时间未收到你的答复,我们暂将该问题做关闭处理,如您仍有相同问题,请在新的帖子中重新发起提问,祝您工作愉快!

    2025-12-29
    0
    0
  • Huanghui
    Lv.5

    你好,你的这个问题时这样的:

    1. 修改为RGB后,推理数据笃诚RGB后,需要进行-128处理,然后再送入模型进行推理
    2. 至于变成了NHWC,这个时插入预处理节点导致的,是正常的


    2025-12-02
    0
    2
    • fataJtz回复Huanghui:

      “ 如果您在yaml文件中配置了input_type_rt(与input_type_train不一致时)、mean_value和scale_value/std_value参数,模型将进行色彩转换和归一化处理, 您只需要按照input_type_rt的数据类型去做数据准备,且无需进行归一化处理 ” 你好关于文档中的这句描述,我想询问下如果我的模型量化时设置input_type_rt为nv12,假如我在板端直接输入nv12类型的数据是否就不需要再次进行归一化了。

      2025-12-02
      0
    • Huanghui回复fataJtz:

      1.不需要再次进行归一化, 模型内部插入的预处理节点会帮你完成NV12到RGB的转换并进行RGB数据的归一化处理。

      2.input_type_rt为nv12时编译出来的hbm会对应Y输入和uv输入两个输入,你的 nv12类型的数据也需要拆分成Y输入的tensor和uv输入的tensor两个输入提供,如果nv12是PYM等其他图像链路上的处理结果,你可以直接使用其中v_ddr和p_ddr对应赋值到两个输入tensor中实现高性能zero copy。

      2025-12-03
      0