器件型号: TDA4VM
Thread 中讨论的其他器件: TDA4VH
如果脚本不可用、我是否可以获取已导入并部署在 TDA4 电路板上的原始 FastBEV ONNX 文件?
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
Thread 中讨论的其他器件: TDA4VH
您好、
我建议您使用 edgeai-tensorlab 来训练和导出模型。
https://github.com/TexasInstruments/edgeai-tensorlab
您可以在里面找到 fastbev 模型、
https://github.com/TexasInstruments/edgeai-tensorlab/tree/main/edgeai-mmdetection3d
该模型将具有一个适用于 TIDL 的经优化模型。
我能否获取已导入并部署在 TDA4 板上的原始 FastBEV ONNX 文件?
我们在最新的 11.2 SDK 中的 j784s4 (TDA4VH) 器件中启用了演示。 大家可以查看它。
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j784s4/11_02_00_06/exports/docs/vision_apps/docs/user_guide/group_apps_dl_demos_app_tidl_bev.html
该演示将包含编译后的工件。 您可以从 edgeai-tensorlab 存储库中生成 onnx 模型。
此致、
Gokul




你(们)好
根据 https://github.com/TexasInstruments/edgeai-tensorlab/tree/main/edgeai-mmdetection3d/projects_edgeai/FastBEV、我已成功地将 bev 模型转移到 onnx 文件 、但在 TIDL 导入中失败。上传的图像是错误和相关设置。有什么建议可以解决这个问题吗?
THs.
您好、
能否将 degg_level 设置为 2 并共享日志
您还可以尝试使用最新的 SDK 版本 11_02_04_00
我可以看到仍然不支持 2 层、您能在此处共享模型吗? 并参考 https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/od_meta_arch.md 并在编译期间添加 od_meta_arch。
此致、
Gokul
尊敬的 Gokul。
从客户上传模型。
e2e.ti.com/.../LH_5F00_BEV_5F00_files.zip
非常感谢!
Yong
尊敬的 Yong:
您分享的模型与 edgeai-tensorlab 中的模型不同,客户在哪里获得了模型,它是从原始 fastbev 存储库?
我将分享使用在 tda4 器件中验证的 fastbev 模型的步骤。
1.克隆 edgeai-tidl-tools、 https://github.com/TexasInstruments/edgeai-tidl-tools
2.结账到分公司 11_02_07_00,
cd edgeai-tidl-tools git checkout 11_02_07_00
3.按照文档 github.com/.../edgeai-tidl-tools 设置 edgeai-tidl-tools
4.下载模型和 prototxt 文件,
http://software-dl.ti.com/jacinto7/esd/modelzoo/11_02_00/models/vision/detection_3d/pandaset/mmdet3d/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.onnx
将下载的模型放入/edgeai-tidl-tools/runtimes/examples/data/models/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.onnx 中
将下载的文件放在 edgeai-tidl-tools/runtimes/examples/data/prototxt/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.prototxt 内
5.编辑 config.yaml 文件以添加 fastbev 模型,请参阅以下补丁
diff --git a/runtimes/examples/python/basic_example/config.yaml b/runtimes/examples/python/basic_example/config.yaml
index fc6e618..bcd3dcc 100644
--- a/runtimes/examples/python/basic_example/config.yaml
+++ b/runtimes/examples/python/basic_example/config.yaml
@@ -22,6 +22,20 @@ infer_options:
models:
# ONNX Models
+ fastbev:
+ path: ../../data/models/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.onnx
+ inputs: ../../data/inputs/fast_bev_valid_input.bin # add your custom input file here
+ compile_options:
+ "object_detection:meta_layers_names_list" : ../../data/prototxt/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.prototxt
+ "object_detection:meta_arch_type" : 7
+ pre_process_info:
+ input_mean : [123.675, 116.28, 103.53]
+ input_scale : [0.017125, 0.017507, 0.017429]
+ post_process_info:
+ task_type: "detection"
+ labels: ../../data/inputs/labels.txt
+ label_offset: 1
+ runtime: onnxrt
cl-ort-resnet18-v1:
path: ../../data/models/resnet18_opset9.onnx
inputs: ../../data/inputs/airshow.jpg
6.编译模型,
cd edgeai-tidl-tools/runtimes/examples/python/basic_example; python3 basic_example.py -m fastbev -c
此致、
Gokul
客户在哪里获得了模型、它是来自原始 fastbev 存储库
是的、我从原始 fasebev github repo,按照你的 edgeai-tensorlab fastbev 导出 onnx 代码,将原始的 pth bev 模型转换到 onnx
主要区别就在这里 
在 tidl_11_01_06_00 和 11_02_04_00 版本下。
希望得到解答和建议。
THs.
您好、
由于 osrt 模型的优化,凹板和整形之间的转置节点被移除,但移除后凹板的输出和整形的输入没有正确处理,这就是为什么存在未知的尺寸误差。
您能禁用 onnxruntime 优化吗?

