【问题标题】:Why ONNX model reading is failing?为什么 ONNX 模型读取失败?
【发布时间】:2020-12-21 16:00:00
【问题描述】:

我正在使用 opencv cuda dnn 模块进行模型推理。使用 cv::dnn:: readNetFromONNX 读取我的 onnx 文件时,我收到以下消息。

Opencv(4.4.0-dev) 错误:未指定的错误(>(预期: 'shape.depth() == CV_32S') 其中 'shapes.depth()' 为 5 (CV_32FC1) 必须 等于 'CV_32S' 在 void_cdecl 中为 4 (CV_32SC1) cv::dnn::dnn4_v20200609::ONNXImporter::populateNet(类 cv::dnn::dnn4_v20200609::Net),文件 D:\opencv_test\newbuild\opencv-master\modules\dnn\src\onnx\innx_importer.cpp, 第 1442 行

这可能是什么原因?如果有人遇到类似问题并找到任何解决方案,请告诉我。 提前致谢。

【问题讨论】:

    标签: opencv onnx dotnetnuke


    【解决方案1】:

    您的输入 blob 类型必须是 CV_32SC1 (int) 而不是 CV_32FC1 (float)。

    【讨论】:

    • 感谢您的回复。实际上我在 'readNetFromONNX()' api 调用中遇到了错误。下面的 url 是代码,我使用了 readNetFromONNX 而不是使用'readNet',因为我正在阅读 .onnx 扩展文件。docs.opencv.org/3.4/d9/d8d/…
    • 您可以使用github.com/lutzroeder/netron工具检查模型和blob类型。或者把你的模型放在这里,我可以帮你。
    • 抱歉,由于某些限制,我无法提供我的 onnx 文件。所以我做了一些实验。实际上这个 onnx 模型转换为 SegNet 架构。我观察到的是网络架构中存在的这个“上采样层”正在造成问题。我能够在没有上采样层的情况下读取 onnx 文件。 Opencv dnn 是否支持上采样层?
    • 此问题已通过使用 conv2DTranspose 代替 SegNet 网络架构层的 Upsampling2D api 得到解决。谢谢。
    • 你能回答这个问题吗stackoverflow.com/questions/69633595/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多