单通道输入模型如何量化......?

@numbqq, @Frank
你好,我现在模型输入是单通道的,在执行1_quantize_model.sh,参数应该如何设置


NAME=dmtiny
ACUITY_PATH=../../../linux_sdk_6.4.3/acuity-toolkit/bin/

tensorzone=${ACUITY_PATH}tensorzonex

#dynamic_fixed_point-i8 asymmetric_affine-u8
$tensorzone \
    --action quantization \
    --source text \
    --source-file ../imagedata/dataset.txt \
    --channel-mean-value '0 0 0 256' \
    --model-input ${NAME}.json \
    --model-data ${NAME}.data \
    --model-quantize ${NAME}.quantize \
    --quantized-dtype dynamic_fixed_point-i8 \
    --quantized-rebuild
Log tensorflow.python.framework.errors_impl.InvalidArgumentError: Depth of input (1) is not a multiple of input depth of filter (4) for 'convolution_0_2/Conv2D' (op: 'Conv2D') with input shapes: [36,82,82,1], [3,3,4,4].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “tensorzonex.py”, line 446, in
File “tensorzonex.py”, line 383, in main
File “acuitylib/app/tensorzone/quantization.py”, line 156, in run
File “acuitylib/app/tensorzone/quantization.py”, line 103, in _run_quantization
File “acuitylib/app/tensorzone/workspace.py”, line 172, in _setup_graph
File “acuitylib/app/tensorzone/graph.py”, line 59, in generate
File “acuitylib/acuitynetbuilder.py”, line 282, in build
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 312, in build_layer
File “acuitylib/acuitynetbuilder.py”, line 344, in build_layer
File “acuitylib/layer/acuitylayer.py”, line 280, in compute_tensor
File “acuitylib/layer/convolution.py”, line 116, in compute_out_tensor
File “tensorflow_core/python/ops/nn_ops.py”, line 2010, in conv2d
File “tensorflow_core/python/ops/gen_nn_ops.py”, line 1071, in conv2d
File “tensorflow_core/python/framework/op_def_library.py”, line 793, in _apply_op_helper
File “tensorflow_core/python/util/deprecation.py”, line 507, in new_func
File “tensorflow_core/python/framework/ops.py”, line 3360, in create_op
File “tensorflow_core/python/framework/ops.py”, line 3429, in _create_op_internal
File “tensorflow_core/python/framework/ops.py”, line 1773, in init
File “tensorflow_core/python/framework/ops.py”, line 1613, in _create_c_op
ValueError: Depth of input (1) is not a multiple of input depth of filter (4) for ‘convolution_0_2/Conv2D’ (op: ‘Conv2D’) with input shapes: [36,82,82,1], [3,3,4,4].
[22076] Failed to execute script tensorzonex

@librazxc 单通道是(m1 0 0 scale),也就是中间两个设置为0

但是从你的log来看,你的这个inputs的shape是三通道的,是不是你哪里搞错了?

I Fitting image with scale.
I Channel mean value [0.0, 0.0, 0.0, 256.0]
I [TRAINER]Quantization start...
[TRAINER]Quantization start...
I Init validate tensor provider.
I Enqueue samples 36
I Init provider with 36 samples.
D set up a quantize net
D Process input_0 ...
D Acuity output shape(input): (36 80 80 1)
W:tensorflow:From tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
D Real output shape: (36, 80, 80, 1)
D Process convolution_0 ...
D Acuity output shape(convolution): (36 80 80 4)
Traceback (most recent call last):
  File "tensorflow_core/python/framework/ops.py", line 1610, in _create_c_op
tensorflow.python.framework.errors_impl.InvalidArgumentError: Depth of input (1) is not a multiple of input depth of filter (4) for 'convolution_0_2/Conv2D' (op: 'Conv2D') with input shapes: [36,82,82,1], [3,3,4,4].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "tensorzonex.py", line 446, in <module>
  File "tensorzonex.py", line 383, in main
  File "acuitylib/app/tensorzone/quantization.py", line 156, in run
  File "acuitylib/app/tensorzone/quantization.py", line 103, in _run_quantization
  File "acuitylib/app/tensorzone/workspace.py", line 172, in _setup_graph
  File "acuitylib/app/tensorzone/graph.py", line 59, in generate
  File "acuitylib/acuitynetbuilder.py", line 282, in build
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 312, in build_layer
  File "acuitylib/acuitynetbuilder.py", line 344, in build_layer
  File "acuitylib/layer/acuitylayer.py", line 280, in compute_tensor
  File "acuitylib/layer/convolution.py", line 116, in compute_out_tensor
  File "tensorflow_core/python/ops/nn_ops.py", line 2010, in conv2d
  File "tensorflow_core/python/ops/gen_nn_ops.py", line 1071, in conv2d
  File "tensorflow_core/python/framework/op_def_library.py", line 793, in _apply_op_helper
  File "tensorflow_core/python/util/deprecation.py", line 507, in new_func
  File "tensorflow_core/python/framework/ops.py", line 3360, in create_op
  File "tensorflow_core/python/framework/ops.py", line 3429, in _create_op_internal
  File "tensorflow_core/python/framework/ops.py", line 1773, in __init__
  File "tensorflow_core/python/framework/ops.py", line 1613, in _create_c_op
