From f6bc4fd4c62e42339080478bf8e12ebc42ceed74 Mon Sep 17 00:00:00 2001 From: WeiChungChang Date: Mon, 22 Feb 2021 11:44:00 -0500 Subject: [PATCH] Merge pull request #19552 from WeiChungChang:partialSort apply partial sort to save computations * apply partial sort * fix typo * fix accroding to CR --- modules/dnn/src/layers/detection_output_layer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/dnn/src/layers/detection_output_layer.cpp b/modules/dnn/src/layers/detection_output_layer.cpp index 76142181ae..55ef36f95c 100644 --- a/modules/dnn/src/layers/detection_output_layer.cpp +++ b/modules/dnn/src/layers/detection_output_layer.cpp @@ -611,8 +611,13 @@ public: } } // Keep outputs k results per image. - std::sort(scoreIndexPairs.begin(), scoreIndexPairs.end(), - util::SortScorePairDescend >); + if ((_keepTopK * 8) > scoreIndexPairs.size()) { + std::sort(scoreIndexPairs.begin(), scoreIndexPairs.end(), + util::SortScorePairDescend >); + } else { + std::partial_sort(scoreIndexPairs.begin(), scoreIndexPairs.begin() + _keepTopK, scoreIndexPairs.end(), + util::SortScorePairDescend >); + } scoreIndexPairs.resize(_keepTopK); std::map > newIndices;