From 4fca0204ec12aabaa72d2688f9758a6df968546b Mon Sep 17 00:00:00 2001 From: bhklein Date: Tue, 29 Sep 2015 01:19:44 -0400 Subject: [PATCH] some fixes to iet calculation --- openbr/core/eval.cpp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/openbr/core/eval.cpp b/openbr/core/eval.cpp index aba748f..d471e23 100755 --- a/openbr/core/eval.cpp +++ b/openbr/core/eval.cpp @@ -1358,14 +1358,19 @@ void EvalKNN(const QString &knnGraph, const QString &knnTruth, const QString &ie */ QVector firstGenuineReturns(probeCount, 0); QList matedSimilarities, unmatedSimilarities; - size_t numMatedSearches = 0; + size_t numMatedSearches = 0, numUnmatedSearches = 0; for (size_t i=0; i &mates = truth[i]; - if (!mates.empty()) - numMatedSearches++; - bool recordedHighestMatedSimilarity = false; bool recordedHighestUnmatedSimilarity = false; + if (!mates.empty()) { + numMatedSearches++; + recordedHighestUnmatedSimilarity = true; + } else { + numUnmatedSearches++; + recordedHighestMatedSimilarity = true; + } + for (size_t j=0; j operatingPoints; + size_t matedCount = 0, previousMatedCount = 0; + size_t unmatedCount = 0, previousUnmatedCount = 0; while (!matedSimilarities.empty()) { const float threshold = matedSimilarities.back(); while (!matedSimilarities.empty() && (matedSimilarities.back() >= threshold)) { @@ -1433,10 +1439,19 @@ void EvalKNN(const QString &knnGraph, const QString &knnTruth, const QString &ie unmatedSimilarities.removeLast(); unmatedCount++; } - ietFile.write(qPrintable(QString::number(threshold) + "," + - QString::number(double(unmatedCount) / double(numUnmatedSimilarities)) + "," + - QString::number(1.0 - double(matedCount) / double(numMatedSimilarities)) + "\n")); + if ((unmatedCount > previousUnmatedCount) && (matedCount > previousMatedCount)) { + previousMatedCount = matedCount; + previousUnmatedCount = unmatedCount; + operatingPoints.append(OperatingPoint(threshold, + double(unmatedCount) / double(numUnmatedSimilarities), + 1.0 - double(matedCount) / double(numMatedSimilarities))); + } } + + foreach(const OperatingPoint &operatingPoint, operatingPoints) + ietFile.write(qPrintable(QString::number(operatingPoint.score) + "," + + QString::number(operatingPoint.FAR) + "," + + QString::number(operatingPoint.TAR) + "\n")); } } // namespace br -- libgit2 0.21.4