|
|
|
@ -110,14 +110,25 @@ public: |
|
|
|
|
virtual Ptr<BackendNode> initInfEngine(const std::vector<Ptr<BackendWrapper> >& inputs) CV_OVERRIDE |
|
|
|
|
{ |
|
|
|
|
#ifdef HAVE_INF_ENGINE |
|
|
|
|
InferenceEngine::DataPtr input = infEngineDataNode(inputs[0]); |
|
|
|
|
CV_Assert(!input->dims.empty()); |
|
|
|
|
#if INF_ENGINE_VER_MAJOR_GE(INF_ENGINE_RELEASE_2018R5) |
|
|
|
|
InferenceEngine::Builder::SplitLayer ieLayer(name); |
|
|
|
|
ieLayer.setOutputPorts({InferenceEngine::Port()}); |
|
|
|
|
InferenceEngine::Builder::Layer ieLayer(name); |
|
|
|
|
ieLayer.setName(name); |
|
|
|
|
if (preferableTarget == DNN_TARGET_MYRIAD) |
|
|
|
|
{ |
|
|
|
|
ieLayer.setType("Copy"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
ieLayer.setType("Split"); |
|
|
|
|
ieLayer.getParameters()["axis"] = input->dims.size() - 1; |
|
|
|
|
ieLayer.getParameters()["out_sizes"] = input->dims[0]; |
|
|
|
|
} |
|
|
|
|
ieLayer.setInputPorts(std::vector<InferenceEngine::Port>(1)); |
|
|
|
|
ieLayer.setOutputPorts(std::vector<InferenceEngine::Port>(1)); |
|
|
|
|
return Ptr<BackendNode>(new InfEngineBackendNode(ieLayer)); |
|
|
|
|
#else |
|
|
|
|
InferenceEngine::DataPtr input = infEngineDataNode(inputs[0]); |
|
|
|
|
CV_Assert(!input->dims.empty()); |
|
|
|
|
|
|
|
|
|
InferenceEngine::LayerParams lp; |
|
|
|
|
lp.name = name; |
|
|
|
|
lp.type = "Split"; |
|
|
|
|