opencv :: dnn中的神经网络输入大小

时间:2018-09-20 13:38:03

标签: c++ opencv

我想(动态)确定作为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");

我的问题是要从img_size中确定m_net。我猜想dnn::getLayersShapes应该是可行的,但是我不明白我的情况下第一个论点是什么。

我在这里给出了caffe模型的示例,但我也对能够使用tensorflow,darknet或火炬模型进行同样的操作感兴趣。

1 个答案:

答案 0 :(得分:0)

如果您打开caffe模型随附的“。prototext” 文件,则会显示所需的输入大小。 (除咖啡因模型外,没有使用过其他模型)

设置正确的输入大小是用户的责任,例如某些网络体系结构。完全连接的前馈网络需要精确大小的输入,而CNN这样的体系结构则不需要,并且可以在任意大小的输入图像上工作。

enter image description here