C++ onnxruntime从12升级到14遇到的问题

问题

把libonnxruntime从12升级到14,遇到了一个编译问题GetInputName和GetOutputName找不到了

解决方法

原因是1.14中把 GetInputName改成了 GetInputNameAllocated, 返回值从char* 变成了AllocatedStringPtr(using Ort::AllocatedStringPtr = typedef std::unique_ptr<char, detail::AllocatedFree>
)。

std::vector<const char*> inputNodeNames; //
	std::vector<AllocatedStringPtr> inputNodeNameAllocatedStrings; // <-- newly added
	...

	auto inputNodesNum = session->GetInputCount();
	for (int i = 0; i < inputNodesNum; i++) {
		auto input_name = session->GetInputNameAllocated(i, allocator);
		inputNodeNameAllocatedStrings.push_back(std::move(input_name));
		inputNodeNames.push_back(inputNodeNameAllocatedStrings.back().get());
}

吐槽: 返回值变成unique_ptr这里就有个大坑,暂时没找好方法直接把指针内容取出来。

参考

ONNX Runtime是一个高性能的开源推理引擎,用于在各种硬件上执行机器学习模型。与OpenCV相比,ONNX Runtime具有更高的性能和更广泛的硬件支持。 要使用ONNX Runtime进行分割任务,您可以按照以下步骤操作: 1. 安装ONNX Runtime库:首先,您需要安装ONNX Runtime库。您可以通过在终端中运行适当的安装命令来完成此操作,具体取决于您使用的操作系统和硬件。 2. 加载和解析模型:在使用ONNX Runtime之前,您需要加载和解析分割模型。您可以使用ONNX Runtime的API来加载和解析ONNX模型文件。 3. 准备输入数据:在进行分割之前,您需要准备输入数据。通常,输入数据是图像,您可以使用常见的图像库(如PIL)或将图像读取为NumPy数组。 4. 运行推断:一旦加载模型并准备好输入数据,您可以使用ONNX Runtime的API来运行推断。这将对输入数据进行模型的前向传递,并生成分割结果。 5. 处理输出结果:最后,您可以根据需求处理和可视化分割的输出结果。您可以使用常见的图像处理库(如PIL)或将输出结果转换为NumPy数组进行后续处理和可视化。 总结来说,使用ONNX Runtime进行分割任务不需要使用OpenCV。您只需要加载和解析模型、准备输入数据、运行推断以及处理输出结果。ONNX Runtime提供了高性能和硬件支持,可以有效地执行机器学习模型,包括分割任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值