在 if 条件中添加您的模型名称、或在 onnxrt_ep.py 内的第 70 行添加以下代码:
so.graph_optimization_level = RT.GraphOptimizationLevel.ORT_DISABLE_ALL
此致、
Gokul
你(们)好
在 edgeai-tidl-tools/examples/osrt_python/ort/onnxrt_ep.py 中、我已经尝试添加
您好、
[引述 userid=“434795" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6294002我已尝试添加
只添加这条线就应该起作用、
[引述 userid=“434795" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6294002在 if 条件下、必须从 model_config.py 文件中给出模型名称、
从 model_config.py 中提供相应的模型名称
这样、您应该可以解决不受支持的层、我使用的工具版本为 11_02_04_00

但我也面临这个错误、

这是因为一些中间层输出尺寸为 270MB、并且有 2-3 层输出需要此类存储器、这在 EVM 中是不现实的。 通常、我们在 EVM 中为暂存存储器分配 128 或 256MB。
您的模型占用更多内存的原因是您的输入是 24x3x256x704、我们仅使用 6x3x256x704 输入验证、这是该模型的 6 个输入图像。 在您的情况下,它的 24 个图像,我认为你正在尝试用 4 个批次进行批处理。 这需要更多的内存空间。 因此、我建议您删除批处理输入、然后为您的模型提供 6 个输入图像。
我仍然建议使用 edgeai-modelzoo 中提供的模型、该模型已在 tda4 器件上验证。
此致、
Gokul
你(们)好
我仍然不明白如何 在 if 条件下从 model_config.py 文件中给出模型名称,你能告诉我 如何用我的 onnx 模型添加模型名称吗?
与我的 同事讨论,24 图像训练的高精度,但现在是弱,无论什么 6 图像。似乎是时候让 edgeai-tidl-tools 设置来做 bev 训练和 onnx 导出
THs.
您好、
与我的 同事讨论,24 图像训练为高精度,但现在是弱,无论什么 6 图像。似乎是时候让 edgeai-tidl-tools 设置来执行 bev 训练和 onnx 导出[/报价]好的。
我仍然无法理解如何 在 if 条件下从 model_config.py 文件中给出模型名称、您能告诉我 如何使用我的 onnx 模型添加模型名称吗?我使用的是 11_02_04_00 工具、其中接口已更改为.yaml 文件、我已共享我的配置、
[quote userid=“637485" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6291621 编辑 config.yaml 文件以添加 fastbev 模型、请参阅以下补丁[/quote]能否共享您的 model_config.py 文件、我会为您指定正确的字符串以添加 if 条件。
此致、
Gokul
你(们)好
由于某些原因、我们目前无法使用 tidl11.2 版本进行工程师开发、但 tidl11.1.6.0 是我们正在开发的一款。
您能否共享您的 model_config.py 文件
我们使用 python onnxruntime 并将 tidl 设置为环境以执行 tidl 导入。 我发现您在 TI edgeai-tool 中使用 config.yaml、我所做的是 基于 原始导入程序 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_00_00_12/exports/docs/tidl_j7_08_00_00_10/ti_dl/docs/user_guide_html/md_tidl_model_import.html。 那么,你能给我一些关于 如何做进口商与我的 onnx 模型的建议吗?
THs.
您好、
由于某些原因、我们目前无法使用 tidl11.2 版本进行工程开发、但 tidl11.1.6.0 是我们正在开发的版本。
好的。
我仍然建议使用基于 python 的工具从 edgeai-tidl-tools 导入
无论如何、如果您要使用旧的导入方法、请按照步骤 4 从 edgeai-modelzoo 下载模型
4. 下载模型和 prototxt 文件、
然后参考以下配置文件并根据需要进行修改、
modelType = 2 numParamBits = 8 inElementType = 1 5 rawDataInElementType = 6 5 inputNetFile = "../../test/testvecs/models/public/onnx/fastbev_mod_pandaset_nms_r18_f1_256x704_20251215.onnx" outputNetFile = "../../test/testvecs/config/tidl_models/onnx/tidl_net_fast_bev.bin" outputParamsFile = "../../test/testvecs/config/tidl_models/onnx/tidl_io_fast_bev_" inDIM1 = 1 1 inDIM2 = 6 1 inWidth = 704 160000 inHeight = 256 1 inNumChannels = 3 1 inDataNamesList = "imgs, xy_coor" #outDataNamesList = "/Sigmoid_output_0, /Reshape_6_output_0, /Reshape_8_output_0" inData = "../../test/testvecs/largeInputs/fast_bev_valid_input.bin" inDataFormat = 1 inFileFormat = 1 metaArchType = 7 metaLayersNamesList = "../../test/testvecs/config/import/public/onnx/tidl_import_fast_bev_metaarch.prototxt" # 3d od post processing postProcDataId = 1 postProcType = 6
此致、
Gokul
你(们)好
我已经使用 tidl_11_01_06_00 将 onnx 模型转移到 bin、我想检查是否已正确转换。
您好、
s:subgraph_0_tidl_io_.qunat_stats_config.txt 是我用来测试具有单图像输入的输出箱的方式
不、这不是用于推理的配置文件。
模型输入需要 6 个图像 (6,3,256,704) 和 xy_Coors,我从来没有处理过。你能告诉我如何正确测试容器吗
您应该在编译期间给模型的输入正确吗? 然后、在 qunatisization 阶段、只有标度值会正确更新。

inData 文件指定输入数据。 如果使用 rawdatainput 格式、则将 6 个图像后跟 xy_Coors 存储在.bin 文件中、并在导入/推理过程中将该文件作为输入。 转储尺寸为 (6、3,256,704) 的 6 个帧、并转储尺寸合适的 xy_Coors。 您还应该 根据必须转储的情况检查 rawDataInElementType、如果 rawDataInElementType == 6 for images、那么它是 float32 类型的数据、因此转储的数据应该是 float32 类型、如果 rawDataInElementType == 5 for xy_Coors、则转储的数据应该是 int32 类型。
或者、如果使用基于 python 的工具、则可以将图像和 xy_Coors 加载为 NumPy 对象并将其提供给模型。 如果您有基于 python 的工具、则很容易、否则您必须生成.bin 文件以进行输入。
此致、
Gokul

你(们)好
我的 config.txt combined_data.bin 简单地生成了:

您好、
这是我的 config.txt combined_data.bin 生成简单:
好的。
的数据类型错误图层输入 3、8
根据错误 int32 位输入、为不受支持的 BatchNorm 层提供。 在模型中没有这样的层、但在编译过程中可能会添加该层以进行优化。
我怀疑您的 xy_Coors 维度为 240000 的原因、其中 edgeai 模式的维度为 160000。 但如果没有您的模型、我无法确认原因是否如此。 您可以通过查看此文件 subgraph_0_tidl_net.bin.html 来查看是否添加了任何 batchnorm 图层来共享您的最新模型或检查中间结果吗?
此外、如果 tidl 传输成功并生成 net.bin io.bin、如何测试这些区间是否适合 ro 推理?
您可以创建不同的 config.txt 进行推理、并使用以下配置作为推理参考、然后 使用该配置文件运行 PC_dsp_test_dl_algo.out。
netBinFile = "testvecs/config/tidl_models/onnx/tidl_net_fast_bev.bin" ioConfigFile = "testvecs/config/tidl_models/onnx/tidl_io_fast_bev_1.bin" outData = testvecs/output/fast_bev_out.bin inFileFormat = 1 inData = testvecs/largeInputs/fast_bev_valid_input.bin # add your input file here postProcType = 5
此致、
Gokul
您好、
是的、batchnorm 添加了 netlog.txt 如下
好的、不应该在数据作为 Int32 进入的开始处添加、或者应该在 batchnorm 层之前添加数据转换层。
您能分享一下您的模型、让我看看为什么要添加它。 也可以尝试添加数据服务器层。
此外、、我也在试用 TIdl_11.2、python3 basic_example.py -suffered、get bboxs.bin、labels.bin、scors.bin、这只是一个 onx 推理文件。 是否有任何方法可以进行诸如 PC_dsp_test_dl_algo.out config.txt 之类的推理?
此外、您已在 CONFIG.YAML 文件中添加了模型、并且可以通过将 debug_level 设置为 2 并在目标上启用远程内核日志(通过运行“source /opt/vision_apps/vision_apps_init.sh)来验证模型是否在 c7x 上运行
[quote userid=“637485" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6291621 编辑 config.yaml 文件以添加 fastbev 模型、请参阅以下补丁
这将从 c7x 打印推理日志、您可以使用这些日志来确认 c7x 上正在进行推理。
此外、在主机端、您还应该在设置调试级别后看到如下所示的一些推理日志。 
此致、
Gokul
你(们)好
您能否分享您的模型、让我看看为什么添加该模型
请参阅上传文件 fixte_fastbev_result202504091503_simple.onnx 是我正在使用的模型,
用于验证模型是否已完全编译的编译日志
fixedbevcompile(添加.log 以读取) 日志
REST 文件为 import config.txt 和 inference.txt、用于在 tidl 11.1 下进行 tidl 导入和推理
此外、tidl11.2 下的编译箱出乎意料地慢、慢 
int 这一步已经花了将近 8 个小时! 现在仍然没有完成。 任何参数都可以帮助加速这一过程吗? 配置如下所示


如果编译成功、如何测试 net.bin、io.bin 是否正确导入? 在 tidl11.1 下、我可以使用 PC_dsp_test_dl_algo.out s:config.txt 进行测试、但在 tidl 11.2 python envs 下、如何测试?python3 basic_example.py -assumed 似乎不是正确的方法、或者设置的配置是错误的。
希望收到您的 答复
THs.
您好、
请参阅上传文件、fixte_fastbev_result202504091503_simple.onnx 是我正在使用的模型、
让我检查一下并更新您。
int 这一步花了将近 8 个小时! 现在仍然没有完成。 任何参数都可以帮助加速这一过程吗? 配置显示在下方
这不会花费很长时间、您可以在编译时指定模型名称吗?
python3 basic_example.py -m fastbev -c“
如果编译成功、如何测试 net.bin、io.bin 是否正确导入? 在 tidl11.1 下、我可以使用 PC_dsp_test_dl_algo.out s:config.txt 进行测试、但在 tidl 11.2 python envs 下、如何测试?python3 basic_example.py -assumed 似乎不是正确的方法、或者我设置的配置是错误的。
成功编译后、在 推断选项中将 DEBUG_LEVEL 设置为 2

并运行、
“Python3 basic_example.py -m fastbev“
共享日志之后、日志应类似于使用 PC_dsp_test_dl_algo.out 测试模型的方式。
让我检查日志并确认推理是否正确进行。
此致、
Gokul
您好、
在这个推论中,如何设置 models.fastbev.path?编译为**.onnx,或者我应该使用 net.bin,io.bin ? 我认为是**.onnx 绝对不正确
您不必为 net.bin 和 io.bin 指定修补程序、您必须设置 onnx 路径本身。 因此、 每当您运行推理时、脚本将在运行时/examples/model-artifacts/fastbev/artifacts 内生成编译的工件、它将从该文件内获取 net.bin 和 io.bin。
我认为是**.onnx 绝对不正确
不、脚本的工作方式是这样的。 如果您仍有疑问、请尝试删除 runtimes/examples/model-artifacts/fastbev/artifacts 文件夹中的.bin 文件、并且您应该会在推断期间看到错误、即找不到文件。
[引述 userid=“637485" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6305558成功编译后、在 推断选项中将 DEBUG_LEVEL 设置为 2

并运行、
“Python3 basic_example.py -m fastbev“
您能尝试一下并共享日志吗?
此致、
Gokul
您好、
查看 fastbev_config 文件、似乎有与我分享的不同的配置、

、然后参考以下配置文件并根据您的要求进行修改、
此 inDataNorm 参数在输入中添加了 batchnorm 层、其中存在 int32 数据类型、当前不支持对 batchnorm 的 int32 位输入、因此从文件中删除此 config 参数并尝试再次编译。 在 preproc 节点中执行标准化、而不是使用此 batchnorm 图层。
无论如何、我将生成一个内部 Jira、以便在导入阶段报告此错误。
此致、
Gokul
您好、
我这边也需要更多时间、
如果您只想检查模型是否正在成功编译、则可以将 CALIBRATION_FRAMES 和 CALIBRATION_ITEDIations 减少为 1。 这可能会影响精度、但您可以确认模型在硬件中运行良好。

这将使模型编译速度更快、但不建议在最终部署中使用。 一旦您知道模型成功编译和运行且没有任何问题、则增加 CALIBRATION_FRAME 和迭代、并使其编译更长的持续时间。
此致、
Gokul
edgeai-modelzoo 中的 fastbev 模型、如上一篇回复中所述
模型在几分钟内编译得非常快、
[报价 userid=“637485" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1625537/tda4vm-fastbev-model-application-and-it-s-onnx-file-usage/6311896 ] calibration_frames 和 calibration_iterations to 1这仍然花费了将近 4 个小时,不管怎样,它比 10 个小时前更好。
我将尝试使用 edgeai-tensorlab 通过 nuscens 数据集训练 fastbev。
TIDL11.1 经过编译和参考后也取得了成功、汇编时间不到 20 分钟。
THs.