工具/软件:
当我onnxrt_ep.py在 YOLOv8s ONNX 上运行时,我会收到不支持的运算符消息。
使用-o(优化)、可以自动处理 MaxPool、但不转换子节点。
如果我手动重写 Sub(以满足 TIDL 约束)、则模型会编译、但在目标板上、所有假设都变为 0(类 ID 崩溃)、因此检测毫无用处。
[编译我的原始(未修改)模型时显示日志]

我的环境
-
SoC / SDK:适用于 EdgeAI 的处理器 SDK Linux 10_00_00_08
-
edgeai-tidl-tools:10_00_08_00
-
型号:YOLOv8、自定义 3 类
-
导出:ONNX OPSET 12、输入形状[1,3,800,800]
-
OnnxRuntime(主机和目标):1.14
-
命令:
python3 examples/osrt_python/ort/onnxrt_ep.py(带/不带)-o
我尝试过的
-
-o优化onnxrt_ep.py:-
MaxPool已转换(正常) -
Sub保持不变 (NG)
-
-
我实施了一项手动图形手术、
Sub(x, const)用代替Add(x, neg_const)并尝试折叠形状以符合“数字或 1D 矢量(只有一个 DIM > 1)“规则。-
在此之后、 编译成功 。
-
但在目标上、 所有的知心都是零 (即使框在图像顶部绘制)。
-
-
使用 ONNX 形状推理验证形状、删除重复初始化程序、并使用主机上的 ORT 验证 CPU 推理。
-
主机 ORT 运行后不会发生崩溃、但 得分在目标上保持为 0 。
-
我的问题
-
edgeai-tidl-tools 或 edgeai-tensorlab 中是否有官方/已知安全的变换(脚本/标志)、用于将有问题的子节点转换为 TIDL 友好形式(例如,添加+负常数或其他标准化)、专门用于 YOLOv8 标头/后处理?
-
TI 是否提供参考通道来在 Sub/Div 上强制实施 TIDL 约束(“const 必须是数字或 1D 向量;只有一个 DIM > 1“、“no variable-variable Sub“)?
-
如果是、它在哪里(模块/功能名称以及如何使用启用它)
onnxrt_ep.py -o?
-
-
在 YOLOv8 磁头中更改子模块会中断预期的 FSG OD 元架构对齐,从而在运行时消除置信度的已知缺陷吗?
-
是否有检查清单来验证 HEAD 输出(订单/比例/激活、如 Sigmoid)仍然是 TIDL 的预期格式?
-
-
对于该 SDK/工具链 (10_00_00_08/10_00_08_00)、OLPET 12 是 YOLOv8 的建议导出选项、还是应该使用不同的选项进行导出以避免 TIDL 无法重写的子模式?
-
如果没有自动通过、您能否分享一个不会破坏 YOLO 分数的合法 Sub→ADD (MUL) 重写的最小示例(前后节点模式,允许的形状)?
- 另外、您能否让我知道如何正确修改或创建
prototxt与我的自定义 YOLOv8s(3 类)模型匹配的文件?
我附上了一个 zip 文件、其中包含我的.onnx模型供您参考。