ValueError: Depth of input (1) is not a multiple of input depth of filter (4) for 'convolution_0_2/Conv2D' (op: 'Conv2D') with input shapes: [36,82,82,1], [3,3,4,4].
[22076] Failed to execute script tensorzonex

@Frank
input shape 是80x80x1呀

这里提示了匹配不上。你再检查下你的模型,单通道来说,输入方式就是(m1, 0, 0, scale)

@Frank
如果我是rgb三通道,img=img/255.的方式,--channel-mean-value '0 0 0 256'是这样子的;
如果我是单通道,也是img=img/255.的方式,--channel-mean-value '0 0 0 256'也是这样子的;如何区分

@librazxc 这里只是刚好数字是0,rgb可以是(128,128,128,128),单通道比如(128,0,0,128).模型在读取你的输入层时会自动匹配的

@Frank
这个位置为什么会解析成(36,80,80,4)呀?前序都正常着

@librazxc 这个就要看你的模型,可以确定下这个tensor convolution_0_2/Conv2D的属性。 另外在第一个脚本转换后的jason文件里面也可以查看这个tensor的属性。两者对比下,看是不是第一步模型转换出了问题。

@Frank

{
    "MetaData": {
        "Name": "yolo80",
        "AcuityVersion": "2.0",
        "Platform": "caffe",
        "Org_Platform": "caffe"
    },
    "Layers": {
        "input_0": {
            "name": "input",
            "op": "input",
            "parameters": {
                "size": "",
                "channels": "1",
                "shape": [
                    0,
                    80,
                    80,
                    1
                ]
            },
            "inputs": [],
            "outputs": [
                "out0"
            ]
        },
        "convolution_0": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 4,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@input_0:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_0": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_0:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_1": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 8,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@relu_0:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_1": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_1:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_2": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 16,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 2,
                "stride_w": 2,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@relu_1:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_2": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_2:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "pooling_4": {
            "name": "pooling",
            "op": "pooling",
            "parameters": {
                "padding": "VALID",
                "type": "MAX",
                "ksize_h": 2,
                "ksize_w": 2,
                "stride_h": 2,
                "stride_w": 2,
                "pad_h": 0,
                "pad_w": 0,
                "round_type": "floor",
                "pad_method": "padding_const",
                "pad": [
                    0,
                    1,
                    0,
                    1
                ]
            },
            "inputs": [
                "@relu_0:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "concat_5": {
            "name": "concat",
            "op": "concat",
            "parameters": {
                "dim": 1
            },
            "inputs": [
                "@pooling_4:out0",
                "@relu_2:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_6": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 16,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@concat_5:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_6": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_6:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "pooling_7": {
            "name": "pooling",
            "op": "pooling",
            "parameters": {
                "padding": "VALID",
                "type": "MAX",
                "ksize_h": 2,
                "ksize_w": 2,
                "stride_h": 2,
                "stride_w": 2,
                "pad_h": 0,
                "pad_w": 0,
                "round_type": "floor",
                "pad_method": "padding_const",
                "pad": [
                    0,
                    1,
                    0,
                    1
                ]
            },
            "inputs": [
                "@relu_6:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_8": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 32,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@pooling_7:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_8": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_8:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "pooling_9": {
            "name": "pooling",
            "op": "pooling",
            "parameters": {
                "padding": "VALID",
                "type": "MAX",
                "ksize_h": 2,
                "ksize_w": 2,
                "stride_h": 2,
                "stride_w": 2,
                "pad_h": 0,
                "pad_w": 0,
                "round_type": "floor",
                "pad_method": "padding_const",
                "pad": [
                    0,
                    1,
                    0,
                    1
                ]
            },
            "inputs": [
                "@relu_8:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_10": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 64,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@pooling_9:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_10": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_10:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_11": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 64,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 1,
                "ksize_w": 1,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    0,
                    0,
                    0,
                    0
                ]
            },
            "inputs": [
                "@relu_10:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_11": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_11:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_12": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 128,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@relu_11:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_12": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_12:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_13": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 128,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 1,
                "ksize_w": 1,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    0,
                    0,
                    0,
                    0
                ]
            },
            "inputs": [
                "@relu_12:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_13": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_13:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "pooling_14": {
            "name": "pooling",
            "op": "pooling",
            "parameters": {
                "padding": "VALID",
                "type": "MAX",
                "ksize_h": 2,
                "ksize_w": 2,
                "stride_h": 2,
                "stride_w": 2,
                "pad_h": 0,
                "pad_w": 0,
                "round_type": "floor",
                "pad_method": "padding_const",
                "pad": [
                    0,
                    1,
                    0,
                    1
                ]
            },
            "inputs": [
                "@relu_13:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_15": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 128,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@pooling_14:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_15": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_15:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_16": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 256,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 3,
                "ksize_w": 3,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    1,
                    1,
                    1,
                    1
                ]
            },
            "inputs": [
                "@relu_15:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_16": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_16:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_17": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 256,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 1,
                "ksize_w": 1,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    0,
                    0,
                    0,
                    0
                ]
            },
            "inputs": [
                "@relu_16:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "relu_17": {
            "name": "relu",
            "op": "relu",
            "inputs": [
                "@convolution_17:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "convolution_18": {
            "name": "convolution",
            "op": "convolution",
            "parameters": {
                "weights": 18,
                "padding": "VALID",
                "bias": true,
                "group_number": 1,
                "regularize": false,
                "ksize_h": 1,
                "ksize_w": 1,
                "stride_h": 1,
                "stride_w": 1,
                "pad_h": 0,
                "pad_w": 0,
                "dilation": 1,
                "pad_method": "padding_const",
                "pad": [
                    0,
                    0,
                    0,
                    0
                ]
            },
            "inputs": [
                "@relu_17:out0"
            ],
            "outputs": [
                "out0"
            ]
        },
        "output_19": {
            "name": "output",
            "op": "output",
            "inputs": [
                "@convolution_18:out0"
            ],
            "outputs": [
                "out0"
            ]
        }
    }
}


我这里并没有convolution_0_2
找到问题了 你们是没有darknet的route层吗? 第一步从darknet转有问题

@librazxc 你这是darknet的什么模型,支持的层都在文档里面了,你可以在文档里面查看

@Frank 是concat有问题,为啥会这样。我之前转darknet yolo都没这个问题。
转为json用netron查看是这样的:

实际darknet模型是这样的:

@librazxc
你说下面这个是你转出来的是么

@Frank 上面的图是执行step出来的 下面的是darknet原模型图

@librazxc 从我的理解来说,这里转换后用concat,是可以替换route的,问题在于concat的策略。这里选择的axis有问题。你可以将你的脚本1贴出来给我看看么

@Frank 在这里,1_quantize_model.sh

@librazxc 尽管是单通道模型,你也将--reorder-channel加上呢

--reorder-channel不是用在2_export_case_code.sh时候的吗

@librazxc

cat ~/yan/git/khadas/about-npu/amlogic/aml_npu_sdk/acuity-toolkit/demo/1_quantize_model.sh 
#!/bin/bash

NAME=mobilenet_tf
ACUITY_PATH=../bin/

tensorzone=${ACUITY_PATH}tensorzonex

#dynamic_fixed_point-i8 asymmetric_affine-u8 dynamic_fixed_point-i16(s905d3 not support point-i16)
$tensorzone \
    --action quantization \
    --dtype float32 \
    --source text \
    --source-file data/validation_tf.txt \
    --channel-mean-value '128 128 128 128' \
    --reorder-channel '0 1 2' \
    --model-input ${NAME}.json \
    --model-data ${NAME}.data \
    --model-quantize ${NAME}.quantize \
    --quantized-dtype dynamic_fixed_point-i16 \
    --quantized-rebuild \
#    --batch-size 2 \
#    --epochs 5

#Note: default batch-size(100),epochs(1) ,the numbers of pictures in data/validation_tf.txt must equal to batch-size*epochs,if you set the epochs >1


现在是执行0_import_model.sh

$convert_darknet \
    --net-input ./yolo80.cfg \
    --weight-input ./yolo80_best.weights \
    --net-output ${NAME}.json \
    --data-output ${NAME}.data 

模型转完,用netron查看,concat地方通道错了

我用的还是6.4.3的SDK :sweat_smile: