diff --git a/modules/dnn/src/layers/elementwise_layers.cpp b/modules/dnn/src/layers/elementwise_layers.cpp index 8a0ddcdd75..3459734a08 100644 --- a/modules/dnn/src/layers/elementwise_layers.cpp +++ b/modules/dnn/src/layers/elementwise_layers.cpp @@ -579,7 +579,7 @@ struct SwishFunctor bool supportBackend(int backendId, int) { return backendId == DNN_BACKEND_OPENCV || - backendId == DNN_BACKEND_HALIDE; + backendId == DNN_BACKEND_HALIDE || backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH;; } void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const @@ -640,7 +640,8 @@ struct SwishFunctor #ifdef HAVE_DNN_NGRAPH std::shared_ptr initNgraphAPI(const std::shared_ptr& node) { - CV_Error(Error::StsNotImplemented, ""); + auto sigmoid = std::make_shared(node); + return std::make_shared(node, sigmoid); } #endif // HAVE_DNN_NGRAPH @@ -659,7 +660,7 @@ struct MishFunctor bool supportBackend(int backendId, int) { return backendId == DNN_BACKEND_OPENCV || - backendId == DNN_BACKEND_HALIDE; + backendId == DNN_BACKEND_HALIDE || backendId == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH; } void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const @@ -720,7 +721,13 @@ struct MishFunctor #ifdef HAVE_DNN_NGRAPH std::shared_ptr initNgraphAPI(const std::shared_ptr& node) { - CV_Error(Error::StsNotImplemented, ""); + float one = 1.0f; + auto constant = std::make_shared(ngraph::element::f32, ngraph::Shape{1}, &one); + auto exp_node = std::make_shared(node); + auto sum = std::make_shared(constant, exp_node, ngraph::op::AutoBroadcastType::NUMPY); + auto log_node = std::make_shared(sum); + auto tanh_node = std::make_shared(log_node); + return std::make_shared(node, tanh_node); } #endif // HAVE_DNN_NGRAPH diff --git a/modules/dnn/src/layers/prior_box_layer.cpp b/modules/dnn/src/layers/prior_box_layer.cpp index fd37004da3..c38e61329b 100644 --- a/modules/dnn/src/layers/prior_box_layer.cpp +++ b/modules/dnn/src/layers/prior_box_layer.cpp @@ -569,8 +569,10 @@ public: auto upper_bounds = std::make_shared(ngraph::element::i64, ngraph::Shape{1}, std::vector{4}); auto strides = std::make_shared(ngraph::element::i64, ngraph::Shape{1}, std::vector{1}); - auto slice_layer = std::make_shared(layer_shape, lower_bounds, upper_bounds, strides); - auto slice_image = std::make_shared(image_shape, lower_bounds, upper_bounds, strides); + auto slice_layer = std::make_shared(layer_shape, + lower_bounds, upper_bounds, strides, std::vector{}, std::vector{}); + auto slice_image = std::make_shared(image_shape, + lower_bounds, upper_bounds, strides, std::vector{}, std::vector{}); if (_explicitSizes) { diff --git a/modules/dnn/src/layers/slice_layer.cpp b/modules/dnn/src/layers/slice_layer.cpp index ea2562380f..d7cafd7f93 100644 --- a/modules/dnn/src/layers/slice_layer.cpp +++ b/modules/dnn/src/layers/slice_layer.cpp @@ -341,8 +341,9 @@ public: auto strides = std::make_shared(ngraph::element::i64, ngraph::Shape{dims.size()}, std::vector((int64_t)dims.size(), 1)); - auto slice = std::make_shared(ieInpNode, lower_bounds, upper_bounds, - strides, ngraph::AxisSet{}, ngraph::AxisSet{}); + auto slice = std::make_shared(ieInpNode, + lower_bounds, upper_bounds, strides, std::vector{}, std::vector{}); + return Ptr(new InfEngineNgraphNode(slice)); } #endif // HAVE_DNN_NGRAPH