你怎么知道dnn支持的层?

Posted

技术标签:

【中文标题】你怎么知道dnn支持的层?【英文标题】:How can you know the layers supported by dnn? 【发布时间】:2020-11-01 20:05:06 【问题描述】:

我在 Tensorflow 中实现了一个神经网络。该网络非常简单,仅使用 Cov2D、MaxPooling 和 UpSampling2D。

规格如下:

Python:3.7 张量流:1.14.0 Keras:2.2.4-tf Ubuntu:18.04.4 LTS

网络经过训练后,我将其转换为 .pb,以便能够在 Windows PC 上从 OpenCV 和 C++ 读取它。

Windows 10 Opencv:3.4.0

但是当我在 C++ 上阅读 NN 时出现下一个错误:

cv::dnn::Net MODEL = cv::dnn::readNetFromTensorflow("SLI_model_64.pb");

up_sampling2d/Shape:Shape(conv2d_5/Relu)
out_type:[ ]
T:0
OpenCV Error: Unspecified error (Unknown layer type Shape in op up_sampling2d/Shape) in cv::dnn::experimental_dnn_v3::`anonymous-namespace'::TFImporter::populateNet, file c:\sdk\opencv\3.4.0\sources\modules\dnn\src\tensorflow\tf_importer.cpp, line 1487

据我所知,C++ 版本不支持 Upsamplig。你同意吗?怎么查?

【问题讨论】:

你能评论***.com/questions/53570257/… 【参考方案1】:

我无法查看 opencv dnn 支持的层,但如果将 opencv 更新到 4.2,问题就会消失。最有可能的是,opecv 3.4 不支持 UpSampling,这已针对 opencv 4.2 进行了更新。

【讨论】:

我正在使用 OpenCV(4.5.3) 并收到此错误:net = cv2.dnn.readNet(path2frozengraph) cv2.error: OpenCV(4.5.3) /tmp/pip-req-build -tjxnaiom/opencv/modules/dnn/src/tensorflow/tf_importer.cpp:1464: 错误: (-215:Assertion failed) scaleMat.type() == CV_32FC1 in function 'parseMul'

以上是关于你怎么知道dnn支持的层?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 4.2.0发布, DNN支持CUDA加速了!

opencv进阶-OpenCV DNN配置加速组件IE支持

OpenCV DNN 模块-风格迁移

OpenCV3.3深度学习模块(DNN)应用-图像分类

有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层?

OpenCV DNN之YOLO实时对象检测