ONNX 运行时报错 ORT_RUNTIME_EXCEPTION Ort::Exception 未经处理的异常

博客讲述了在使用ONNX模型进行推理时遇到的ORT_RUNTIME_EXCEPTION异常问题。作者在排查过程中发现,当Env对象作为局部变量而Session对象为全局变量时,初始化Session会导致异常。解决方案是将Env对象设为全局变量或者在头文件中定义空的Env对象。这个问题的解决对于遇到类似问题的开发者有参考价值。

1.运行报错

前段时候推理时遇到一个非常奇怪的bug,ONNX模型在运行时会报ORT_RUNTIME_EXCEPTION的异常:

2.错误排查

继续运行,断点看到是在Session.Run()的时候报错。

断点逐语句跟踪没有更多详情的信息,重新看了好几遍代码后都没有看出任何问题。于是去看其他能正常推理的代码, 参数和流程都一致,不知道哪里导致的问题。

只能推断Session对象是全局变量,类的构造函数中初始化后,在其它地方调用Session.Run()方法引起。

// <summary>
/// ONNX模型的初始化。
/// </summary>
/// <param name="modelFile">模型文件的绝对路径,可空,如果为空则从当前目录查找,默认文件名是model.onnx。</param>
/// <param name="threadNum">启用线程数</param>
ONNXDetect::ONNXDetect(std::string modelName, int threadNum) {

	string modelPathStr;
	if (!FindModel(modelName, modelPathStr))
		throw exception("未找到模型文件");
	 
	////初始化环境 
	Ort::Session
评论 24
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值