ONNX 模型导出:算子支持与数值一致性

导出成功后部署结果变化,需要核对算子、输入和后处理,而非只看文件可加载。

edyang · 2024-02-23

导出成功后部署结果变化,需要核对算子、输入和后处理,而非只看文件可加载。

静态或动态尺寸、算子版本与运行后端影响执行,输出顺序也可能改变。数值误差要联系最终任务判断,不只逐元素相等。

ONNX 模型导出:算子支持与数值一致性:处理路径与验证条件

一、问题的范围与前提

成像质量、数据分布、算法与业务判断各自有条件。清晰图像提供可观察细节,模型和规则解释输入,业务层决定结果如何使用。视野、曝光、颜色、姿态与输入尺度变化,都可能在模型参数不变时改变结果。

二、技术分析与方案取舍

参考模型与导出模型使用同一输入,比较输出名称、形状、数值与后处理。动态batch或尺寸需符合声明,某些目标后端可能不支持导出算子。允许数值误差应联系实际任务,微小分数变化可能跨阈值改变结论。优化和量化分别作为新版本验证,不因ONNX文件能加载就宣布部署结果相同。

先固定输入和处理版本,保存必要中间产物,再比较单项变化。裁剪、缩放和配准要携带坐标关系,输出回到原图时检查尺度与偏移。数据按正常和困难条件分别组织,不把反光、遮挡或采集失败从报告中悄悄删掉。

三、实现与排查的顺序

  1. 固定参考模型输入。
  2. 核对导出配置。
  3. 比较中间最终输出。
  4. 测试目标设备后端。

按这个顺序保留中间结果,可以区分输入条件、处理过程和最终输出。前一阶段的条件不成立时,先解释对应错误,再继续后面的试验;单次返回成功不足以覆盖整条链路。

最小示例

1
2
3
固定模型、处理版本与阈值
保存每条样本的真实标签、预测和错误类别
按任务计算指标,并保留样本量与排除规则

分类、检测和异常任务分母及指标不同。阈值曲线和某个工作点的现场误报漏检不互换,目标数字不作为已测结果。

四、验证和结果解释

独立样本应覆盖预期工况,逐条预测与错误图支持复盘。分类、检测、定位和异常任务使用各自指标定义,阈值工作点与曲线指标不能混用。性能同时记录冷启动、稳态、尾部耗时和资源峰值,不挑最快一张代表整套系统。

需要验证的结果 保留的对照 不能由此推出的结论
正常和边界样本一致 固定输入与配置、对应输出 一次成功代表所有条件成功
动态尺寸符合声明 中断前后状态与错误阶段 没有报错代表结果正确
不支持算子明确失败 恢复后的同条件复测 临时恢复代表根因已经消失

验证无目标、多候选、边界、遮挡和不同光照。没有有效观测时给出明确失败或待确认,不为每张图强行选一个目标。图像文件真实保存和完整解码也属于链路检查,热力图漂亮不能替代缺陷真值与业务验收。

五、适用边界与结论

导出不保证所有硬件加速,优化与量化另行验证。

这条路径把“固定参考模型输入”与“测试目标设备后端”连在一起,中间保留可复查的条件。实施时优先确认“正常和边界样本一致”,再检查“不支持算子明确失败”;两者都满足,才能在当前样本与配置范围内评价方案。设备、数据或软件版本改变以后,相关假设需要重新验证。

参考资料