From 94dd5d87a1d3a05a2289e309a77a3851d9ec2741 Mon Sep 17 00:00:00 2001 From: Narumol Prangnawarat Date: Wed, 23 Jan 2019 18:06:26 +0000 Subject: IVGCVSW-2555 Add no-op implementation for Detection PostProcess * Added DetectionPostProcessQueueDescriptor to WorkloadData * Added CreateDetectionPostProcess function in WorkloadFactory.hpp * Added stub implementation of the CreateDetectionPostProcess in workload factories * Added DetectionPostProcessLayer stub implementation * Added AddDetectionPostProcessLayer to Network * Added IsDetectionPostProcessSupported to LayerSupportBase Change-Id: Ifc071b3b6b12877c997bdcc43d769c8f891d5c6c --- src/backends/backendsCommon/LayerSupportBase.cpp | 8 ++++++++ src/backends/backendsCommon/LayerSupportBase.hpp | 5 +++++ src/backends/backendsCommon/WorkloadData.hpp | 5 +++++ src/backends/backendsCommon/WorkloadFactory.cpp | 12 ++++++++++++ src/backends/backendsCommon/WorkloadFactory.hpp | 3 +++ .../backendsCommon/test/IsLayerSupportedTestImpl.hpp | 2 ++ 6 files changed, 35 insertions(+) (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/LayerSupportBase.cpp b/src/backends/backendsCommon/LayerSupportBase.cpp index 75790dc61a..6358f6f0a8 100644 --- a/src/backends/backendsCommon/LayerSupportBase.cpp +++ b/src/backends/backendsCommon/LayerSupportBase.cpp @@ -116,6 +116,14 @@ bool LayerSupportBase::IsDepthwiseConvolutionSupported(const TensorInfo& input, return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); } +bool LayerSupportBase::IsDetectionPostProcessSupported(const armnn::TensorInfo& input0, + const armnn::TensorInfo& input1, + const armnn::DetectionPostProcessDescriptor& descriptor, + armnn::Optional reasonIfUnsupported) const +{ + return DefaultLayerSupport(__func__, __FILE__, __LINE__, reasonIfUnsupported); +} + bool LayerSupportBase::IsDivisionSupported(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, diff --git a/src/backends/backendsCommon/LayerSupportBase.hpp b/src/backends/backendsCommon/LayerSupportBase.hpp index c3acdcab7f..bf81459582 100644 --- a/src/backends/backendsCommon/LayerSupportBase.hpp +++ b/src/backends/backendsCommon/LayerSupportBase.hpp @@ -68,6 +68,11 @@ public: const Optional& biases, Optional reasonIfUnsupported = EmptyOptional()) const override; + bool IsDetectionPostProcessSupported(const TensorInfo& input0, + const TensorInfo& input1, + const DetectionPostProcessDescriptor& descriptor, + Optional reasonIfUnsupported = EmptyOptional()) const override; + bool IsDivisionSupported(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, diff --git a/src/backends/backendsCommon/WorkloadData.hpp b/src/backends/backendsCommon/WorkloadData.hpp index 2d68c9f7ee..e44eba71af 100644 --- a/src/backends/backendsCommon/WorkloadData.hpp +++ b/src/backends/backendsCommon/WorkloadData.hpp @@ -169,6 +169,11 @@ struct DepthwiseConvolution2dQueueDescriptor : QueueDescriptorWithParameters +{ + void Validate(const WorkloadInfo& workloadInfo) const; +}; + // Normalization layer workload data. struct NormalizationQueueDescriptor : QueueDescriptorWithParameters { diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index 38a2402297..cffb54841b 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -230,6 +230,18 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId, reason); break; } + case LayerType::DetectionPostProcess: + { + const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); + const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo(); + auto cLayer = boost::polymorphic_downcast(&layer); + const DetectionPostProcessDescriptor& descriptor = cLayer->GetParameters(); + result = layerSupportObject->IsDetectionPostProcessSupported(input0, + input1, + descriptor, + reason); + break; + } case LayerType::Equal: { const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo(); diff --git a/src/backends/backendsCommon/WorkloadFactory.hpp b/src/backends/backendsCommon/WorkloadFactory.hpp index dd47dd6e05..88833491b2 100644 --- a/src/backends/backendsCommon/WorkloadFactory.hpp +++ b/src/backends/backendsCommon/WorkloadFactory.hpp @@ -79,6 +79,9 @@ public: virtual std::unique_ptr CreateDepthwiseConvolution2d( const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const = 0; + virtual std::unique_ptr CreateDetectionPostProcess( + const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const = 0; + virtual std::unique_ptr CreateNormalization(const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const = 0; diff --git a/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp index 43c7581b8b..3df71830ca 100644 --- a/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp +++ b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp @@ -336,6 +336,8 @@ DECLARE_LAYER_POLICY_2_PARAM(Debug) DECLARE_LAYER_POLICY_2_PARAM(DepthwiseConvolution2d) +DECLARE_LAYER_POLICY_2_PARAM(DetectionPostProcess) + DECLARE_LAYER_POLICY_1_PARAM(Equal) DECLARE_LAYER_POLICY_2_PARAM(FakeQuantization) -- cgit v1.2.1