模型转换输入格式问题

我在使用工具链做模型转换和调用bpu做推理中有几个问题。

1. 在转换配置文件中定义了输入为nv12格式

input_type_rt: ‘nv12’-
input_type_train: ‘rgbp’

但是使用hb_mapper转换模型时,log显示输入依然是yuv444格式?

2020-09-17 13:48:07,415 INFO Parsing the input parameter:{‘data’: {‘input_shape’: [1, 3, 416, 416], ‘expected_input_type’: ‘YUV444_128’, ‘original_input_type’: ‘RGB’, ‘scales’: array([0.00392157], dtype=float32)}}

2. bpu_predict_extension.h中BPU_DATA_TYPE_E中定义的BPU数据类型中的BPU_TYPE_IMG_YUV_NV12和BPU_TYPE_IMG_NV12_SEPARATE有什么区别?

问题1:-
这个主要是地平线X3芯片的内部数据通路决定的,具体暂不展开详细描述,可大致理解为:-
nv12 → pyramid → yuv444_128 → 进模型

该通路的内在逻辑对用户其实不感知,用户只需要根据自己的需求配置 yaml 即可。

问题2:

1)BPU_TYPE_IMG_YUV_NV12:

内存是连续的,即 y 和 uv 数据会放到一块连续内存,然后通过 offset 去寻找 y 和 uv 数据;

2)BPU_TYPE_IMG_NV12_SEPARATE:-
内存是分开的,即 y 和 uv 分别存放在一块内存中,这个目前主要用于我们地平线自己的 cemera demo。

关于问题1,所以模型转换编译以后已经包含了nv12->实际输入格式的转换?也就是说我在之后使用模型的时候,输入的数据可以直接是nv12格式了吧?

可以的。 rt指定的nv12, 直接放nv12数据就行