From 03c7ff3f6188240baaeaeb405a357a0c58195fec Mon Sep 17 00:00:00 2001 From: Nikhil Raj Date: Tue, 22 Aug 2023 12:00:04 +0100 Subject: IVGCVSW-7702 Update Doxygen Docu for 23.08 Signed-off-by: Nikhil Raj Change-Id: I357a9f7e47614589327c1ac5d95b6224ff77103d --- ...etection_post_process_workload_8cpp_source.html | 262 +++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 latest/_neon_detection_post_process_workload_8cpp_source.html (limited to 'latest/_neon_detection_post_process_workload_8cpp_source.html') diff --git a/latest/_neon_detection_post_process_workload_8cpp_source.html b/latest/_neon_detection_post_process_workload_8cpp_source.html new file mode 100644 index 0000000000..0fc3d9bc5c --- /dev/null +++ b/latest/_neon_detection_post_process_workload_8cpp_source.html @@ -0,0 +1,262 @@ + + + + + + + + +Arm NN: src/backends/neon/workloads/NeonDetectionPostProcessWorkload.cpp Source File + + + + + + + + + + + + + + + + +
+
+ + + + ArmNN + + + +
+
+  23.08 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
NeonDetectionPostProcessWorkload.cpp
+
+
+Go to the documentation of this file.
1 //
+
2 // Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
+
3 // SPDX-License-Identifier: MIT
+
4 //
+
5 
+ +
7 
+
8 #include "NeonWorkloadUtils.hpp"
+
9 
+ + + +
13 
+
14 namespace armnn
+
15 {
+
16 
+
17 arm_compute::DetectionPostProcessLayerInfo MakeInfo(const DetectionPostProcessDescriptor& descriptor)
+
18 {
+
19  return arm_compute::DetectionPostProcessLayerInfo(descriptor.m_MaxDetections,
+
20  descriptor.m_MaxClassesPerDetection,
+
21  descriptor.m_NmsScoreThreshold,
+
22  descriptor.m_NmsIouThreshold,
+
23  descriptor.m_NumClasses,
+
24  { descriptor.m_ScaleX,
+
25  descriptor.m_ScaleY,
+
26  descriptor.m_ScaleW,
+
27  descriptor.m_ScaleH },
+
28  descriptor.m_UseRegularNms,
+
29  descriptor.m_DetectionsPerClass);
+
30 }
+
31 
+ +
33  const TensorInfo& scores,
+
34  const TensorInfo& anchors,
+
35  const TensorInfo& detectionBoxes,
+
36  const TensorInfo& detectionClasses,
+
37  const TensorInfo& detectionScores,
+
38  const TensorInfo& numDetections,
+
39  const DetectionPostProcessDescriptor &descriptor)
+
40 {
+
41  arm_compute::DetectionPostProcessLayerInfo info = MakeInfo(descriptor);
+
42 
+
43  const arm_compute::TensorInfo aclBoxEncodings =
+
44  armcomputetensorutils::BuildArmComputeTensorInfo(boxEncodings);
+
45 
+
46  const arm_compute::TensorInfo aclScores =
+
47  armcomputetensorutils::BuildArmComputeTensorInfo(scores);
+
48 
+
49  const arm_compute::TensorInfo aclAnchors =
+
50  armcomputetensorutils::BuildArmComputeTensorInfo(anchors);
+
51 
+
52  arm_compute::TensorInfo aclDetectionBoxes =
+
53  armcomputetensorutils::BuildArmComputeTensorInfo(detectionBoxes);
+
54 
+
55  arm_compute::TensorInfo aclDetectionClasses =
+
56  armcomputetensorutils::BuildArmComputeTensorInfo(detectionClasses);
+
57 
+
58  arm_compute::TensorInfo aclDetectionScores =
+
59  armcomputetensorutils::BuildArmComputeTensorInfo(detectionScores);
+
60 
+
61  arm_compute::TensorInfo aclNumDetections =
+
62  armcomputetensorutils::BuildArmComputeTensorInfo(numDetections);
+
63 
+
64  return arm_compute::NEDetectionPostProcessLayer::validate(
+
65  &aclBoxEncodings,
+
66  &aclScores,
+
67  &aclAnchors,
+
68  &aclDetectionBoxes,
+
69  &aclDetectionClasses,
+
70  &aclDetectionScores,
+
71  &aclNumDetections,
+
72  info);
+
73 }
+
74 
+ +
76  const DetectionPostProcessQueueDescriptor& descriptor,
+
77  const WorkloadInfo& info)
+ +
79 {
+
80  // Report Profiling Details
+
81  ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonDetectionPostProcessWorkload_Construct",
+
82  descriptor.m_Parameters,
+
83  info,
+
84  this->GetGuid());
+
85 
+
86  m_Anchors = std::make_unique<arm_compute::Tensor>();
+
87  BuildArmComputeTensor(*m_Anchors, descriptor.m_Anchors->GetTensorInfo());
+
88 
+
89  arm_compute::DetectionPostProcessLayerInfo di = MakeInfo(m_Data.m_Parameters);
+
90 
+
91  auto AclTensorRef = [](ITensorHandle* tensor) -> arm_compute::ITensor&
+
92  {
+
93  return PolymorphicDowncast<IAclTensorHandle*>(tensor)->GetTensor();
+
94  };
+
95 
+
96  arm_compute::ITensor& boxEncodings = AclTensorRef(m_Data.m_Inputs[0]);
+
97  arm_compute::ITensor& scores = AclTensorRef(m_Data.m_Inputs[1]);
+
98 
+
99  arm_compute::ITensor& detectionBoxes = AclTensorRef(m_Data.m_Outputs[0]);
+
100  arm_compute::ITensor& detectionClasses = AclTensorRef(m_Data.m_Outputs[1]);
+
101  arm_compute::ITensor& detectionScores = AclTensorRef(m_Data.m_Outputs[2]);
+
102  arm_compute::ITensor& numDetections = AclTensorRef(m_Data.m_Outputs[3]);
+
103 
+
104  m_Func.configure(&boxEncodings, &scores, m_Anchors.get(),
+
105  &detectionBoxes, &detectionClasses, &detectionScores, &numDetections,
+
106  di);
+
107 
+ +
109 }
+
110 
+ +
112 {
+
113  ARMNN_SCOPED_PROFILING_EVENT_NEON_NAME_GUID("NeonDetectionPostProcessWorkload_Execute");
+
114  m_Func.run();
+
115 }
+
116 
+
117 } // namespace armnn
+
+
+
float m_NmsScoreThreshold
NMS score threshold.
+
arm_compute::DetectionPostProcessLayerInfo MakeInfo(const DetectionPostProcessDescriptor &descriptor)
+
uint32_t m_MaxDetections
Maximum numbers of detections.
+
NeonDetectionPostProcessWorkload(const DetectionPostProcessQueueDescriptor &descriptor, const WorkloadInfo &info)
+ + +
const TensorInfo & GetTensorInfo() const
+
uint32_t m_MaxClassesPerDetection
Maximum numbers of classes per detection, used in Fast NMS.
+
const ConstTensorHandle * m_Anchors
+
arm_compute::Status NeonDetectionPostProcessValidate(const TensorInfo &boxEncodings, const TensorInfo &scores, const TensorInfo &anchors, const TensorInfo &detectionBoxes, const TensorInfo &detectionClasses, const TensorInfo &detectionScores, const TensorInfo &numDetections, const DetectionPostProcessDescriptor &descriptor)
+
void InitializeArmComputeTensorData(arm_compute::Tensor &tensor, TensorInfo tensorInfo, const ITensorHandle *handle)
+ +
virtual void Execute() const override
+
uint32_t m_NumClasses
Number of classes.
+
Contains information about TensorInfos of a layer.
+ +
float m_NmsIouThreshold
Intersection over union threshold.
+
+
+ +
std::vector< ITensorHandle * > m_Outputs
+
uint32_t m_DetectionsPerClass
Detections per classes, used in Regular NMS.
+ +
#define ARMNN_REPORT_PROFILING_WORKLOAD_DESC(name, desc, infos, guid)
Definition: Profiling.hpp:227
+
Status
Definition: Types.hpp:42
+
DetectionPostProcessQueueDescriptor m_Data
Definition: Workload.hpp:89
+ +
Copyright (c) 2021 ARM Limited and Contributors.
+
bool m_UseRegularNms
Use Regular NMS.
+ +
+
#define ARMNN_SCOPED_PROFILING_EVENT_NEON_NAME_GUID(label)
Creates a profiling event that uses GetGuid() and GetName() from the calling class.
+ +
std::vector< ITensorHandle * > m_Inputs
+ + + + -- cgit v1.2.1