Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Another cv::net.forward() problem

Hi everyone, I am trying to implement a object detector in ROS via OpenCV, However, in the step of forward(), I get always a mistake. The important parts of my code are:

cv::dnn::Net net;
    std::string path= ros::package::getPath("opencv_versuch_ros_tool");
    std::string path1=path+"/src/feed_network/opt_graph.pb";
    std::string path2=path+"/src/feed_network/graph.pbtxt";
    std::string pathImage=path+"/src/feed_network/audi.jpeg";
net=cv::dnn::readNetFromTensorflow(path1,path2);
    //ROS_INFO("%s\n",path1.data());
    cv::Mat image=cv::imread(pathImage);
    cv::Mat blob;
    blob=cv::dnn::blobFromImage(image,1.0/127.5,cvSize(300,300),127.5f,false);
    net.setInput(blob);
    cv::Mat outs=net.forward();

And when I execute it, I got:

OpenCV Error: Bad argument (PriorBox layer parameter does not contain min_size parameter.) in getParameter, file /builds/mrt-gbp/opencv/opencv/modules/dnn/src/layers/prior_box_layer.cpp, line 87
terminate called after throwing an instance of 'cv::Exception'
  what():  /builds/mrt-gbp/opencv/opencv/modules/dnn/src/layers/prior_box_layer.cpp:87: error: (-5) PriorBox layer parameter does not contain min_size parameter. in function getParameter

Aborted

I dont know if its a ROS problem, or from the network. However, I already used this network in a Python OpenCV program, and it worked, so I wouldnt say that's the problem.

I also already ran the optimize_for_inference.py like:

python optimize_for_inference.py --input frozen_inference_graph.pb --output
 opt_graph.pb --input_names image_tensor --output_names "num_detections,detection_scores,detection_boxes,detection_classes" --placeholder_type_enum 4 --frozen_graph

If someone know what is the problem, would be great, thanks!