Npu: 模型量化问题,求帮助

./bin/tensorzonex --action quantization
–quantized-dtype asymmetric_affine-u8
–channel-mean-value ‘128 128 128 1’
–source text --source-file dataset.txt

–model-input xxx.json – model-data xxx.data
–quantized-rebuild

文档上说在执行模型量化时, 需要提供量化的图片路径, 而且建议200张。这个图片是不是来自模型训练的数据集呢? 是否任意一张图片就可以?
还有。我看到demo的dataset 内容是
./data/space_shuttle_224.jpg, 813
813是什么意思呢?

@heaven7

可以不是训练集,但是图片的分辨率要与你的模型对应

默认的模型里面是一个1001个类的分类,这里的813是值模型的第814个分类,对应的就是图片的 space_shuttle

demo是加的813, 那我做的人体姿态识别,后面要提供什么参数?
我用的posenet. https://github.com/tensorflow/examples/blob/master/lite/examples/posenet/android/posenet/src/main/java/org/tensorflow/lite/examples/posenet/lib/Posenet.kt 模型输出是一个map
@Frank

@heaven7 我还没有做过姿态识别的,你们姿态识别是2D的姿态识别,还是3D的姿态识别,你们数据集是如何分类的

2D识别。现在是用的google现成的posenet 模型。

@heaven7 那你这里可以先不设置结果,只放图片试试看.

好的, 提供50张 和200张图片会有什么不同呢?

@heaven7 对最后的精度会有一定的影响,但是主要还是由你的模型本身决定的.

npu的版本和固件的版本有什么样的对应关系?@Frank

case代码转化失败:

Traceback (most recent call last):
File “ovxgenerator.py”, line 195, in
File “ovxgenerator.py”, line 186, in main
File “acuitylib/app/exporter/ovxlib_case/casegenerator.py”, line 515, in generate
File “acuitylib/app/exporter/ovxlib_case/casegenerator.py”, line 488, in _gen_special_case
File “acuitylib/app/exporter/ovxlib_case/casegenerator.py”, line 368, in _gen_nb_file
File “acuitylib/app/exporter/ovxlib_case/casegenerator.py”, line 283, in _generate_ovxlib_case
File “acuitylib/app/exporter/ovxlib_case/vxnetgenerator.py”, line 368, in generate
File “acuitylib/app/exporter/ovxlib_case/vxnetgenerator.py”, line 66, in load_source
File “acuitylib/app/exporter/ovxlib_case/vxnetgenerator.py”, line 59, in load_file_source
FileNotFoundError: [Errno 2] No such file or directory: ‘…/bin/acuitylib/vxcode/template/vnn_NETWORK.c’
[4404] Failed to execute script ovxgenerator

环境:
tensorflow: 2.0.0
npu: 6.4.2.1
使用步骤:(在第3个步骤时,出现异常。)
#!/bin/bash

NAME=mobilenetv1_tfite
ACUITY_PATH=…/bin/

convert_caffe=${ACUITY_PATH}convertcaffe
convert_tf=${ACUITY_PATH}acuitylib/convertensorflow
convert_tflite=${ACUITY_PATH}acuitylib/convertflite
convert_darknet=${ACUITY_PATH}convertdarknet
convert_onnx=${ACUITY_PATH}convertonnx

tf_quantize=${ACUITY_PATH}acuitylib/tensorzonex
tf_gen=${ACUITY_PATH}acuitylib/ovxgenerator
vcmd_tool=${ACUITY_PATH}vcmdtools

#==========step 1 ===========
#$convert_tflite \

–tflite-mode posenet_model.tflite \

–net-output ${NAME}.json \

–data-output ${NAME}.data

#============ step 2=============
#$tf_quantize --action quantization
#–quantized-dtype asymmetric_affine-u8
#–channel-mean-value ‘128 128 128 1’
#–source text --source-file dataset.txt
#–model-input ${NAME}.json --model-data ${NAME}.data
#–quantized-rebuild

#=============== step 3==================
$tf_gen --model-input ${NAME}.json
–data-input ${NAME}.data
–channel-mean-value ‘128 128 128 1’
–reorder-channel ‘0 1 2’
–export-dtype quantized
–optimize VIPNANOQI_PID0X88
–viv-sdk $vcmd_tool
–pack-nbg-unify
@Frank

@heaven7 这里报了一个文件找不到的error,你修改了SDK么,你的SDK版本不对,你应该申请最新的6.4.3的SDK,app仓库和demo二进制文件的仓库也都有更新

今天没把带linux系统的硬盘带过来。晚上回去试下。

@heaven7 可以正常使用了么,这种fileNotFound的错误一般都是SDK少了什么文件,或者执行的路径不对造成的

@heaven7 可以正常使用了么,这种fileNotFound的错误一般都是SDK少了什么文件,或者执行的路径不对造成

有qq群么。或者你的qq. 到时候npu方面有问题直接问你,更方便。

@heaven7 你有空再试就行,我们这边没有测试转换tfilte的模型,所以也没有办法保证,之前碰见这种问题,一般都是转换的目录不对.

转化case 代码已经成功了。现在有个问题就是我现在不知道怎么处理vnn tensor转化输出?
我看到case代码处理输出有个这个:

  uint8_t *tensor_data = NULL;
    uint32_t MaxClass[5];
    float fMaxProb[5];
    uint32_t topk = 5;

    sz = 1;
    for(i = 0; i < tensor->attr.dim_num; i++)
    {
        sz *= tensor->attr.size[i];
    }

    if(topk > sz)
        topk = sz;

    stride = vsi_nn_TypeGetBytes(tensor->attr.dtype.vx_type);

    tensor_data = (uint8_t *)vsi_nn_ConvertTensorToData(graph, tensor);
    buffer = (float *)malloc(sizeof(float) * sz);

    for(i = 0; i < sz; i++)
    {
        status = vsi_nn_DtypeToFloat32(&tensor_data[stride * i], &buffer[i], &tensor->attr.dtype);
    }

在没有使用npu之前我使用的tensorflowlite 输出的是比较复杂的map.
HashMap<Int, Array<Array<Array<float []>>>>()…
source code: https://github.com/tensorflow/examples/blob/master/lite/examples/posenet/android/posenet/src/main/java/org/tensorflow/lite/examples/posenet/lib/Posenet.kt
求教,这里如何处理??
@Frank

@heaven7 这个转换工具会做很多简化处理的,转换完的代码只有一个top5的预测,所以你看我们的代码都是不使用转换后的前处理和后处理的,这部分需要自己研究下

我编译成动态链接库后,运行报错。 sdk里面没有libgal
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library “libGAL.so” not found

npu sdk: 6.4.2.1

@Frank

@heaven7

从你的log上来看,你是安卓上运行的么