TDA4VM: TDA4VM-TIDL算子转换工具

Part Number: TDA4VM


在ti-processor-sdk-rtos-j721e-evm-11_01_00_04版本中,

问题:

1、没有转换工具?

源码解压出来,在ti-processor-sdk-rtos-j721e-evm-11_01_00_04/c7x-mma-tidl目录中并没有/ti_dl/utils/tidlModelImport/out/tidl_model_import.out这个文件,没有这个目录/ti_dl/utils/tidlModelImport/out

2、如何实现tidl的模型转换呢?

wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04/c7x-mma-tidl/tidl_tools$ ls -al
总计 44
drwxr-xr-x 2 wp wp 4096  9月 16 17:17 .
drwxr-xr-x 7 wp wp 4096  9月 16 17:52 ..
lrwxrwxrwx 1 wp wp   54  9月 16 17:17 device_config.cfg -> ../ti_dl/test/testvecs/config/import/device_config.cfg
lrwxrwxrwx 1 wp wp   29  9月 16 17:17 itidl_rt.h -> ../arm-tidl/rt/inc/itidl_rt.h
lrwxrwxrwx 1 wp wp   28  9月 16 17:17 itvm_rt.h -> ../arm-tidl/rt/inc/itvm_rt.h
lrwxrwxrwx 1 wp wp   70  9月 16 17:17 libtidl_onnxrt_EP.so -> ../arm-tidl/onnxrt_ep/out/PC/x86_64/LINUX/release/libtidl_onnxrt_EP.so
lrwxrwxrwx 1 wp wp   76  9月 16 17:17 libtidl_tfl_delegate.so -> ../arm-tidl/tfl_delegate/out/PC/x86_64/LINUX/release/libtidl_tfl_delegate.so
lrwxrwxrwx 1 wp wp   59  9月 16 17:17 libvx_tidl_rt.so -> ../arm-tidl/rt/out/PC/x86_64/LINUX/release/libvx_tidl_rt.so
lrwxrwxrwx 1 wp wp   63  9月 16 17:17 libvx_tidl_rt.so.1.0 -> ../arm-tidl/rt/out/PC/x86_64/LINUX/release/libvx_tidl_rt.so.1.0
lrwxrwxrwx 1 wp wp   37  9月 16 17:17 PC_dsp_test_dl_algo.out -> ../ti_dl/test/PC_dsp_test_dl_algo.out
lrwxrwxrwx 1 wp wp   40  9月 16 17:17 ti_cnnperfsim.out -> ../ti_dl/utils/perfsim/ti_cnnperfsim.out
lrwxrwxrwx 1 wp wp   61  9月 16 17:17 tidl_graphVisualiser.out -> ../ti_dl/utils/tidlModelGraphviz/out/tidl_graphVisualiser.out
lrwxrwxrwx 1 wp wp   70  9月 16 17:17 tidl_graphVisualiser_runtimes.out -> ../ti_dl/utils/tidlModelGraphviz/out/tidl_graphVisualiser_runtimes.out
lrwxrwxrwx 1 wp wp   62  9月 16 17:17 tidl_model_custom_import.so -> ../ti_dl/utils/tidlModelImport/out/tidl_model_custom_import.so
lrwxrwxrwx 1 wp wp   60  9月 16 17:17 tidl_model_import_onnx.so -> ../ti_dl/utils/tidlModelImport/out/tidl_model_import_onnx.so
lrwxrwxrwx 1 wp wp   56  9月 16 17:17 tidl_model_import.out -> ../ti_dl/utils/tidlModelImport/out/tidl_model_import.out
lrwxrwxrwx 1 wp wp   61  9月 16 17:17 tidl_model_import_relay.so -> ../ti_dl/utils/tidlModelImport/out/tidl_model_import_relay.so
lrwxrwxrwx 1 wp wp   55  9月 16 17:17 tidl_model_import.so -> ../ti_dl/utils/tidlModelImport/out/tidl_model_import.so
lrwxrwxrwx 1 wp wp   62  9月 16 17:17 tidl_model_import_tflite.so -> ../ti_dl/utils/tidlModelImport/out/tidl_model_import_tflite.so
lrwxrwxrwx 1 wp wp   56  9月 16 17:17 tidl_model_secure.out -> ../ti_dl/utils/tidlModelSecure/out/tidl_model_secure.out
wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04/c7x-mma-tidl/tidl_tools$ ti-processor-sdk-rtos-j721e-evm-11_01_00_04^C
wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04/c7x-mma-tidl/tidl_tools$ cd ../..
wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04$ find . -name tidl_model_import.out
./c7x-mma-tidl/tidl_tools/tidl_model_import.out
wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04$ file ./c7x-mma-tidl/tidl_tools/tidl_model_import.out
./c7x-mma-tidl/tidl_tools/tidl_model_import.out: broken symbolic link to ../ti_dl/utils/tidlModelImport/out/tidl_model_import.out
wp@wp:~/jm/tda4vm/download/ti-processor-sdk-rtos-j721e-evm-11_01_00_04$

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好,

          如果你想在 RTOS-SDK 中使用转换工具,你需要使用 "make" 来构建它们。
          使用 "make tidl_pc_tools",这个 make 选项将生成一个 "out" 目录,其中包含可执行的 .out 文件。
          这是关于如何构建 RTOS-SDK 的文档链接。

           https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/11_01_00_04/exports/docs/vision_apps/docs/user_guide/index.html

          请参考下面的步骤。但请阅读文档以便更好地理解。

    === How to build j721e RTOS PSDK ===

    1. In the SDK root directory, install ROTS PSDK package

    •  ./sdk_builder/scripts/setup_psdk_rtos.sh

    // if you want to do "make tidl_pc_tools", then use the following option

    • ./sdk_builder/scripts/setup_psdk_rtos.sh --install_tidl_deps

    2. setup the environment (or you can edit the file "sdk_builder/build_flags.mak" and modify below 4 variables) 

    • export BUILD_EMULATION_MODE=no
    • export BUILD_TARGET_MODE=yes
    • export SOC=j721e
    • export PSDK_INSTALL_PATH=$(pwd)

    3.  Do below to build the full PSDK RTOS, with "N" being the number of parallel threads

  • 其中贵司提供的github.com/.../edgeai-tidl-tools.git这个工具,可以在PC上进行模型转换、编译和仿真推理,生成的model-artifacts文件是可以直接部署在TDA4VM平台运行么,对于这个SDK:ti-processor-sdk-linux-adas-j721e-evm-09_01_00_06-Linux-x86-Install,也是支持https://github.com/TexasInstruments/edgeai-tidl-tools.git这个工具生成的model-artifacts,可以部署在这个版本么?

  • 您好,

    贵司提供的这个edgeai-tidl-tools 对应的版本,模型编译生成的产物,是否支持运行在

    ti-processor-sdk-linux-adas-j721e-evm-09_01_00_06-Linux-x86-Install.bin

    这个环境里面呢?   这个edgeai-tidl-tools和RTOS-SDK中的tidl_model_import.out  本质区别是什么呢?

  • 您好,

     edgeAI TIDL 工具可以在 PC 上进行模型编译和推理模拟。

     这是获取 TIDL 工具的链接,只需使用“git clone”下载仓库,使用以下命令。      

    git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git

    工件(.bin)文件可以在 PC 上生成,并可以下载到设备上,在 TI EVM 上运行。

    SDK 也可以生成工件文件(在你构建它之后),文件可以直接下载到 EVM 运行。这些文件与 TIDL 工具生成的 bin 文件相同。

    我建议先运行 TIDL 工具自带的示例,如果你能成功运行它们,那么你就能了解整个流程。

    这是 TIDL 在线文档的链接。

    github.com/.../edgeai-tidl-tools
  • 您好: 目前我已经生成了这样的文件,model-artifacts/cl-ort-onnxrt-test/artifacts目录有以下文件250525.onnx allowedNode.txt fusion_imgdenoise_img_tidl_io_1.bin  fusion_imgdenoise_img_tidl_net.bin       onnxrtMetaData.txt    param.yaml   这几个。   将model-artifacts/cl-ort-onnxrt-test/artifacts这个目录拷贝到TDA4VM的开发板上面后,如何进行推理呢?它所依赖的配置文件model_configs.py已经需要推理的源文件目录,都需要重新在板子上定义路径,才能正常运行么?

  • 您好,

         请按照 GitHub 上的文档运行示例。

         以下是我使用并记录的步骤/命令。你可以将其作为参考,请相应地更改参数,例如 IP 地址。

         

    # clone edgeAI TIDL tools on a linux PC and copy the entire directory to EVM
    scp -r edgeai-tidl-tools/ root@128.247.79.115:/opt/.
    
    #on PC, cd to "edgeai-tidl-tools" directory; then copy both "model-artifacts" and "models" directories to EVM
    scp -r model-artifacts/ root@128.247.79.115:/opt/edgeai-tidl-tools/.
    scp -r models/ root@128.247.79.115:/opt/edgeai-tidl-tools/.
    
    #go to EVM and cd /opt/edgeai-tidl-tools/
    git checkout 10_01_04_00
    export SOC=am69a
    rm -rf build bin lib
    mkdir build
    cd build
    cmake ../examples/
    make
    cd ..
    python3 ./scripts/gen_test_report.py
    
    #copy the EVM test results back to PC
    scp -r root@128.247.79.198:/opt/edgeai-tidl-tools/output_images/ .
    scp -r root@128.247.79.198:/opt/edgeai-tidl-tools/output_binaries/ .

  • 看上去,在EVM板端上面依然需要edgeai-tidl-tools/ 这套工具源码,才能进行推理,对么?

  • 您好,

         没必要。你可以直接在EVM上进行模型的bin文件推理。你只需要把在PC端生成的推理程序拷贝到EVM上即可。

          你只需要那些将在EVM的Linux系统下编译的源代码,例如在TI设备上运行的测试平台。

          

    # Run model inference using TIDL-RT on EVM
    ./TI_DEVICE_armv8_test_dl_algo_host_rt.out s:inference_cl_ort_resnet18_v1_evm.txt
    
    # below is the inference txt file, you will have to edit them to meet your application.
    
    inFileFormat = 0
    postProcType = 1
    numFrames = 1
    netBinFile = "./test_mobilenetv2/outB/tidl_mobilenetv2.bin"
    ioConfigFile = "./test_mobilenetv2/outB/tidl_io_buff1.bin"
    inData = "./test_mobilenetv2/airshow.jpg"
    outData = "./test_mobilenetv2/evm_out/tidl_out.bin"
    
    debugTraceLevel = 3
    #rawDataInElementType = 0
    #inDataFormat = 1
    #writeTraceLevel = 3
    #flowCtrl = 1

    这是 TIDL-RT 文档的链接

         https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_01_00_11/exports/docs/tidl_j7_08_01_00_05/ti_dl/docs/user_guide_html/index.html