[CPU] NMS test for the rest of 1st & 2nd outputs. (#3380)
authorNikolay Shchegolev <nikolay.shchegolev@intel.com>
Fri, 27 Nov 2020 10:21:52 +0000 (13:21 +0300)
committerGitHub <noreply@github.com>
Fri, 27 Nov 2020 10:21:52 +0000 (13:21 +0300)
inference-engine/src/mkldnn_plugin/nodes/non_max_suppression.cpp
inference-engine/tests/functional/plugin/shared/src/single_layer_tests/non_max_suppression.cpp

index 9abad7b..62bff6b 100644 (file)
@@ -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<int>(validOutputs);
 
index 27fbf90..d9a6869 100644 (file)
@@ -79,12 +79,22 @@ void NmsLayerTest::Compare(const std::vector<std::vector<std::uint8_t>> &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<const float *>(expectedBuffer), reinterpret_cast<const float *>(actualBuffer), size, threshold);
+                const auto fBuffer = lockedMemory.as<const float *>();
+                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<const int32_t *>(expectedBuffer), reinterpret_cast<const int32_t *>(actualBuffer), size, 0);
+                const auto iBuffer = lockedMemory.as<const int *>();
+                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";
         }