专栏算法工具链大佬们:j3上mobiletnetv1推理和部署的前处理为啥不一致

大佬们:j3上mobiletnetv1推理和部署的前处理为啥不一致

已解决
@-@2024-10-24
52
7
官方提供的分类samples中horizon_model_convert_sample的01_mobilenet进行模型推理的前处理和horizon_runtime_sample生成板子上运行的可执行文件的前处理不一致。

1. 芯片型号:j3

2. 天工开物开发包 OpenExplorer 版本:例如 J3_OE_1.16.4 等

3. 问题定位:模型转换、板端部署

4.在horizon_model_convert_sample文件03_build.sh中模型的推理前处理是transformers = [
        ShortSideResizeTransformer(short_size=256),
        CenterCropTransformer(crop_size=224),
        RGB2BGRTransformer(data_format="HWC"),
        ScaleTransformer(scale_value=255),
        BGR2NV12Transformer(data_format="HWC"),
        NV12ToYUV444Transformer((224, 224),
                                yuv444_output_layout=input_layout[1:]),
    ]但是在horizon_runtime_sample提供的样例,函数read_image_2_tensor_as_nv12中,只对图像进行resize到224*224,省去了 ShortSideResizeTransformer和CenterCropTransformer的步骤,虽然在j3上进行测试没什么问题,置信度后3位对的上,但是从理论上是不是应该加 ShortSideResizeTransformer和CenterCropTransformer,有没有大佬可以解答下,谢谢大佬们。
算法工具链
征程3
评论2
0/1000
  • Huanghui
    Lv.5

    前处理逻辑这个只是一个示意,主要用途是让你要考虑前处理,你理解就OK了,具体部署时怎么进行缩放、裁剪策略,你根据自己的业务场景搞

    2024-10-24
    0
    5
    • @-@回复Huanghui:

      好的,感谢大佬解答。主要我看这个样例是配套的,所以抱着严谨的态度,上来请教下。然后还有个问题,就如大佬所说,你们在onnxruntime推理的时候仿照板子上的操作对Yuv444减去了128,这个虽然是硬件上的属性,但是有什么原理吗?望大佬解答。

      2024-10-24
      0
    • Huanghui回复@-@:

      这个就是系统的规定,你可以认为0点对称吧

      2024-10-24
      0
    • @-@回复Huanghui:

      好的,谢谢大佬

      2024-10-24
      0
    • Huanghui回复@-@:

      对了,你反馈的这个问题确实需要引起注意哈:目前示例是给的原图是个W=H的图,示例模型刚好需要的也是W=H=224的图,所以直接resize后面没啥问题,但是一旦原图变成了W不等于W了,推理就会出现问题。

      你可以参考/open_explorer/ddk/samples/ai_benchmark/code/src/utils/image_utils.cc中的函数在你的工程中使用

      如此你的问题便可以完美处理!记得关贴!

      2024-10-24
      0
    • @-@回复Huanghui:

      好的,谢谢大佬

      2024-11-04
      0
  • Huanghui
    Lv.5

    这个是硬件环境造成的!板端有有硬件把nv12搞成Yuv444_128,但是HOST端没有,所以HOST端要自己手动模拟!

    2024-10-24
    0
    0