This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:用于模型部署的 TDA4 TI 开发工具

Guru**** 2478765 points
Other Parts Discussed in Thread: TDA4VM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1435502/tda4vm-tda4-ti-deeplearning-tools-for-model-deployment

器件型号:TDA4VM

工具与软件:

各位 专家、您好!

    当我使用 TI 深度学习工具把模型部署到 tda4vm 时、我遇到了问题。 作为指导原则、 有两种方法量化 onnx 并将其转换为 bin 文件 TIDL Importer 和 edgeai-tidl-tools。

1.在    edgeai-tidl-tools 中使用 onnxrt_ep.py 来编译  和获取 subgraph_0_tidl_io_1.bin 和 subgraph_0_tidl_net.bin (例如移动网)后, 我 在 app_tidl 中使用  这2个文件,这2个文件来自 SDK vision_apps。  期间程序报告错误  

状态= vxVerifyGraph (obj->graph);
 这些部署过程是否有其他技巧?
2.使用  TIDL 进口商 进行校准和编译时。 仍然有一些问题。  
如果我使用 caffe 编译模型作为指导,则 APP_Tidl 中的每件事情都可以正常工作。
然而,如果我使用 onnx 文件进行编译,虽然图形可以验证和 app_tidl 工作. (浮点输入也将转换为 subgraph_0_tidl_net.bin 中的8uint 类型)。
但是,输出似乎不正确, MobileNet 结果是完全不同的 caffe 输出。
此外、如果我使用 TIDL Importer 来编译 onnx 模型、    编译后似乎所有 onnx float 类型输出都将是 INT8类型。
这是相当奇怪的,有我错过的设置吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是 问题1的 param.yaml 的内容

    后处理:
    DATA_LOADING:nCHW
    预处理:
    裁剪:
    - 224
    - 224
    DATA_LOADING:nCHW
    平均值:
    - 123.675.
    - 116.28.
    - 103.53.
    调整大小:
    - 224
    - 224
    比例尺:
    - 0.017125.
    - 0.017507.
    第0.017429节
    会话:
    工件文件夹:""
    model_folder:模型
    model_path:mobilenetv2-7.onnx
    Session_name:onnxrt
    target_device:PC
    Task_type:分类

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wei、我们来了解一下。 首先,我们将确切地做你所做的,以找出我们是否会有同样的问题。 您能否提供软件版本号、每一步的命令以及您的 Linux 环境? 因此我们可以在我们这边复制它们。

    谢谢。此致

    文立

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wen、

       我的 SDK 版本是09_02_00_05、硬件是 TDA4vm。  edgeai-tidl-tools 标签为 09_02_09_00
    1. 使用  edgeai-tidl-tools 进行编译时、遵循以下步骤  

     a.使用  edgeai-tidl-tools 自述文件来设置环境  

     b.修改 run_python_examples.sh、仅保留 onnxrt_ep.py 与编译操作相关、如下所示  

    cd $CURDIR/examples/osrt_python/ort
    如果[[$arch == x86_64 ]];
    python3 onnxrt_ep.py -c
    和数据
    如果[$run_model != 0];then
    echo "Run python3 onnxrt_ep.py"
    python3 onnxrt_ep.py
    和数据

     c. 在  onnxrt_ep.py 中、我选择  mobilenetv2-7.onnx 进行测试。 并修改 common_utils.py 以设置 DATA_CONVERT = 0

     d.编译后,我得到了模型 bin 文件和 io 文件,即 subgraph_0_tidl_io_1.bin 和 subgraph_0_tidl_net.bin ,将这2个文件放入   app_tidl 演示(vision_apps/dl_demos/app_tidl ),并在 TDA4VM 中运行。  它会按如下方式报告错误:

    app_tidl:正在创建图形...完成。
    APP_TIDL:正在验证图形...
    54470.315228 s:vx_zone_error:[ownContextSendCmd:782]命令确认消息返回失败 cmd_status:-1
    54470.315663 s:vx_zone_error:[ownContextSendCmd:818] tivxEventWait ()失败。
    54470.315909 s:vx_zone_error:[ownNodeKernelInit:538]目标内核 TIDLNode 的 TIVX_CMD_NODE_CREATE 失败
    54470.316033 s:vx_zone_error:[ownNodeKernelInit:539]请确保已为此内核注册目标回调
    54470.316210 s:vx_zone_error:[ownNodeKernelInit:540]如果目标回调已注册、请确保在此内核的 create 回调中没有出现错误
    54470.316575 s:vx_zone_error:[GraphownNodeKernelInit:583] kernel init for node 0、kernel com.ti.tidl…failed!!(已失败!)
    54470.316939 s:vx_zone_error:[vxVerifyGraph:2044]节点内核初始化失败
    54470.317190 s:vx_zone_error:[vxVerifyGraph:2098]图形验证失败

    2.当我尝试使用 TIDL Importer  进行编译时,我的设置文件如下所示  

    tidl_import_mobilenet_onnx.txt


    modelType = 2
    #numParamBits = 8
    #numFeatureBits = 8
    #quantizationStyle = 2.
    InputNetFile ="..//../test/testvecs/models/public/onnx/mobileNet1.0v1/mobilenetv2-7.onnx
    #inputParamsFile ="..//../test/testvecs/models/public/onnx/mobileNet1.0v1/mobilenet.caffemodel
    outputNetFile ="..//../test/testvecs/config/tidl_models/onnx/subgraph_0_tidl_net.bin
    outputParamsFile ="..//../test/testvecs/config/tidl_models/onnx/subgraph_0_tidl_io_
    inDataNorm = 1
    inMean = 103.94 116.78 123.68
    INSCALE = 0.017 0.017 0.017
    inDataFormat = 0
    reszeWidth = 256
    reszeHeight = 256
    InWidth = 224
    InHeight = 224
    inNumChannels = 3
    #numFrames = 1.
    perfSimConfig =../../test/testvecs/config/import/device_config.cfg
    inData =../../test/testvecs/config/imageNet_sample_val.txt
    postProcType = 0


    编译后,我也把 bin 和 io bin 文件放到 vision_apps/dl_demos/app_tidl。 这次、程序运行成功。

    但是、当我使用时  

    vx_size data_type = getTensorDataType(ioBufDesc->outElementType[id])要检查、模型输出数据类型为 INT8、输出输出结果 不好。
    但当我使用 Caffe 模型进行编译(设置如下)时、  模型输出数据类型为 float、结果正确、模型输出为 float
    modelType = 0
    InputNetFile ="..//../test/testvecs/models/public/caffe/mobileNet1.0v1/mobilenet_deploy.prototxt
    InputParamsFile ="..Paramse"/../test/testvecs/models/public/caffe/mobileNet1.0v1/mobilenet.caffemodel
    outputNetFile ="..//../test/testvecs/config/tidl_models/caffe/tidl_net_mobilenet_v1.bin
    outputParamsFile ="..//../test/testvecs/config/tidl_models/caffe/tidl_io_mobilenet_v1_
    inDataNorm = 1
    inMean = 103.94 116.78 123.68
    INSCALE = 0.017 0.017 0.017
    inDataFormat = 0
    reszeWidth = 256
    reszeHeight = 256
    InWidth = 224
    InHeight = 224
    inNumChannels = 3
    #numFrames = 1.
    perfSimConfig =../../test/testvecs/config/import/device_config.cfg
    inData =../../test/testvecs/config/imageNet_sample_val.txt
    postProcType = 1
    quantRangeExpansionFactor = 1.5


    quantParamsPrototxtFile ="..//../test/testvecs/config/tidl_models/quant_params/caffe/mobilenet_v1_quant_params.prototxt


       

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wen、

    一般而言、我到目前为止已经进行了测试、发现只有 TIDL 导入器转换的模型可以用于 vision_apps 中的 vx_tidl 样本。 但是、由 edgeai-tidl-tools 生成的不存在此情况、并且将报告验证图错误。
    我的问题是、如何设置或修改 edgeai-tidl-tools 中的代码、以便他生成的 bin 文件可以用于 vx_tidl 样片。
    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Wei、您好;

    感谢您发送编修。 我将设置与您相同的配置;并会随时向您更新。  

    此致

    文立

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正在解锁该线程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    这个问题仍然困扰着你吗?

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Adam、
       目前这个问题不会阻止我的开发。
       我可以使用 TIDL-RT 导入程序添加已完成的 PTQ

       但我仍然很好奇、我应该添加什么技巧来调整  edgeai-tidl-tools 输出工具来获取视觉应用示例。

       它将帮助我们很多,谢谢!