aboutsummaryrefslogtreecommitdiff
path: root/src/armnn
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-02-04 11:46:26 +0000
committerNina Drozd <nina.drozd@arm.com>2019-02-08 10:07:20 +0000
commit6d302bfb568962f3b6b6f012b260ce54f22d36a0 (patch)
tree86147d527e36751392539f363e5aa702e49f2fc7 /src/armnn
parent61980d472006abdf3778d23903fb3bec5916f1f2 (diff)
downloadarmnn-6d302bfb568962f3b6b6f012b260ce54f22d36a0.tar.gz
IVGCVSW-2559 End to end tests for Detection PostProcess
* end to end tests for Detection PostProcess float and uint8 * add anchors to AddDetectionPostProcessLayer * add anchors to VisitDetectionPostProcessLayer * refactor code Change-Id: I3c5a9a4a60b74c2246b4a27692bbf3c235163f90 Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Diffstat (limited to 'src/armnn')
-rw-r--r--src/armnn/LayerVisitorBase.hpp1
-rw-r--r--src/armnn/Network.cpp8
-rw-r--r--src/armnn/Network.hpp1
-rw-r--r--src/armnn/layers/DetectionPostProcessLayer.cpp8
-rw-r--r--src/armnn/test/TestLayerVisitor.hpp1
5 files changed, 15 insertions, 4 deletions
diff --git a/src/armnn/LayerVisitorBase.hpp b/src/armnn/LayerVisitorBase.hpp
index 3b6a2ff578..641ca31e2d 100644
--- a/src/armnn/LayerVisitorBase.hpp
+++ b/src/armnn/LayerVisitorBase.hpp
@@ -57,6 +57,7 @@ public:
virtual void VisitDetectionPostProcessLayer(const IConnectableLayer*,
const DetectionPostProcessDescriptor&,
+ const ConstTensor&,
const char*) { DefaultPolicy::Apply(); }
virtual void VisitFullyConnectedLayer(const IConnectableLayer*,
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 7897a81d1e..5c70003785 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -648,9 +648,13 @@ IConnectableLayer* Network::AddDepthwiseConvolution2dLayer(
}
IConnectableLayer* Network::AddDetectionPostProcessLayer(const armnn::DetectionPostProcessDescriptor& descriptor,
- const char* name)
+ const ConstTensor& anchors, const char* name)
{
- return m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
+ const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
+
+ layer->m_Anchors = std::make_unique<ScopedCpuTensorHandle>(anchors);
+
+ return layer;
}
IConnectableLayer* Network::AddPermuteLayer(const PermuteDescriptor& permuteDescriptor,
diff --git a/src/armnn/Network.hpp b/src/armnn/Network.hpp
index 4239ac5ba4..66fb240979 100644
--- a/src/armnn/Network.hpp
+++ b/src/armnn/Network.hpp
@@ -59,6 +59,7 @@ public:
IConnectableLayer* AddDetectionPostProcessLayer(
const DetectionPostProcessDescriptor& descriptor,
+ const ConstTensor& anchors,
const char* name = nullptr) override;
IConnectableLayer* AddFullyConnectedLayer(const FullyConnectedDescriptor& fullyConnectedDescriptor,
diff --git a/src/armnn/layers/DetectionPostProcessLayer.cpp b/src/armnn/layers/DetectionPostProcessLayer.cpp
index 3eea198f90..289cee0bd7 100644
--- a/src/armnn/layers/DetectionPostProcessLayer.cpp
+++ b/src/armnn/layers/DetectionPostProcessLayer.cpp
@@ -24,12 +24,15 @@ std::unique_ptr<IWorkload> DetectionPostProcessLayer::CreateWorkload(const armnn
const armnn::IWorkloadFactory& factory) const
{
DetectionPostProcessQueueDescriptor descriptor;
+ descriptor.m_Anchors = m_Anchors.get();
return factory.CreateDetectionPostProcess(descriptor, PrepInfoAndDesc(descriptor, graph));
}
DetectionPostProcessLayer* DetectionPostProcessLayer::Clone(Graph& graph) const
{
- return CloneBase<DetectionPostProcessLayer>(graph, m_Param, GetName());
+ auto layer = CloneBase<DetectionPostProcessLayer>(graph, m_Param, GetName());
+ layer->m_Anchors = m_Anchors ? std::make_unique<ScopedCpuTensorHandle>(*m_Anchors) : nullptr;
+ return std::move(layer);
}
void DetectionPostProcessLayer::ValidateTensorShapesFromInputs()
@@ -72,7 +75,8 @@ Layer::ConstantTensors DetectionPostProcessLayer::GetConstantTensorsByRef()
void DetectionPostProcessLayer::Accept(ILayerVisitor& visitor) const
{
- visitor.VisitDetectionPostProcessLayer(this, GetParameters(), GetName());
+ ConstTensor anchorTensor(m_Anchors->GetTensorInfo(), m_Anchors->GetConstTensor<void>());
+ visitor.VisitDetectionPostProcessLayer(this, GetParameters(), anchorTensor, GetName());
}
} // namespace armnn
diff --git a/src/armnn/test/TestLayerVisitor.hpp b/src/armnn/test/TestLayerVisitor.hpp
index 5775df0e61..6b9503291a 100644
--- a/src/armnn/test/TestLayerVisitor.hpp
+++ b/src/armnn/test/TestLayerVisitor.hpp
@@ -61,6 +61,7 @@ public:
virtual void VisitDetectionPostProcessLayer(const IConnectableLayer* layer,
const DetectionPostProcessDescriptor& descriptor,
+ const ConstTensor& anchors,
const char* name = nullptr) {};
virtual void VisitFullyConnectedLayer(const IConnectableLayer* layer,