gpt4 book ai didi

c++ - OpenCV::dnn::readNet 抛出异常

转载 作者:行者123 更新时间:2023-12-05 04:25:38 25 4
gpt4 key购买 nike

我正在关注 this tutorial使用 OpenCV DNN 模块加载 yolov5*.onnx 模型并使用它进行推理。尝试加载模型时出现以下错误:

[ERROR:0@10.376] global E:\Libraries\C++\opencv_gpu\opencv_source\modules\dnn\src\onnx\onnx_importer.cpp (1021) cv::dnn::dnn4_v20220524::ONNXImporter::handleNode DNN/ONNX: ERROR during processing node with 1 inputs and 1 outputs: [Identity]:(onnx_node!Identity_0) from domain='ai.onnx' OpenCV(4.6.0-dev)

E:\Libraries\C++\opencv_gpu\opencv_source\modules\dnn\src\onnx\onnx_importer.cpp:1040: error: (-2:Unspecified error) in function 'cv::dnn::dnn4_v20220524::ONNXImporter::handleNode' > Node [Identity@ai.onnx]:(onnx_node!Identity_0) parse error: OpenCV(4.6.0-dev) E:\Libraries\C++\opencv_gpu\opencv_source\modules\dnn\src\layer.cpp:246: error: (-215:Assertion failed) inputs.size() in function 'cv::dnn::dnn4_v20220524::Layer::getMemoryShapes' >

重现错误的最少代码如下:

#include <iostream>
#include <fstream>

// openCV related includes
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;
using namespace cv::dnn;
using namespace cuda;

int main()
{
printCudaDeviceInfo(0);

// Load model.
Net net;
try
{
//net = readNet("yolov5s.onnx");
net = readNetFromONNX("yolov5s.onnx");
}
catch (cv::Exception& e)
{
cerr << endl << endl << e.msg << endl << endl; // output exception message
return -1;
}

return 0
}

我使用 CUDA/CuDNN 其他相关模块在 Windows 上使用 cmake 从源代码构建了 OpenCV。 (OpenCV 版本 4.6.0)。

为什么我会收到此异常?如何正确加载yoloonnx模型?

最佳答案

免责声明:除 C++ 外,我没有使用任何列出的技术的经验。

您看到的错误消息的最后一行

E:\Libraries\C++\opencv_gpu\opencv_source\modules\dnn\src\layer.cpp:246: error: (-215:Assertion failed) inputs.size() in function 'cv::dnn::dnn4_v20220524::Layer::getMemoryShapes' >

未能断言 inputs.size() 为非零。我认为这可能是由于您没有为 Net 对象设置输入。在您链接到的教程中,在第 4.3.4 节中,他们实现了一个辅助函数“pre_process”,它获取输入图像,将其转换为 blob,并将其设置为网。请参阅第 4.3.6 节,了解他们如何/在何处调用 main 函数中的 pre_process。除了您提供的最小可重现示例之外,您是否在遵循教程的那部分内容?

我对 ONNX 一无所知,因此如果您的输入是在您的 ONNX 文件中设置的,请将文件的主体添加到您的最小可重现示例中。

关于c++ - OpenCV::dnn::readNet 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73195979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com