diff --git a/inference-engine/cmake/vpu_dependencies.cmake b/inference-engine/cmake/vpu_dependencies.cmake index d134c291718..3ecf93e0fb9 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 - "420b300d193f7fcfe7e3f9bbec6c247d65b784a500b5cd2effb7cb1ec6e1b209" - "bfe3caf270b168b9de18ef88f04bde3907d7d12a679f1fa7cc580423c35db637") + "d55a824838accec31733e4d4c45e8774bdd5690da8beefe41360f1983476e3d0" + "61797a77b38fc677be4cc63d730e8871bbf169686b88eabb7066b01f9d156129") # # Default packages # -set(FIRMWARE_PACKAGE_VERSION 1688) +set(FIRMWARE_PACKAGE_VERSION 1714) set(VPU_CLC_MA2X8X_VERSION "movi-cltools-20.09.2") # diff --git a/inference-engine/src/legacy_api/include/legacy/ie_layers.h b/inference-engine/src/legacy_api/include/legacy/ie_layers.h index e7ea32467a0..64fa501966a 100644 --- a/inference-engine/src/legacy_api/include/legacy/ie_layers.h +++ b/inference-engine/src/legacy_api/include/legacy/ie_layers.h @@ -1025,7 +1025,8 @@ public: Logical_OR, Logical_XOR, Logical_NOT, - Mean + Mean, + Abs, }; /** diff --git a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp index 4c5601a32e5..d338e557e79 100644 --- a/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp +++ b/inference-engine/src/vpu/common/src/ngraph/transformations/dynamic_to_static_shape.cpp @@ -127,6 +127,7 @@ const Transformations& getDefaultTransformations() { {ngraph::opset3::Exp::type_info, dynamicToStaticUnaryElementwise}, {ngraph::opset3::Sqrt::type_info, dynamicToStaticUnaryElementwise}, {ngraph::opset3::LogicalNot::type_info, dynamicToStaticUnaryElementwise}, + {ngraph::opset3::Abs::type_info, dynamicToStaticUnaryElementwise}, {ngraph::opset5::ScatterElementsUpdate::type_info, dynamicToStaticUnaryElementwise}, {ngraph::opset3::StridedSlice::type_info, dynamicToStaticShapeStridedSlice}, {ngraph::opset3::Squeeze::type_info, dynamicToStaticShapeSqueeze}, diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp index c09ef094743..3ca16e6525d 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/frontend/frontend.hpp @@ -162,6 +162,7 @@ public: void parseCeiling(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; void parseRound(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; void parseCTCGreedyDecoderSeqLen(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; + void parseAbs(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; // // Special layers diff --git a/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp b/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp index 433c3b9f77d..6cd767b13d5 100644 --- a/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp +++ b/inference-engine/src/vpu/graph_transformer/include/vpu/model/stage.hpp @@ -177,6 +177,7 @@ VPU_DECLARE_ENUM(StageType, GatherElements = 139, Round = 140, CTCGreedyDecoderSeqLen = 141, + Abs = 142, ) // diff --git a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp index c53a729651c..ba3888dea28 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp @@ -156,6 +156,7 @@ FrontEnd::FrontEnd(StageBuilder::Ptr stageBuilder, const std::shared_ptrtype() != StageType::Logical_AND && eltwiseStage->type() != StageType::Logical_OR && eltwiseStage->type() != StageType::Logical_XOR && - eltwiseStage->type() != StageType::Logical_NOT) { + eltwiseStage->type() != StageType::Logical_NOT && + eltwiseStage->type() != StageType::Abs) { continue; } diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp index 7f666964414..a9fba166246 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/activation.cpp @@ -16,9 +16,18 @@ void FrontEnd::parseLogicalNot(const Model &model, const ie::CNNLayerPtr &layer, parseEltwise(model, res, inputs, outputs); } +void FrontEnd::parseAbs(const Model &model, const ie::CNNLayerPtr &layer, const DataVector &inputs, const DataVector &outputs) const { + LayerParams params = {layer->name, "Eltwise", layer->precision}; + auto res = std::make_shared(params); + res->_operation = InferenceEngine::EltwiseLayer::Abs; + + parseEltwise(model, res, inputs, outputs); +} + void FrontEnd::parseActivation(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const { const ie::details::caseless_map activationParsers { {"not", LAYER_PARSER(parseLogicalNot)}, + {"abs", LAYER_PARSER(parseAbs)}, }; const auto type = layer->GetParamAsString("type"); diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp index 741b8439281..4c055afaacd 100644 --- a/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/stages/eltwise.cpp @@ -72,6 +72,7 @@ static const std::map{DataType::FP16}; if (stageTypesWhichSupportS32.count(operation)) { @@ -264,7 +266,7 @@ void FrontEnd::parseEltwise(const Model& model, const ie::CNNLayerPtr& _layer, c DataVector tempInputs(3); tempInputs[0] = inputs[0]; - if (stageType == StageType::Logical_NOT) + if (stageType == StageType::Logical_NOT || stageType == StageType::Abs) tempInputs[1] = model->addFakeData(); else tempInputs[1] = inputs[1]; diff --git a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp index 7fff88eb0bb..b9ea78f7d7d 100644 --- a/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/myriad/shared_tests_instances/single_layer_tests/activation.cpp @@ -16,6 +16,7 @@ const std::vector netPrecisions = { }; const std::map>> activationTypes = { + {Abs, {}}, {Sigmoid, {}}, {Tanh, {}}, {Relu, {}},