From 15d63e2ec45a244bd8c7d913d834aa5cab46a807 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Fri, 26 Jul 2019 16:59:35 +0100 Subject: IVGCVSW-3582 Fix Skipped Pooling Hal 1.2 Tests Signed-off-by: Sadik Armagan Change-Id: I9f9d11b19de591ec8936822ca229b4090ed318fe --- 1.2/HalPolicy.cpp | 27 ++++++++++++++++++++++++--- 1.2/HalPolicy.hpp | 6 ++++++ 2 files changed, 30 insertions(+), 3 deletions(-) (limited to '1.2') diff --git a/1.2/HalPolicy.cpp b/1.2/HalPolicy.cpp index 7515eb3e..9cad29fa 100644 --- a/1.2/HalPolicy.cpp +++ b/1.2/HalPolicy.cpp @@ -25,7 +25,6 @@ bool HandledByV1_0(V1_2::OperationType operationType) switch (static_cast(operationType)) { case V1_0::OperationType::ADD: - case V1_0::OperationType::AVERAGE_POOL_2D: case V1_0::OperationType::CONCATENATION: case V1_0::OperationType::DEPTH_TO_SPACE: case V1_0::OperationType::DEQUANTIZE: @@ -34,12 +33,10 @@ bool HandledByV1_0(V1_2::OperationType operationType) case V1_0::OperationType::FULLY_CONNECTED: case V1_0::OperationType::HASHTABLE_LOOKUP: case V1_0::OperationType::L2_NORMALIZATION: - case V1_0::OperationType::L2_POOL_2D: case V1_0::OperationType::LOCAL_RESPONSE_NORMALIZATION: case V1_0::OperationType::LOGISTIC: case V1_0::OperationType::LSH_PROJECTION: case V1_0::OperationType::LSTM: - case V1_0::OperationType::MAX_POOL_2D: case V1_0::OperationType::MUL: case V1_0::OperationType::RESHAPE: case V1_0::OperationType::RNN: @@ -131,10 +128,16 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, switch (operation.type) { + case V1_2::OperationType::AVERAGE_POOL_2D: + return ConvertAveragePool2d(operation, model, data); case V1_2::OperationType::CONV_2D: return ConvertConv2d(operation, model, data); case V1_2::OperationType::DEPTHWISE_CONV_2D: return ConvertDepthwiseConv2d(operation, model, data); + case V1_2::OperationType::L2_POOL_2D: + return ConvertL2Pool2d(operation, model, data); + case V1_2::OperationType::MAX_POOL_2D: + return ConvertMaxPool2d(operation, model, data); case V1_2::OperationType::MAXIMUM: return ConvertMaximum(operation, model, data); case V1_2::OperationType::MINIMUM: @@ -167,6 +170,12 @@ bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, } } +bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data) +{ + ALOGV("hal_1_2::HalPolicy::ConvertAveragePool2d()"); + return ConvertPooling2d(operation, __func__, armnn::PoolingAlgorithm::Average, model, data); +} + bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data) { ALOGV("hal_1_2::HalPolicy::ConvertConv2d()"); @@ -485,6 +494,18 @@ bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& return SetupAndTrackLayerOutputSlot(operation, 0, *endLayer, model, data); } +bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data) +{ + ALOGV("hal_1_2::HalPolicy::ConvertL2Pool2d()"); + return ConvertPooling2d(operation, __func__, armnn::PoolingAlgorithm::L2, model, data); +} + +bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data) +{ + ALOGV("hal_1_2::HalPolicy::ConvertMaxPool2d()"); + return ConvertPooling2d(operation, __func__, armnn::PoolingAlgorithm::Max, model, data); +} + bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data) { ALOGV("hal_1_2::HalPolicy::ConvertMaximum()"); diff --git a/1.2/HalPolicy.hpp b/1.2/HalPolicy.hpp index d11ae3ca..f689613f 100644 --- a/1.2/HalPolicy.hpp +++ b/1.2/HalPolicy.hpp @@ -31,10 +31,16 @@ public: static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data); private: + static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data); + static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data); static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data); + static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data); + + static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data); + static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data); static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data); -- cgit v1.2.1