From 8ba64b14c57b3eea61f9f51dd23a3d35121c98b9 Mon Sep 17 00:00:00 2001 From: Daria Mityagina Date: Thu, 22 Jul 2021 19:56:55 +0300 Subject: [PATCH] [VPU] Added support for 2 axis for MVN layer - duplicate (#6748) * [VPU]Added support for 2 axis for MVN layer Co-authored-by: Polina --- inference-engine/cmake/vpu_dependencies.cmake | 6 +++--- .../src/vpu/graph_transformer/src/stages/mvn.cpp | 9 +++++++-- .../shared_tests_instances/single_layer_tests/mvn.cpp | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/inference-engine/cmake/vpu_dependencies.cmake b/inference-engine/cmake/vpu_dependencies.cmake index 3ecf93e0fb9..e6ec3799a3c 100644 --- a/inference-engine/cmake/vpu_dependencies.cmake +++ b/inference-engine/cmake/vpu_dependencies.cmake @@ -6,14 +6,14 @@ include_guard(GLOBAL) set(VPU_SUPPORTED_FIRMWARES usb-ma2x8x pcie-ma2x8x) set(VPU_SUPPORTED_FIRMWARES_HASH - "d55a824838accec31733e4d4c45e8774bdd5690da8beefe41360f1983476e3d0" - "61797a77b38fc677be4cc63d730e8871bbf169686b88eabb7066b01f9d156129") + "54a732b5fb17a0124652bc5113fa628c718a5af40621bca309471cb5ffd9271b" + "5750b2831c77ef54b8e243d3840c5ed1c9509681d55aee7e369d558cef628735") # # Default packages # -set(FIRMWARE_PACKAGE_VERSION 1714) +set(FIRMWARE_PACKAGE_VERSION 1717) set(VPU_CLC_MA2X8X_VERSION "movi-cltools-20.09.2") # diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp index ecd1ad965f6..2a757ab26e1 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/mvn.cpp @@ -48,10 +48,12 @@ private: void serializeParamsImpl(BlobSerializer& serializer) const override { auto normalize = attrs().get("normalize"); auto across_channels = attrs().get("across_channels"); + auto across_width = attrs().get("across_width"); auto eps = attrs().get("eps"); serializer.append(static_cast(normalize)); serializer.append(static_cast(across_channels)); + serializer.append(static_cast(across_width)); serializer.append(static_cast(eps)); } @@ -88,11 +90,13 @@ void FrontEnd::parseMVN(const Model& model, const ie::CNNLayerPtr& layer, const for (int i = 0; i < indicesSize; i++) { axes.insert(getDimFromAxis(ndims, indicesPtr[i])); } + const auto width = axes.count(Dim::W); - VPU_THROW_UNLESS(!axes.count(Dim::N) && axes.count(Dim::H) && axes.count(Dim::W), + VPU_THROW_UNLESS(!axes.count(Dim::N) && width, "Unsupported combination of indices in layer \"%s\". " - "Only across channel and full batch supported.", layer->name); + "Only across channel, width and full batch supported.", layer->name); const auto acrossChannels = axes.count(Dim::C) != 0; + const auto acrossWidth = width == 1 && axes.count(Dim::H) == 0; const auto normVariance = layer->GetParamAsBool("normalize_variance"); const auto eps = layer->GetParamAsFloat("eps"); @@ -104,6 +108,7 @@ void FrontEnd::parseMVN(const Model& model, const ie::CNNLayerPtr& layer, const auto stage = model->addNewStage(layer->name, StageType::MVN, layer, inputs, outputs); stage->attrs().set("normalize", normVariance); stage->attrs().set("across_channels", acrossChannels); + stage->attrs().set("across_width", acrossWidth); stage->attrs().set("eps", eps); } diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp index 2c78d5c6698..998a202b857 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/mvn.cpp @@ -15,6 +15,8 @@ const std::vector> indices_4D = { }; const std::vector> indices_3D = { + {2}, + {0, 2}, {1, 2}, // equivalent MVN-1 across_channel=0 {0, 1, 2} // equivalent MVN-1 across_channel=1 };