工具/软件:
如何为 TIDL 导入我自己经过训练的 Tensorflow 模型? 哪一项是有关该问题的最新文档?
我首先找到了 TIDL 用户指南页面、但注意到 SDK 的版本不是最新的。 -> TI 深度学习库用户指南:开始使用 TI 深度学习(TIDL)生态系统
我搜索了最新页面并找到了以下内容、但内容似乎与以前不同。 关于 tidlImporter 的描述似乎缺失。
我们的 SDK 版本: Processor SDK RTOS J721E 10_01_00
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.
工具/软件:
如何为 TIDL 导入我自己经过训练的 Tensorflow 模型? 哪一项是有关该问题的最新文档?
我首先找到了 TIDL 用户指南页面、但注意到 SDK 的版本不是最新的。 -> TI 深度学习库用户指南:开始使用 TI 深度学习(TIDL)生态系统
我搜索了最新页面并找到了以下内容、但内容似乎与以前不同。 关于 tidlImporter 的描述似乎缺失。
我们的 SDK 版本: Processor SDK RTOS J721E 10_01_00
尊敬的 Daigo:
最简单的方法是使用 OSRT 方法。 请参阅此处:
我建议将您的模型转换为 ONNX、因为它具有更好的支持、但 TFL 应该起作用。
在这种情况下、您会进入以下目录:
edgeai-tidl-tools/examples/osrt_python/TFL
通过复制类似如下的部分、将模型添加到./model_configs.py 中:
"test_model":create_model_config (
Source=AttrDict (
model_url="">git.ti.com/.../resnet18_opset9.tfl"、
推断形状=真、
)、
前进程=AttrDict(
调整大小=256、
作物=224、
data_layout="NCHW"、
resize_with_pad=False、
REVERSE_CHANNES=False、
)、
Session=AttrDict(
session_name="onnxrt"、
model_path=os.path.join ('/home/root/models、"test_model.tfl")、
Input_Mean=[123.675,116116.28,103.53]、
INPUT_SCALE=[0.017125、0.017507、0.017429]、
Input_optimization=True、
)、
TASK_TYPE="Classification"、
Extra_info=AttrDict (num_images=numImages、num_class=1000)、
可选_options=AttrDict (
DEBUG_LEVEL= 4、
)、
)、
将"test_model"更改为您的模型名称(可以是任何名称)、更新模型的路径(至少、请参阅上面的链接以了解特定于您的模型的参数)。 完成模型配置后、可 通过以下方式编译模型:
python3 ./tflrt_delegate.py -c -m
然后、您可以通过以下方式运行模型:
python3 ./ tflrt_delegate.py --m
编译的输出将放入
edgeai-tidl-tools/model-artifacts/
模型的副本将放置在 edgeai-tidl-tools/models/public 中。
此致、
Chris
您好、Chris、
我知道 ONNX 是最推荐的,并且支持 TFL。
我有3个问题。
1. RTOS-SDK 中当前是否已弃用工具"c7x-mma-tidl/ti_dl/utils/tidlModelImport"?
2.我的理解是否正确:"tidlModelImport"支持常规 Tensorflow 不是轻量级版本,但"edgeai-tidl-tools"不支持?
3.您提供的 Dict 类型的每个参数的描述在哪里?
此致、
Daigo
1. RTOS-SDK 中当前是否已弃用工具"c7x-mma-tidl/ti_dl/utils/tidlModelImport"?
设置后、我在 edgeai-tidl-tools 中使用 tidl_model_import.out。 通常具有最新的 TIDLRT 进口商。
2.如果您想使用常规 TensorFlow 版本,最好从 TensorFlow 中获取它。
3. https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/examples/osrt_python/README.md
如果要导入 TF 模型、使用 edgeai-tidl-tools/examples/osrt_python/tfL 中的导入工具会更容易。实用程序 tflrt_delegate.py 运行 TF 的 OSRT 版本。 这样可以更轻松地导入模型、因为并非所有层都需要 TIDLRT 的支持。
此致、
Chris
您好、Chris、
实际上、我可以在以下位置找到 tidl_model_import.out。
> /tools/AM68PA/tidl_tools/tidl_model_import.out
但是、我根本不明白应该使用 tidl_model_import 还是 tflrt_delegate。 如果要编译模型并同时推断、是否应该使用 tflrt_delegate? 您能否更详细地解释一下这两种工具之间的区别以及如何使用它们?
> 3. https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/examples/osrt_python/README.md
我已经检查了你显示的链接,但我认为它不能解释所有的参数类型 Dict。 例如、我找不到"resize_with_pad"的说明。
尊敬的 Daigo:
要获得 tidl_model_import.out、您需要在全新克隆后从 edgeai-tidl-tools 目录运行"source setup.sh"。 如果之前失败的设置有伪影、则不会添加所有内容。 请遵循中的说明:
https://github.com/TexasInstruments/edgeai-tidl-tools/?tab=readme-ov-file#setup
必须编译模型;然后才能使用 TIDL 运行推理。 tidl_model_import 将模型导入到 TIDL (量化/编译)、然后运行模型(推理)、运行 PC_dsp_test_dl_algo.out。
根据版本的不同、可能缺少一些。 查看您的特定版本、因为某些选项可能会被弃用、因此它们不再记录下来、但仍然可以正常工作。
此致、
Chris
您好、Chris、
> 要获得 tidl_model_import.out、您需要在全新克隆后从 edgeai-tidl-tools 目录运行"source setup.sh"。
是的、我明白。 运行 setup.sh 后、我能够找到 tidl_model_import.out。
> 您必须编译模型;然后您可以使用 TIDL 运行推理。 tidl_model_import 将模型导入到 TIDL (量化/编译)、然后运行模型(推理)、运行 PC_dsp_test_dl_algo.out。
感谢您的解释。 我现在了解用于编译和推断模型的可执行文件。 但是、我仍然不理解的是这些可执行文件与您最初介绍的 tflrt_delegate 之间的用法差异。 您能解释一下它们之间的区别吗?
此致、
Daigo
尊敬的 Daigo:
下面是运行模型的不同方式的详细介绍。
OSRT (开源运行时)。
这是最容易使用的、允许模型的某些部分在 ARM 上运行、而器件在 DSP 上运行。 对于 TIDL 中不支持层的复杂模型非常有用。 如果您有此选项、请使用此选项。
edgeai-tidl-tools/examples/osrt_python/ort# python3 ./onnxrt_ep.py -h
用法:onnxrt_ep.py [-h][-c][-d][-z][-o][-m 模型][-n ncpus]
选项:
-h、--help 显示此帮助消息并退出
-c、--compile 在模型编译模式下运行
-d、--disable_offload
禁止卸载到 TIDL
-z、--run_model_zoo 运行 model zoo 模型
-o、--graph_optimize 通过 onnx-graph -外科医生- tidl 运行 ONNX 模型优化
-m 型号,--models 型号
要添加到要运行的列表中的模型名称
-n ncpus、--ncpus ncpus
要生成的线程数
edgeai-tidl-tools/examples/osrt_python/TFL# python3 ./tflrt_delegate.py -h
用法:tflrt_delegate.py [-h][-c][-d][-z][-m 模型][-n ncpus]
选项:
-h、--help 显示此帮助消息并退出
-c、--compile 在模型编译模式下运行
-d、--disable_offload
禁止卸载到 TIDL
-z、--run_model_zoo 运行 model zoo 模型
-m 型号,--models 型号
要添加到要运行的列表中的模型名称
-n ncpus、--ncpus ncpus
要生成的线程数
TIDLRT (TI 深度学习运行时)
此致、
Chris
您好、Chris、
非常感谢。 我对这些分歧的理解比以前更清楚。
我还有一些其他问题。
我了解 OSRT 或 TIDLRT 将为 TI SoC 生成编译模型(在我的案例中为 TDA4VM J721e)。 (首先、我的理解是否正确?)
如果我要在 SoC 中执行推理、应该需要创建自定义 OpenVX 节点。 不同的运行时在创建此自定义节点时会在多大程度上有所不同? 如果在 RTOS SDK 中有使用 OSRT 和 TIDLRT 的不同示例、您能告诉我吗? 我已经在查找和分析"app_tidl_od_cam"源。
此致、
Daigo
尊敬的 Daigo:
在行中回答…
[Daigo]我了解 OSRT 或 TIDLRT 将为 TI SoC 生成编译的模型(在我的案例中为 TDA4VM J721e)。 (首先、我的理解是否正确?)
[CHRIS]是的、他们都愿意。 OSRT 将在 edgeai-tidl-tools/model-artifacts 和 TIDLRT 中具有输出网络和 IO 文件、您指定这些文件的目标位置。
[Daigo]如果我要在 SoC 中执行推理、应该需要创建一个自定义 OpenVX 节点。
[克里斯]只有当你想. 对于测试、 /opt/tidl_test 中有一个名为 TI_DEVICE_ARMv8_TEST_dl_algo_host_RT.out 的文件。 您可以在创建推理配置文件后运行它。
root@AM69-sk:/opt/tidl_test # ls -altr
共计182924
-rwxr-xr-x 1根根根160632 Mar 9 2018 TI_DEVICE_ARMv8_test_dl_algo_host_rt.out
drwxr-xr-x 28根根目录4096 May 6 18:14 ..
drwxr-xr-x 2根根目录4096 May 6 18:16。
-rw-r--r-- 1根 root 383 May 7 21:50 infer_evm.txt
示例(最小) 推理配置文件(推理文件的文档 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/tidl_j721e_08_02_00_11/ti_dl/docs/user_guide_html/md_tidl_sample_test.html ):
inFileFormat = 0
debugTraceLevel = 0
writeTraceLevel = 0
netBinFile =/opt/out/model_artifacts/my_model.bin
ioConfigFile =/opt/out/my_model.bin
outData ="/opt/out/evm_inference_output.bin "
inData ="/opt/tidl_test/my_input_data.bin "
numFrames = 1
[Daigo] 在创建此自定义节点时、不同的运行时在多大程度上会产生影响?
[CHRIS]我不明白您所说的"自定义节点"是什么意思。 如果您是指定制层、我建议您不要这样做、直到您对 TIDL 有更多的经验。
[Daigo] 如果在 RTOS SDK 中有使用 OSRT 和 TIDLRT 的不同示例、您能告诉我吗?
[CHRIS]是的、查看 edgeai-tidl-tools/examples/osrt_python/model_config.py。 所有这些都是示例应用。 例如、运行 RESNET 18模型、cd 到 edgeai-tidl-tools/examples/osrt_python/ort/。 然后运行:
编译
python3 ./onnxrt_ep.py -c -m cl-ort-resnet18-v1.
要运行:
python3 ./ onnxrt_ep.py -m cl-ort-resnet18-v1.
请按照 edgeai-tidl-tools 中的说明、首先设置 OSRT 环境。
[Daigo] 我已经在查找和分析"app_tidl_od_cam"源。
[CHRIS]最终、您将需要制定自己的应用程序、这是一个良好的开端。 最好先使用预构建的实用程序来测试模型。 有信心后、请迁移到您的应用程序、以免在模型创建中引入更多变量。
此致、
Chris
您好、Chris、
> [克里斯]我不明白你所说的"自定义节点"。 如果您是指定制层、我建议您不要这样做、直到您对 TIDL 有更多的经验。
这意味着 OpenVX 自定义节点。 如果我只想在独立的应用程序中运行推理、您介绍的测试应用程序就可以了。 但是、在我的用例中、我还需要在一个应用中运行推理和查看应用(如 SRV)。 (这与"app_tidl_avp4"样本类似)
因此、我认为在 ECU 中运行使用 OSRT 或使用 TIDLRT 编译的模型时、需要创建 OpenVX 自定义节点。 我的问题是、根据使用的模型结构和运行时、创建 OpenVX 节点的方法有多大不同? 如果我猜错了,我可以用 app_create_grap_tidl ()为任何模型创建一个 TIDL 节点吗?
此致、
Daigo