Toybrick

标题: rknn toolkit output data format [打印本页]

作者: tigertang    时间: 2019-11-14 11:27
标题: rknn toolkit output data format
本帖最后由 tigertang 于 2019-11-14 11:41 编辑

您好!

我正在使用rknn-toolkit 1.2.1在转换模型,并在rk3399pro上推理。关于这个toolkit转换的输出格式,我有一些费解的地方。

我的测试模型只包含一个conv:
  1. img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, feature_map_size, feature_map_size, input_channels))
  2. util.generate_model(self.get_model_path(), normalize_keras_wrapper(tf.keras.layers.Conv2D), img, filters=output_channels, kernel_size=(ksize, ksize), strides=stride, padding='same', name='the_conv')
复制代码


它的输入输出是这样的:
  1. >>> inputs
  2. [<tf.Operation 'img' type=Placeholder>]
  3. >>> inputs[0].outputs
  4. [<tf.Tensor 'img:0' shape=(1, 7, 7, 1916) dtype=float32>]
  5. >>> outputs
  6. [<tf.Operation 'the_conv/BiasAdd' type=BiasAdd>]
  7. >>> outputs[0].outputs
  8. [<tf.Tensor 'the_conv/BiasAdd:0' shape=(1, 7, 7, 320) dtype=float32>]
复制代码


我把它dump成pb然后再用toolkit转成rknn的格式:

[attach]730[/attach]

最后在板子上看到的格式却让我有些迷惑(用rknn_query拿到的信息):

[attach]731[/attach]

我可以理解float32被转成了float16因为文档里似乎写了在模型未量化的情况下使用do_quantization=False会强制使得input,output被压到float16。但是我不能理解的是这个rknn_tensor_attr.dims。为什么这个输出的dims看起来是一个NHWC,但是fmt里写的却是NCHW。

我也拿到了RKNN_QUERY_PERF_DETAIL内的信息,以下是我把它拿出来重新parse后的样子,看起来conv后面又重新被transpose了一下:

[attach]732[/attach]

想请问这种情况是我的转换代码写错了,还是说fmt显示的格式就有问题?








欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3