Commit 5e474ce86b75741bfad8c0d3e867458e3bd2fa70
1 parent
4e7f9c4f
Handle nan related edge conditions better
Showing
2 changed files
with
3 additions
and
3 deletions
openbr/core/evalutils.cpp
| ... | ... | @@ -261,7 +261,7 @@ QStringList EvalUtils::computeDetectionResults(const QList<ResolvedDetection> &d |
| 261 | 261 | foreach (float FAR, FARsToOutput) |
| 262 | 262 | if (prevFP / numImages < FAR && FP / numImages >= FAR) { |
| 263 | 263 | debug << QString("|") << QString::number(FAR, 'f', 4).leftJustified(10, ' '); |
| 264 | - debug << QString("|") << QString::number(TP / totalTrueDetections, 'f', 4).leftJustified(10, ' '); | |
| 264 | + debug << QString("|") << QString::number(totalTrueDetections ? TP / totalTrueDetections : 0, 'f', 4).leftJustified(10, ' '); | |
| 265 | 265 | debug << QString("|") << QString::number(detection.confidence, 'f', 4).leftJustified(10, ' '); |
| 266 | 266 | debug << QString("|") << QString::number(TP ? poseMatch / TP : 0., 'f', 4).leftJustified(10, ' '); |
| 267 | 267 | debug << QString("|") << endl; |
| ... | ... | @@ -306,7 +306,7 @@ QStringList EvalUtils::computeDetectionResults(const QList<ResolvedDetection> &d |
| 306 | 306 | |
| 307 | 307 | debug << QString("Minimum %1 Precision:").arg(discrete ? "Discrete" : "Continuous").leftJustified(32, ' ') << QString("%1").arg(QString::number(points.last().Precision)) << endl; |
| 308 | 308 | debug << QString("Maximum %1 Recall:").arg(discrete ? "Discrete" : "Continuous").leftJustified(32, ' ') << QString("%1").arg(QString::number(points.last().Recall)) << endl; |
| 309 | - debug << QString("%1 F1 Score:").arg(discrete ? "Discrete" : "Continuous").leftJustified(32, ' ') << QString("%1").arg(QString::number(2 * (points.last().Recall * points.last().Precision) / (points.last().Recall + points.last().Precision))) << endl; | |
| 309 | + debug << QString("%1 F1 Score:").arg(discrete ? "Discrete" : "Continuous").leftJustified(32, ' ') << QString("%1").arg(QString::number((points.last().Recall + points.last().Precision) ? 2 * (points.last().Recall * points.last().Precision) / (points.last().Recall + points.last().Precision) : 0)) << endl; | |
| 310 | 310 | |
| 311 | 311 | const int keep = qMin(points.size(), Max_Points); |
| 312 | 312 | if (keep < 1) qFatal("Insufficient points."); | ... | ... |
openbr/core/evalutils.h
| ... | ... | @@ -89,7 +89,7 @@ struct DetectionOperatingPoint |
| 89 | 89 | float Recall, FalsePositiveRate, Precision, Confidence; |
| 90 | 90 | DetectionOperatingPoint() : Recall(-1), FalsePositiveRate(-1), Precision(-1) {} |
| 91 | 91 | DetectionOperatingPoint(float TP, float FP, float totalPositives, float numImages, float confidence) |
| 92 | - : Recall(TP/totalPositives), FalsePositiveRate(FP/numImages), Precision(TP/(TP+FP)), Confidence(confidence) {} | |
| 92 | + : Recall(totalPositives ? TP/totalPositives : 0), FalsePositiveRate(FP/numImages), Precision(TP/(TP+FP)), Confidence(confidence) {} | |
| 93 | 93 | }; |
| 94 | 94 | |
| 95 | 95 | // Detection | ... | ... |