Opencv DNN 网络 1x1 的大小
Posted
技术标签:
【中文标题】Opencv DNN 网络 1x1 的大小【英文标题】:Size of Opencv DNN Net 1x1 【发布时间】:2020-11-02 09:07:25 【问题描述】:我在 Tensorflow 中实现了一个神经网络来分割图像。该网络非常简单,仅使用 Cov2D、MaxPooling 和 UpSampling2D。
规格如下:
张量流:1.14.0 Keras:2.2.4-tf Ubuntu:18.04.4 LTS网络经过训练后,我将其转换为 .pb,以便能够在 Windows PC 上从 OpenCV 和 C++ 读取它。
Windows 10 Opencv:4.2.0我使用的 C++ 代码是:
cv::Mat imgOriginal = cv::imread(pathOriginal, 1);//1280x1024 image to segment.
#include <opencv2/dnn/dnn.hpp>
cv::dnn::Net MODEL = cv::dnn::readNetFromTensorflow("model.pb");//Load model.
MODEL.setInput(cv::dnn::blobFromImage(imgOriginal, 1/255., cv::Size(64, 64)));//Pass image to Net.
cv::Mat m = MODEL.forward();
cout << m.size();
Print Output: [1x1]
我不明白为什么输出是这个大小 [1x1]。我做错了什么?
【问题讨论】:
【参考方案1】:.forward() 之后需要一个中间步骤。一些风格会保留:
m = MODEL.forward();
cv::Mat detectionMat(m.size[2], m.size[3], CV_32FC1, m.ptr());
现在 detectionMat 具有正确的输出尺寸。
【讨论】:
以上是关于Opencv DNN 网络 1x1 的大小的主要内容,如果未能解决你的问题,请参考以下文章