diff --git a/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp b/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp index 9abad7b1878..62bff6bccd9 100644 --- a/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp +++ b/inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp @@ -400,6 +400,9 @@ public: } } std::fill(selectedIndicesPtr, selectedIndicesPtr + (selectedBoxesNum - idx) * selectedIndicesStride, -1); + if (outputs.size() > NMS_SELECTEDSCORES) { + std::fill(selectedScoresPtr, selectedScoresPtr + (selectedBoxesNum - idx) * selectedIndicesStride, -1.f); + } if (outputs.size() > NMS_VALIDOUTPUTS) *valid_outputs = static_cast(validOutputs); diff --git a/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/non_max_suppression.cpp b/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/non_max_suppression.cpp index 27fbf901cae..d9a6869e5a3 100644 --- a/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/non_max_suppression.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/single_layer_tests/non_max_suppression.cpp @@ -79,12 +79,22 @@ void NmsLayerTest::Compare(const std::vector> &expecte const auto &precision = actual->getTensorDesc().getPrecision(); size_t size = expected.size() / actual->getTensorDesc().getPrecision().size(); switch (precision) { - case Precision::FP32: + case Precision::FP32: { LayerTestsCommon::Compare(reinterpret_cast(expectedBuffer), reinterpret_cast(actualBuffer), size, threshold); + const auto fBuffer = lockedMemory.as(); + for (int i = size; i < actual->size(); i++) { + ASSERT_TRUE(fBuffer[i] == -1.f) << "Invalid default value: " << fBuffer[i] << " at index: " << i; + } break; - case Precision::I32: + } + case Precision::I32: { LayerTestsCommon::Compare(reinterpret_cast(expectedBuffer), reinterpret_cast(actualBuffer), size, 0); + const auto iBuffer = lockedMemory.as(); + for (int i = size; i < actual->size(); i++) { + ASSERT_TRUE(iBuffer[i] == -1) << "Invalid default value: " << iBuffer[i] << " at index: " << i; + } break; + } default: FAIL() << "Comparator for " << precision << " precision isn't supported"; }