ArmNN
 21.05
DetectionPostProcess.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "armnn/Tensor.hpp"
8 #include "armnn/Descriptors.hpp"
9 
10 #include "Decoders.hpp"
11 
12 #include <vector>
13 
14 namespace armnn
15 {
16 
17 void DetectionPostProcess(const TensorInfo& boxEncodingsInfo,
18  const TensorInfo& scoresInfo,
19  const TensorInfo& anchorsInfo,
20  const TensorInfo& detectionBoxesInfo,
21  const TensorInfo& detectionClassesInfo,
22  const TensorInfo& detectionScoresInfo,
23  const TensorInfo& numDetectionsInfo,
24  const DetectionPostProcessDescriptor& desc,
25  Decoder<float>& boxEncodings,
26  Decoder<float>& scores,
27  Decoder<float>& anchors,
28  float* detectionBoxes,
29  float* detectionClasses,
30  float* detectionScores,
31  float* numDetections);
32 
33 void TopKSort(unsigned int k,
34  unsigned int* indices,
35  const float* values,
36  unsigned int numElement);
37 
38 float IntersectionOverUnion(const float* boxI, const float* boxJ);
39 
40 std::vector<unsigned int> NonMaxSuppression(unsigned int numBoxes,
41  const std::vector<float>& boxCorners,
42  const std::vector<float>& scores,
43  float nmsScoreThreshold,
44  unsigned int maxDetection,
45  float nmsIouThreshold);
46 
47 } // namespace armnn
float IntersectionOverUnion(const float *boxI, const float *boxJ)
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 })
Copyright (c) 2021 ARM Limited and Contributors.
void DetectionPostProcess(const TensorInfo &boxEncodingsInfo, const TensorInfo &scoresInfo, const TensorInfo &anchorsInfo, const TensorInfo &detectionBoxesInfo, const TensorInfo &detectionClassesInfo, const TensorInfo &detectionScoresInfo, const TensorInfo &numDetectionsInfo, const DetectionPostProcessDescriptor &desc, Decoder< float > &boxEncodings, Decoder< float > &scores, Decoder< float > &anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)
void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)
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 })
armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)
std::vector< unsigned int > NonMaxSuppression(unsigned int numBoxes, const std::vector< float > &boxCorners, const std::vector< float > &scores, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)
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 })