aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIsabella Gottardi <isabella.gottardi@arm.com>2019-07-15 17:33:07 +0100
committerIsabella Gottardi <isabella.gottardi@arm.com>2019-07-29 13:01:03 +0000
commit883bad7ef34c3429b3338d5544a8cdf3b60cd1e8 (patch)
tree8e8a485c2581137c643003466ea1c467a579ba99 /tests
parentbd9097db81f229c2d7bbafc2bcf392b7c1c49b58 (diff)
downloadComputeLibrary-883bad7ef34c3429b3338d5544a8cdf3b60cd1e8.tar.gz
COMPMID-1849: Add DetectorPostProcess operator
Part1 - Rework of CPPNonMaximumSuppression Change-Id: I2b34fbd12188db49b0ac050a12312494eeefd819 Signed-off-by: Isabella Gottardi <isabella.gottardi@arm.com> Reviewed-on: https://review.mlplatform.org/c/1585 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/SConscript2
-rw-r--r--tests/validation/CPP/NonMaximumSuppression.cpp (renamed from tests/validation/CPP/NonMaximalSuppression.cpp)14
-rw-r--r--tests/validation/reference/NonMaxSuppression.cpp14
3 files changed, 18 insertions, 12 deletions
diff --git a/tests/SConscript b/tests/SConscript
index 103874f63f..c8de603541 100644
--- a/tests/SConscript
+++ b/tests/SConscript
@@ -32,7 +32,7 @@ SConscript('./framework/SConscript', duplicate=0)
variables = [
#FIXME: Remove before release!
BoolVariable("benchmark_examples", "Build benchmark examples programs", True),
- BoolVariable("validate_examples", "Build benchmark examples programs", True),
+ BoolVariable("validate_examples", "Build validate examples programs", True),
#FIXME Switch the following two options to False before releasing
BoolVariable("validation_tests", "Build validation test programs", True),
BoolVariable("benchmark_tests", "Build benchmark test programs", True),
diff --git a/tests/validation/CPP/NonMaximalSuppression.cpp b/tests/validation/CPP/NonMaximumSuppression.cpp
index 6cd7b52066..bf24b2cf0c 100644
--- a/tests/validation/CPP/NonMaximalSuppression.cpp
+++ b/tests/validation/CPP/NonMaximumSuppression.cpp
@@ -22,7 +22,7 @@
* SOFTWARE.
*/
#include "arm_compute/core/Types.h"
-#include "arm_compute/runtime/CPP/functions/CPPDetectionOutputLayer.h"
+#include "arm_compute/runtime/CPP/functions/CPPNonMaximumSuppression.h"
#include "arm_compute/runtime/Tensor.h"
#include "arm_compute/runtime/TensorAllocator.h"
#include "tests/NEON/Accessor.h"
@@ -42,11 +42,11 @@ namespace validation
{
namespace
{
-const auto max_output_boxes_dataset = framework::dataset::make("MaxOutputBoxes", 1, 10);
-const auto score_threshold_dataset = framework::dataset::make("ScoreThreshold", { 0.1f, 0.5f, 0.f, 1.f });
-const auto nms_threshold_dataset = framework::dataset::make("NMSThreshold", { 0.1f, 0.5f, 0.f, 1.f });
-const auto NMSParametersSmall = datasets::Small2DNonMaxSuppressionShapes() * max_output_boxes_dataset * score_threshold_dataset * nms_threshold_dataset;
-const auto NMSParametersBig = datasets::Large2DNonMaxSuppressionShapes() * max_output_boxes_dataset * score_threshold_dataset * nms_threshold_dataset;
+const auto max_output_boxes_dataset = framework::dataset::make("MaxOutputBoxes", 1, 10);
+const auto score_threshold_dataset = framework::dataset::make("ScoreThreshold", { 0.1f, 0.5f, 0.f, 1.f });
+const auto iou_nms_threshold_dataset = framework::dataset::make("NMSThreshold", { 0.1f, 0.5f, 0.f, 1.f });
+const auto NMSParametersSmall = datasets::Small2DNonMaxSuppressionShapes() * max_output_boxes_dataset * score_threshold_dataset * iou_nms_threshold_dataset;
+const auto NMSParametersBig = datasets::Large2DNonMaxSuppressionShapes() * max_output_boxes_dataset * score_threshold_dataset * iou_nms_threshold_dataset;
} // namespace
@@ -137,8 +137,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, CPPNonMaxSuppressionFixture, framework::Dataset
validate(Accessor(_target), _reference);
}
-TEST_SUITE_END() // CPP
TEST_SUITE_END() // NMS
+TEST_SUITE_END() // CPP
} // namespace validation
} // namespace test
} // namespace arm_compute
diff --git a/tests/validation/reference/NonMaxSuppression.cpp b/tests/validation/reference/NonMaxSuppression.cpp
index 5b7980d2f0..8fc370b7af 100644
--- a/tests/validation/reference/NonMaxSuppression.cpp
+++ b/tests/validation/reference/NonMaxSuppression.cpp
@@ -76,10 +76,10 @@ inline float compute_size(const std::pair<float, float> &min, const std::pair<fl
inline float compute_intersection(const std::pair<float, float> &b0_min, const std::pair<float, float> &b0_max,
const std::pair<float, float> &b1_min, const std::pair<float, float> &b1_max, float b0_size, float b1_size)
{
- const float inter = std::max<float>(std::min<float>(b0_max.first, b1_max.first) - std::max<float>(b0_min.first, b1_min.first), 0.0) * std::max<float>(std::min<float>(b0_max.second,
+ const float inter = std::max<float>(std::min<float>(b0_max.first, b1_max.first) - std::max<float>(b0_min.first, b1_min.first), 0.0f) * std::max<float>(std::min<float>(b0_max.second,
b1_max.second)
- std::max<float>(b0_min.second, b1_min.second),
- 0.0);
+ 0.0f);
return inter / (b0_size + b1_size - inter);
}
@@ -107,7 +107,7 @@ inline std::vector<CandidateBox> get_candidates(const SimpleTensor<float> &score
std::vector<CandidateBox> candidates_vector;
for(int i = 0; i < scores.num_elements(); ++i)
{
- if(scores[i] > threshold)
+ if(scores[i] >= threshold)
{
const auto cb = CandidateBox({ i, scores[i] });
candidates_vector.push_back(cb);
@@ -115,7 +115,7 @@ inline std::vector<CandidateBox> get_candidates(const SimpleTensor<float> &score
}
std::stable_sort(candidates_vector.begin(), candidates_vector.end(), [](const CandidateBox bb0, const CandidateBox bb1)
{
- return bb0.second >= bb1.second;
+ return bb0.second > bb1.second;
});
return candidates_vector;
}
@@ -155,6 +155,12 @@ SimpleTensor<int> non_max_suppression(const SimpleTensor<float> &bboxes, const S
}
}
std::copy_n(selected.begin(), selected.size(), indices.data());
+
+ for(unsigned int i = selected.size(); i < max_output_size; ++i)
+ {
+ indices[i] = -1;
+ }
+
return indices;
}
} // namespace reference