ankit, may I understand your use-case better ? Please take a look at deployment_tools\inference_engine\samples\interactive_face_detection_demo. In this sample we detect faces and then pass detected boxes to the pre-trained emotion_detection networks (also, depending on a user’s needs ageGender, HeadPose and FacialLandmark recognition networks can also be used in the pipeline using intel pre-trained models).
I have refered the OpenVino documentation : computer_vision_sdk_2018.4.420/deployment_tools/documentation/docs/_docs_IE_DG_Integrate_with_customer_application_new_API.html
Optimal way for a cascade of networks (output of one network is input for another). Get output blob from the first request using InferenceEngine::InferRequest::GetBlob() and set it as input for the second request using InferenceEngine::InferRequest::SetBlob().
auto output = infer_request1->GetBlob(output_name);
In interactive_face_detection_demo, I have observed that the cropped face (output from face detection) cv::mat is used as input for successive models (geGender, HeadPose and FacialLandmark recognition networks).
In another example security_barrier_demo, the approach of make_shared_blob & ROI is used.
But nowhere i am able to find example for cascade of networks , where the above approach(Optimal way for a cascade of networks) is used.
Could you please share us an example.
Thanks in advance.
Hello Ankit. We don't have cascading demos. But you can still try and make it work or simply wait for a stable version in a near-term future release.
So if you are talking about cascade implementation exactly (when input blob of second network just points to output blob of first network to avoid unnecessary copies) then OpenVino does not have such demos... In this case input shape of second network must be equal to output shape of first network. But sometimes, if output size of first network is always fixed (e.g. not bounding boxes but something else) then before loading to a plugin you can just reshape second network to sizes of output from the first network. And then you can put 2 networks in cascade. `reshape()` method is described as a part of Shape Inference functionality. But please note that in R5 we don’t have complete implementation of ShapeInference feature. So, it’s possible that not all layers of the network will be able to be reshaped. And the reshape will fail. OpenVino plans to have more or less stable version in a future release.