diff --git a/inference-engine/cmake/vpu_dependencies.cmake b/inference-engine/cmake/vpu_dependencies.cmake index 1485a277a0f..75a0325c641 100644 --- a/inference-engine/cmake/vpu_dependencies.cmake +++ b/inference-engine/cmake/vpu_dependencies.cmake @@ -19,7 +19,7 @@ set(VPU_SUPPORTED_FIRMWARES usb-ma2450 usb-ma2x8x pcie-ma248x) # Default packages # -set(FIRMWARE_PACKAGE_VERSION 1430) +set(FIRMWARE_PACKAGE_VERSION 1440) set(VPU_CLC_MA2X8X_VERSION "movi-cltools-20.09.1") # 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 3cddc334e25..2a78093cb43 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 @@ -156,6 +156,7 @@ public: void parseSwish(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; void parseActivation(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; void parseLogicalNot(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const; + void parseHSwish(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 da7b73a9586..f8119f3bb08 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 @@ -171,6 +171,7 @@ VPU_DECLARE_ENUM(StageType, StridedSlice = 133, SoftPlus = 134, Swish = 135, + HSwish = 137, ) // 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 f24125a5269..110eab4f04d 100644 --- a/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp +++ b/inference-engine/src/vpu/graph_transformer/src/frontend/frontend.cpp @@ -128,6 +128,7 @@ FrontEnd::FrontEnd(StageBuilder::Ptr stageBuilder, const ie::ICore* core) {"SoftPlus", LAYER_PARSER(parseSoftPlus)}, {"Swish", LAYER_PARSER(parseSwish)}, {"Activation", LAYER_PARSER(parseActivation)}, + {"HSwish", LAYER_PARSER(parseHSwish)}, }} { VPU_THROW_UNLESS(_core != nullptr, "Argument core is null"); } @@ -153,7 +154,8 @@ ie::ICNNNetwork::Ptr FrontEnd::convertNetwork(ie::ICNNNetwork& network) { const bool casesWithDynamicOrStaticUsage = std::dynamic_pointer_cast(node) || std::dynamic_pointer_cast(node) || - std::dynamic_pointer_cast(node); + std::dynamic_pointer_cast(node) || + std::dynamic_pointer_cast(node); const bool casesWithOnlyDynamicUsage = (std::dynamic_pointer_cast(node) || @@ -177,6 +179,7 @@ ie::ICNNNetwork::Ptr FrontEnd::convertNetwork(ie::ICNNNetwork& network) { manager.register_pass(); manager.register_pass(); manager.register_pass(); + manager.set_callback(transformationsPredicate); manager.run_passes(nGraphFunc); diff --git a/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp b/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp new file mode 100644 index 00000000000..88e30ba6756 --- /dev/null +++ b/inference-engine/src/vpu/graph_transformer/src/stages/hswish.cpp @@ -0,0 +1,38 @@ +// Copyright (C) 2020 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include +#include + +namespace vpu { + +namespace { + +class HSwishStage final : public PostOpStage { +public: + using PostOpStage::PostOpStage; + +private: + StagePtr cloneImpl() const override { + return std::make_shared(*this); + } + + void serializeParamsImpl(BlobSerializer&) const override { + } +}; + +} // namespace + +void FrontEnd::parseHSwish(const Model& model, const ie::CNNLayerPtr& layer, const DataVector& inputs, const DataVector& outputs) const { + VPU_THROW_UNLESS((inputs.size() == 1), + "HSwish stage with name {} must have only 1 input, " + "actually provided {}", layer->name, inputs.size()); + VPU_THROW_UNLESS(outputs.size() == 1, + "HSwish stage with name {} must have only 1 output, " + "actually provided {}", layer->name, outputs.size()); + + model->addNewStage(layer->name, StageType::HSwish, layer, inputs, outputs); +} + +} // namespace vpu 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 3adbc720288..8128f3ae7e9 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 @@ -24,7 +24,8 @@ const std::map>> activationTypes {Gelu, {}}, {Mish, {}}, {SoftPlus, {}}, - {Swish, {{0.05f}, {0.8f}, {1.0f}, {15.0f}}} + {Swish, {{0.05f}, {0.8f}, {1.0f}, {15.0f}}}, + {HSwish, {}}, }; std::map, std::vector>> basic = {