【发布时间】:2019-04-23 16:25:36
【问题描述】:
我想(动态地)确定预期作为深度神经网络模型输入的图像大小,该模型加载了 opencv 的 dnn 模块。例如,如果我加载一个 caffe 模型,我首先有:
cv::Mat img = imread("my_image.jpg");
cv::dnn::Net m_net;
m_net = cv::dnn::readNetFromCaffe("my_prototxt","my_model");
int img_size; // TODO how to determine it ?
cv::Mat blob = cv::dnn::blobFromImage(img, 1.0, cv::Size(img_size, img_size));
m_net.setInput(blob);
cv::Mat res = m_net.forward("layer_name");
我的问题是在这里从m_net 确定img_size。我想dnn::getLayersShapes 应该是可行的,但我不明白在我的情况下应该是第一个论点。
我在这里给出了一个 caffe 模型的例子,但我也有兴趣使用 tensorflow、darknet 或 torch 模型做同样的事情。
【问题讨论】:
-
thr 第二个参数。 MatShapes 的向量应该给你尺寸。可能第一个和第二个 int 将带有高度,第三个是通道数。但是我还没有测试过,所以尝试一下
-
感谢您的反馈。我的问题是我不知道
getLayersShapes的第一个参数应该是什么,而且我没有找到任何示例。我只想要信息,除了网络我应该提供什么? -
抱歉,必须自己测试一下。也许你可以看看opencv dnn源代码?
-
其实问题是
getLayersShapes似乎需要“网络输入层中的形状输入blob”......这正是我想要自动确定的!