ArmNN
 21.02
RefDetectionPostProcessWorkload Class Reference

#include <RefDetectionPostProcessWorkload.hpp>

Inheritance diagram for RefDetectionPostProcessWorkload:
BaseWorkload< DetectionPostProcessQueueDescriptor > IWorkload

Public Member Functions

 RefDetectionPostProcessWorkload (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info)
 
virtual void Execute () const override
 
- Public Member Functions inherited from BaseWorkload< DetectionPostProcessQueueDescriptor >
 BaseWorkload (const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info)
 
void PostAllocationConfigure () override
 
const DetectionPostProcessQueueDescriptorGetData () const
 
profiling::ProfilingGuid GetGuid () const final
 
- Public Member Functions inherited from IWorkload
virtual ~IWorkload ()
 
virtual void RegisterDebugCallback (const DebugCallbackFunction &)
 

Additional Inherited Members

- Protected Attributes inherited from BaseWorkload< DetectionPostProcessQueueDescriptor >
const DetectionPostProcessQueueDescriptor m_Data
 
const profiling::ProfilingGuid m_Guid
 

Detailed Description

Definition at line 14 of file RefDetectionPostProcessWorkload.hpp.

Constructor & Destructor Documentation

◆ RefDetectionPostProcessWorkload()

RefDetectionPostProcessWorkload ( const DetectionPostProcessQueueDescriptor descriptor,
const WorkloadInfo info 
)
explicit

Definition at line 16 of file RefDetectionPostProcessWorkload.cpp.

18  : BaseWorkload<DetectionPostProcessQueueDescriptor>(descriptor, info),
19  m_Anchors(std::make_unique<ScopedCpuTensorHandle>(*(descriptor.m_Anchors))) {}

Member Function Documentation

◆ Execute()

void Execute ( ) const
overridevirtual

Implements IWorkload.

Definition at line 21 of file RefDetectionPostProcessWorkload.cpp.

References anchors(), anchorsInfo, ARMNN_SCOPED_PROFILING_EVENT, boxEncodings(), armnn::CpuRef, armnn::DetectionPostProcess, armnn::GetTensorInfo(), BaseWorkload< DetectionPostProcessQueueDescriptor >::m_Data, QueueDescriptor::m_Inputs, QueueDescriptor::m_Outputs, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, scores(), and scoresInfo.

22 {
23  ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefDetectionPostProcessWorkload_Execute");
24 
25  const TensorInfo& boxEncodingsInfo = GetTensorInfo(m_Data.m_Inputs[0]);
26  const TensorInfo& scoresInfo = GetTensorInfo(m_Data.m_Inputs[1]);
27  const TensorInfo& anchorsInfo = m_Anchors->GetTensorInfo();
28 
29  const TensorInfo& detectionBoxesInfo = GetTensorInfo(m_Data.m_Outputs[0]);
30  const TensorInfo& detectionClassesInfo = GetTensorInfo(m_Data.m_Outputs[1]);
31  const TensorInfo& detectionScoresInfo = GetTensorInfo(m_Data.m_Outputs[2]);
32  const TensorInfo& numDetectionsInfo = GetTensorInfo(m_Data.m_Outputs[3]);
33 
34  auto boxEncodings = MakeDecoder<float>(boxEncodingsInfo, m_Data.m_Inputs[0]->Map());
35  auto scores = MakeDecoder<float>(scoresInfo, m_Data.m_Inputs[1]->Map());
36  auto anchors = MakeDecoder<float>(anchorsInfo, m_Anchors->Map(false));
37 
38  float* detectionBoxes = GetOutputTensorData<float>(0, m_Data);
39  float* detectionClasses = GetOutputTensorData<float>(1, m_Data);
40  float* detectionScores = GetOutputTensorData<float>(2, m_Data);
41  float* numDetections = GetOutputTensorData<float>(3, m_Data);
42 
43  DetectionPostProcess(boxEncodingsInfo, scoresInfo, anchorsInfo,
44  detectionBoxesInfo, detectionClassesInfo,
45  detectionScoresInfo, numDetectionsInfo, m_Data.m_Parameters,
46  *boxEncodings, *scores, *anchors, detectionBoxes,
47  detectionClasses, detectionScores, numDetections);
48 }
CPU Execution: Reference C++ kernels.
const DetectionPostProcessQueueDescriptor m_Data
Definition: Workload.hpp:46
armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)
std::vector< float > boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })
#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)
Definition: Profiling.hpp:173
std::vector< float > scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })
std::vector< ITensorHandle * > m_Outputs
armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)
std::vector< ITensorHandle * > m_Inputs
const TensorInfo & GetTensorInfo(const ITensorHandle *tensorHandle)
float32 helpers
std::vector< float > anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })

The documentation for this class was generated from the following files: