项目场景:
在进行Ultra-Fast-Lane-Detection-v2车道线检测算法部署的过程中,由于使用了不同版本的onnxruntime,导致了某些函数无法使用,需要进行替换!!!
onnxruntime1.8.0 低版本的编译时候错误可能更少一些!!!
问题描述
error: ‘struct Ort::Session’ has no member named ‘GetInputNameAllocated
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:
/home/l/Ultra-Fast-Lane-Detection-v2-opencv-onnxrun-main/onnxruntime/main.cpp: In constructor ‘Ultra_Fast_Lane_Detection_v2::Ultra_Fast_Lane_Detection_v2(std::string)’:
/home/l/Ultra-Fast-Lane-Detection-v2-opencv-onnxrun-main/onnxruntime/main.cpp:105:39: error: ‘struct Ort::Session’ has no member named ‘GetInputNameAllocated’
105 | auto temp_input_name = ort_session->GetInputNameAllocated(i, allocator);
| ^~~~~~~~~~~~~~~~~~~~~
/home/ls/Ultra-Fast-Lane-Detection-v2-opencv-onnxrun-main/onnxruntime/main.cpp:120:40: error: ‘struct Ort::Session’ has no member named ‘GetOutputNameAllocated’
120 | auto temp_output_name = ort_session->GetOutputNameAllocated(i, allocator);
| ^~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/UFLDV2.dir/build.make:76:CMakeFiles/UFLDV2.dir/main.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/UFLDV2.dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
原因分析:
由于安装了不同版本的onnxruntime,导致在模型部署的过程中有一定的小问题!!!
解决方案:
只需要找到对应版本的onnxruntime中拥有的函数既可以:
进行函数的替换
// 1.14.1
auto temp_input_name = ort_session->GetInputNameAllocated(i, allocator);
input_names.push_back(temp_input_name.get());
更换为:
//1.8.1
input_names.push_back(ort_session->GetInputName(i, allocator));
还有还有:
// 1.14.1
auto temp_output_name = ort_session->GetOutputNameAllocated(i, allocator);
std::cout << temp_output_name.get() << std::endl;
output_names.push_back(temp_output_name.get());
更换为
// 1.8.1
output_names.push_back(ort_session->GetOutputName(i, allocator));
欧克欧克,就这样就可以进行后续的操作了!!!
。